server-re/decomp/DBCServer_Release_x64/full/functions/0x1401f5bd0.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;
}