159 lines
4.3 KiB
C
159 lines
4.3 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x1401f5bd0 FUN_1401f5bd0
|
|
* Pseudocode, not original source. */
|
|
|
|
undefined8 *
|
|
FUN_1401f5bd0(undefined8 param_1,undefined8 *param_2,longlong *param_3,longlong *param_4)
|
|
|
|
{
|
|
int *piVar1;
|
|
char *pcVar2;
|
|
undefined *puVar3;
|
|
char *pcVar4;
|
|
char *pcVar5;
|
|
char *pcVar6;
|
|
char *_Str;
|
|
int iVar7;
|
|
int iVar8;
|
|
char *local_48;
|
|
char *local_40;
|
|
undefined1 local_38;
|
|
undefined8 local_30;
|
|
|
|
local_30 = 0xfffffffffffffffe;
|
|
FUN_14016d8c0();
|
|
local_48 = PTR_DAT_140344098;
|
|
puVar3 = (undefined *)*param_4;
|
|
if ((undefined *)*param_4 == (undefined *)0x0) {
|
|
puVar3 = PTR_DAT_140344098;
|
|
}
|
|
FUN_140170320(&local_48,&DAT_1402b1574,puVar3);
|
|
pcVar2 = local_48;
|
|
pcVar5 = local_48;
|
|
if (local_48 == (char *)0x0) {
|
|
pcVar5 = PTR_DAT_140344098;
|
|
}
|
|
if (pcVar5 == (char *)0x0) {
|
|
iVar7 = -1;
|
|
}
|
|
else {
|
|
pcVar4 = (char *)*param_3;
|
|
pcVar6 = PTR_DAT_140344098;
|
|
if (((pcVar4 == (char *)0x0) || (pcVar6 = pcVar4, pcVar4 == PTR_DAT_140344098)) ||
|
|
(iVar7 = -1, -1 < *(int *)(pcVar4 + -8))) {
|
|
pcVar5 = strstr(pcVar6,pcVar5);
|
|
if (pcVar5 == (char *)0x0) {
|
|
iVar7 = -1;
|
|
}
|
|
else {
|
|
puVar3 = (undefined *)*param_3;
|
|
if ((undefined *)*param_3 == (undefined *)0x0) {
|
|
puVar3 = PTR_DAT_140344098;
|
|
}
|
|
iVar7 = (int)pcVar5 - (int)puVar3;
|
|
if (-1 < iVar7) {
|
|
iVar8 = 0;
|
|
if ((pcVar2 != (char *)0x0) && (iVar8 = 0, pcVar2 != PTR_DAT_140344098)) {
|
|
iVar8 = *(int *)(pcVar2 + -8);
|
|
}
|
|
iVar7 = iVar7 + iVar8;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
FUN_14016d8c0();
|
|
local_40 = PTR_DAT_140344098;
|
|
puVar3 = (undefined *)*param_4;
|
|
if ((undefined *)*param_4 == (undefined *)0x0) {
|
|
puVar3 = PTR_DAT_140344098;
|
|
}
|
|
FUN_140170320(&local_40,"</%s>",puVar3);
|
|
pcVar5 = local_40;
|
|
pcVar4 = local_40;
|
|
if (local_40 == (char *)0x0) {
|
|
pcVar4 = PTR_DAT_140344098;
|
|
}
|
|
iVar8 = -1;
|
|
if ((pcVar4 != (char *)0x0) &&
|
|
((((pcVar6 = (char *)*param_3, _Str = PTR_DAT_140344098, iVar8 = -1, pcVar6 == (char *)0x0 ||
|
|
(_Str = pcVar6, pcVar6 == PTR_DAT_140344098)) || (-1 < *(int *)(pcVar6 + -8))) &&
|
|
(pcVar4 = strstr(_Str,pcVar4), pcVar4 != (char *)0x0)))) {
|
|
puVar3 = (undefined *)*param_3;
|
|
if ((undefined *)*param_3 == (undefined *)0x0) {
|
|
puVar3 = PTR_DAT_140344098;
|
|
}
|
|
iVar8 = (int)pcVar4 - (int)puVar3;
|
|
}
|
|
if (((iVar7 < 0) || (iVar8 < 0)) || (iVar8 <= iVar7)) {
|
|
FUN_14016d8c0();
|
|
*param_2 = PTR_DAT_140344098;
|
|
if (((pcVar5 != (char *)0x0) && (pcVar5 != PTR_DAT_140344098)) && (pcVar5 + -8 != (char *)0x0))
|
|
{
|
|
pcVar4 = (char *)FUN_14016d8c0();
|
|
local_40 = pcVar4;
|
|
FUN_14016db50(pcVar4);
|
|
local_38 = 1;
|
|
piVar1 = (int *)(pcVar5 + -4);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14016d970(pcVar5 + -8);
|
|
}
|
|
FUN_14016dbe0(pcVar4);
|
|
}
|
|
if (pcVar2 == (char *)0x0) {
|
|
return param_2;
|
|
}
|
|
if (pcVar2 == PTR_DAT_140344098) {
|
|
return param_2;
|
|
}
|
|
if (pcVar2 + -8 == (char *)0x0) {
|
|
return param_2;
|
|
}
|
|
pcVar5 = (char *)FUN_14016d8c0();
|
|
local_40 = pcVar5;
|
|
FUN_14016db50(pcVar5);
|
|
local_38 = 1;
|
|
piVar1 = (int *)(pcVar2 + -4);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14016d970(pcVar2 + -8);
|
|
}
|
|
}
|
|
else {
|
|
FUN_1401f5030(param_3,param_2,iVar7,iVar8 - iVar7);
|
|
if (((pcVar5 != (char *)0x0) && (pcVar5 != PTR_DAT_140344098)) && (pcVar5 + -8 != (char *)0x0))
|
|
{
|
|
pcVar4 = (char *)FUN_14016d8c0();
|
|
local_40 = pcVar4;
|
|
FUN_14016db50(pcVar4);
|
|
local_38 = 1;
|
|
piVar1 = (int *)(pcVar5 + -4);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14016d970(pcVar5 + -8);
|
|
}
|
|
FUN_14016dbe0(pcVar4);
|
|
}
|
|
if (pcVar2 == (char *)0x0) {
|
|
return param_2;
|
|
}
|
|
if (pcVar2 == PTR_DAT_140344098) {
|
|
return param_2;
|
|
}
|
|
if (pcVar2 + -8 == (char *)0x0) {
|
|
return param_2;
|
|
}
|
|
pcVar5 = (char *)FUN_14016d8c0();
|
|
local_40 = pcVar5;
|
|
FUN_14016db50(pcVar5);
|
|
local_38 = 1;
|
|
piVar1 = (int *)(pcVar2 + -4);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14016d970(pcVar2 + -8);
|
|
}
|
|
}
|
|
FUN_14016dbe0(pcVar5);
|
|
return param_2;
|
|
}
|
|
|