server-re/decomp/AgentManager_Release_x64/full/functions/0x14002fe40.c
2026-10-15 09:58:24 -04:00

238 lines
7.2 KiB
C

/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
* Ghidra 12.1.2 decompiler output for 0x14002fe40 FUN_14002fe40
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
/* WARNING: Type propagation algorithm not settling */
undefined8 FUN_14002fe40(longlong param_1,undefined4 *param_2)
{
short sVar1;
char cVar2;
int iVar3;
undefined **ppuVar4;
undefined **extraout_RAX;
longlong lVar5;
undefined **extraout_RAX_00;
ulonglong uVar6;
longlong lVar7;
longlong lVar8;
short *psVar9;
char *******pppppppcVar10;
char *pcVar11;
longlong *plVar12;
short *psVar13;
char *pcVar14;
bool bVar15;
undefined1 auStack_128 [32];
undefined **local_108 [5];
longlong *local_e0;
undefined8 *local_d0;
void *local_c8;
uint local_ac;
undefined8 *local_a8;
void *local_a0;
undefined8 local_88;
char *******local_80 [3];
ulonglong local_68;
WCHAR local_58;
undefined6 uStack_56;
undefined8 local_48;
ulonglong local_40;
ulonglong local_30;
local_88 = 0xfffffffffffffffe;
local_30 = DAT_14016f5a0 ^ (ulonglong)auStack_128;
*(undefined4 *)(param_1 + 0x140) = *param_2;
*(undefined1 *)(param_1 + 0x1e8) = *(undefined1 *)(param_2 + 3);
FUN_140001630((longlong *)(param_1 + 8),(longlong *)(param_2 + 0x1e),0,0xffffffffffffffff);
FUN_140001630((longlong *)(param_1 + 0x30),(longlong *)(param_2 + 10),0,0xffffffffffffffff);
FUN_140001630((longlong *)(param_1 + 0x58),(longlong *)(param_2 + 0x14),0,0xffffffffffffffff);
*(undefined4 *)(param_1 + 0x80) = param_2[4];
*(undefined4 *)(param_1 + 0x84) = param_2[5];
*(undefined4 *)(param_1 + 0x88) = param_2[6];
*(undefined4 *)(param_1 + 0x8c) = param_2[7];
psVar9 = (short *)&DAT_1401750b0;
if (7 < DAT_1401750c8) {
psVar9 = DAT_1401750b0;
}
local_40 = 7;
lVar5 = 0;
local_48 = 0;
local_58 = L'\0';
uVar6 = 0xffffffffffffffff;
psVar13 = psVar9;
do {
if (uVar6 == 0) break;
uVar6 = uVar6 - 1;
sVar1 = *psVar13;
psVar13 = psVar13 + 1;
} while (sVar1 != 0);
FUN_140001710((ulonglong *)&local_58,psVar9,~uVar6 - 1);
FUN_1400ed7b0((ulonglong *)local_80,&local_58);
if (7 < local_40) {
operator_delete((void *)CONCAT62(uStack_56,local_58));
}
local_40 = 7;
local_48 = 0;
local_58 = L'\0';
pppppppcVar10 = (char *******)local_80;
if (0xf < local_68) {
pppppppcVar10 = local_80[0];
}
FUN_14001f6d0(local_108,(char *)pppppppcVar10);
DAT_140174c28 = 0;
uVar6 = FUN_14001f7a0((longlong *)local_108,(char *)(local_d0 + 2));
plVar12 = local_e0;
if ((char)uVar6 == '\0') {
pppppppcVar10 = (char *******)local_80;
if (0xf < local_68) {
pppppppcVar10 = local_80[0];
}
FUN_14001e070("Error File Name %s : %d - %s",pppppppcVar10,(ulonglong)local_ac,local_a8 + 2);
local_108[0] = TiXmlDocument::vftable;
if (local_a8 != &DAT_14017ce88) {
operator_delete__(local_a0);
}
local_108[0] = TiXmlNode::vftable;
while (local_e0 != (longlong *)0x0) {
plVar12 = (longlong *)local_e0[10];
(**(code **)*local_e0)(local_e0,1);
local_e0 = plVar12;
}
if (local_d0 != &DAT_14017ce88) {
operator_delete__(local_c8);
}
ppuVar4 = TiXmlBase::vftable;
local_108[0] = TiXmlBase::vftable;
if (0xf < local_68) {
operator_delete(local_80[0]);
ppuVar4 = extraout_RAX;
}
return (ulonglong)ppuVar4 & 0xffffffffffffff00;
}
for (; plVar12 != (longlong *)0x0; plVar12 = (longlong *)plVar12[10]) {
bVar15 = (char *)(plVar12[7] + 0x10) == (char *)0x0;
lVar7 = 3;
pcVar11 = (char *)(plVar12[7] + 0x10);
pcVar14 = "db";
do {
if (lVar7 == 0) break;
lVar7 = lVar7 + -1;
bVar15 = *pcVar11 == *pcVar14;
pcVar11 = pcVar11 + 1;
pcVar14 = pcVar14 + 1;
} while (bVar15);
if (bVar15) goto LAB_140030083;
}
LAB_1400300c0:
cVar2 = *(char *)(param_1 + 0x1e8);
if (cVar2 == '\x05') {
*(undefined4 *)(param_1 + 0x158) = 1;
}
else {
if (cVar2 == '\f') {
if (lVar5 == 0) goto LAB_140030257;
pcVar11 = "game";
}
else if (cVar2 == '\x11') {
if (lVar5 == 0) goto LAB_140030257;
pcVar11 = "log";
}
else if (cVar2 == '\x12') {
if (lVar5 == 0) goto LAB_140030257;
pcVar11 = "chat";
}
else {
if ((cVar2 != '\x13') || (lVar5 == 0)) goto LAB_140030257;
pcVar11 = "emergency";
}
lVar5 = FUN_14001ee20(lVar5,(longlong)pcVar11);
if (lVar5 != 0) {
lVar7 = FUN_14001ee20(lVar5,0x140133c50);
if (lVar7 != 0) {
FUN_140033470((ulonglong *)(param_1 + 0x90),(int *)(param_1 + 0x130),lVar7);
}
lVar7 = FUN_14001ee20(lVar5,0x140133c5c);
if (lVar7 != 0) {
FUN_140033470((ulonglong *)(param_1 + 0xb8),(int *)(param_1 + 0x134),lVar7);
}
lVar7 = FUN_14001ee20(lVar5,0x140133c68);
if (lVar7 != 0) {
FUN_140033470((ulonglong *)(param_1 + 0xe0),(int *)(param_1 + 0x138),lVar7);
}
lVar7 = FUN_14001ee20(lVar5,0x140133c70);
if (lVar7 != 0) {
FUN_140033470((ulonglong *)(param_1 + 0x108),(int *)(param_1 + 0x13c),lVar7);
}
lVar5 = FUN_14001ee20(lVar5,0x140133c78);
if (lVar5 != 0) {
for (lVar7 = *(longlong *)(lVar5 + 0xa0); lVar7 != lVar5 + 0x58;
lVar7 = *(longlong *)(lVar7 + 0x48)) {
pcVar11 = (char *)(*(longlong *)(lVar7 + 0x20) + 0x10);
bVar15 = pcVar11 == (char *)0x0;
lVar8 = 6;
pcVar14 = "count";
do {
if (lVar8 == 0) break;
lVar8 = lVar8 + -1;
bVar15 = *pcVar11 == *pcVar14;
pcVar11 = pcVar11 + 1;
pcVar14 = pcVar14 + 1;
} while (bVar15);
if (bVar15) {
pcVar11 = (char *)(*(longlong *)(lVar7 + 0x30) + 0x10);
if (pcVar11 != (char *)0x0) {
iVar3 = atoi(pcVar11);
*(int *)(param_1 + 0x14c) = iVar3;
}
break;
}
}
}
}
}
LAB_140030257:
local_108[0] = TiXmlDocument::vftable;
if (local_a8 != &DAT_14017ce88) {
operator_delete__(local_a0);
}
local_108[0] = TiXmlNode::vftable;
while (local_e0 != (longlong *)0x0) {
plVar12 = (longlong *)local_e0[10];
(**(code **)*local_e0)(local_e0,1);
local_e0 = plVar12;
}
if (local_d0 != &DAT_14017ce88) {
operator_delete__(local_c8);
}
ppuVar4 = TiXmlBase::vftable;
local_108[0] = TiXmlBase::vftable;
if (0xf < local_68) {
operator_delete(local_80[0]);
ppuVar4 = extraout_RAX_00;
}
return CONCAT71((int7)((ulonglong)ppuVar4 >> 8),1);
LAB_140030083:
while (lVar7 = (**(code **)(*plVar12 + 0x30))(plVar12), lVar7 == 0) {
do {
plVar12 = (longlong *)plVar12[10];
if (plVar12 == (longlong *)0x0) goto LAB_1400300c0;
bVar15 = (char *)(plVar12[7] + 0x10) == (char *)0x0;
lVar7 = 3;
pcVar11 = (char *)(plVar12[7] + 0x10);
pcVar14 = "db";
do {
if (lVar7 == 0) break;
lVar7 = lVar7 + -1;
bVar15 = *pcVar11 == *pcVar14;
pcVar11 = pcVar11 + 1;
pcVar14 = pcVar14 + 1;
} while (bVar15);
} while (!bVar15);
}
lVar5 = (**(code **)(*plVar12 + 0x30))(plVar12);
goto LAB_1400300c0;
}