/* 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; }