239 lines
7.2 KiB
C
239 lines
7.2 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x14005c9f0 FUN_14005c9f0
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
/* WARNING: Type propagation algorithm not settling */
|
|
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
|
|
|
|
undefined8 FUN_14005c9f0(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_1401ac5a0 ^ (ulonglong)auStack_128;
|
|
*(undefined4 *)(param_1 + 0x140) = *param_2;
|
|
*(undefined1 *)(param_1 + 0x1e8) = *(undefined1 *)(param_2 + 3);
|
|
FUN_140001750((longlong *)(param_1 + 8),(longlong *)(param_2 + 0x1e),0,0xffffffffffffffff);
|
|
FUN_140001750((longlong *)(param_1 + 0x30),(longlong *)(param_2 + 10),0,0xffffffffffffffff);
|
|
FUN_140001750((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 = &DAT_1401b35a8;
|
|
if (7 < DAT_1401b35c0) {
|
|
psVar9 = _DAT_1401b35a8;
|
|
}
|
|
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_140001830((ulonglong *)&local_58,psVar9,~uVar6 - 1);
|
|
FUN_140118aa0((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_14000c2a0(local_108,(char *)pppppppcVar10);
|
|
DAT_1401b33e8 = 0;
|
|
uVar6 = FUN_14000c370((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_14000abd0("Error File Name %s : %d - %s",pppppppcVar10,(ulonglong)local_ac,local_a8 + 2);
|
|
local_108[0] = TiXmlDocument::vftable;
|
|
if (local_a8 != &DAT_1401bcf30) {
|
|
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_1401bcf30) {
|
|
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_14005cc33;
|
|
}
|
|
LAB_14005cc70:
|
|
cVar2 = *(char *)(param_1 + 0x1e8);
|
|
if (cVar2 == '\x05') {
|
|
*(undefined4 *)(param_1 + 0x158) = 1;
|
|
}
|
|
else {
|
|
if (cVar2 == '\f') {
|
|
if (lVar5 == 0) goto LAB_14005ce07;
|
|
pcVar11 = "game";
|
|
}
|
|
else if (cVar2 == '\x11') {
|
|
if (lVar5 == 0) goto LAB_14005ce07;
|
|
pcVar11 = "log";
|
|
}
|
|
else if (cVar2 == '\x12') {
|
|
if (lVar5 == 0) goto LAB_14005ce07;
|
|
pcVar11 = "chat";
|
|
}
|
|
else {
|
|
if ((cVar2 != '\x13') || (lVar5 == 0)) goto LAB_14005ce07;
|
|
pcVar11 = "emergency";
|
|
}
|
|
lVar5 = FUN_14000b9d0(lVar5,(longlong)pcVar11);
|
|
if (lVar5 != 0) {
|
|
lVar7 = FUN_14000b9d0(lVar5,0x140163270);
|
|
if (lVar7 != 0) {
|
|
FUN_14005fa80((ulonglong *)(param_1 + 0x90),(int *)(param_1 + 0x130),lVar7);
|
|
}
|
|
lVar7 = FUN_14000b9d0(lVar5,0x14016327c);
|
|
if (lVar7 != 0) {
|
|
FUN_14005fa80((ulonglong *)(param_1 + 0xb8),(int *)(param_1 + 0x134),lVar7);
|
|
}
|
|
lVar7 = FUN_14000b9d0(lVar5,0x140163288);
|
|
if (lVar7 != 0) {
|
|
FUN_14005fa80((ulonglong *)(param_1 + 0xe0),(int *)(param_1 + 0x138),lVar7);
|
|
}
|
|
lVar7 = FUN_14000b9d0(lVar5,0x140163290);
|
|
if (lVar7 != 0) {
|
|
FUN_14005fa80((ulonglong *)(param_1 + 0x108),(int *)(param_1 + 0x13c),lVar7);
|
|
}
|
|
lVar5 = FUN_14000b9d0(lVar5,0x140163298);
|
|
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_14005ce07:
|
|
local_108[0] = TiXmlDocument::vftable;
|
|
if (local_a8 != &DAT_1401bcf30) {
|
|
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_1401bcf30) {
|
|
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_14005cc33:
|
|
while (lVar7 = (**(code **)(*plVar12 + 0x30))(plVar12), lVar7 == 0) {
|
|
do {
|
|
plVar12 = (longlong *)plVar12[10];
|
|
if (plVar12 == (longlong *)0x0) goto LAB_14005cc70;
|
|
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_14005cc70;
|
|
}
|
|
|