/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x14000ee80 FUN_14000ee80 * Pseudocode, not original source. */ byte * FUN_14000ee80(longlong *param_1,byte *param_2,undefined8 param_3,int param_4) { char cVar1; byte bVar2; int iVar3; longlong lVar4; byte *pbVar5; longlong *plVar6; byte *pbVar7; longlong *plVar8; ulonglong uVar9; longlong *plVar10; char *pcVar11; for (plVar10 = param_1; plVar10 != (longlong *)0x0; plVar10 = (longlong *)plVar10[3]) { lVar4 = (**(code **)(*plVar10 + 0x20))(plVar10); if (lVar4 != 0) { lVar4 = (**(code **)(*plVar10 + 0x20))(plVar10); goto LAB_14000eeed; } } lVar4 = 0; LAB_14000eeed: pbVar5 = FUN_14000da10(param_2,param_4); while (pbVar5 != (byte *)0x0) { plVar10 = (longlong *)0x0; if (*pbVar5 == 0) { return pbVar5; } if (*pbVar5 == 0x3c) { pbVar7 = &DAT_14015c008; do { if (*pbVar7 == 0) { return pbVar5; } } while (((pbVar5 + -0x14015c008)[(longlong)pbVar7] == *pbVar7) && (pbVar7 = pbVar7 + 1, (pbVar5 + -0x14015c008)[(longlong)pbVar7] != 0)); if (*pbVar7 == 0) { return pbVar5; } plVar8 = FUN_14000e4b0(param_1,pbVar5,param_4); if (plVar8 == (longlong *)0x0) { return (byte *)0x0; } param_2 = (byte *)(**(code **)(*plVar8 + 0x10))(plVar8,pbVar5,param_3,param_4); LAB_14000f070: FUN_14000b8b0(param_1,plVar8); } else { plVar6 = operator_new(0x60); plVar8 = plVar10; if (plVar6 != (longlong *)0x0) { plVar6[1] = -1; plVar6[2] = 0; plVar6[7] = (longlong)&DAT_1401bcf30; plVar6[3] = 0; *(undefined4 *)(plVar6 + 4) = 4; plVar6[5] = 0; plVar6[6] = 0; plVar6[9] = 0; plVar6[10] = 0; *plVar6 = (longlong)TiXmlText::vftable; FUN_14000af60(plVar6 + 7,&DAT_14015bf08,0); *(undefined1 *)(plVar6 + 0xb) = 0; plVar8 = plVar6; } if (plVar8 == (longlong *)0x0) { if (lVar4 == 0) { return (byte *)0x0; } if (*(char *)(lVar4 + 0x58) != '\0') { return (byte *)0x0; } *(undefined1 *)(lVar4 + 0x58) = 1; *(undefined4 *)(lVar4 + 0x5c) = 3; uVar9 = 0xffffffffffffffff; pcVar11 = PTR_s_Memory_allocation_failed__1401b3378; goto code_r0x00014000f0b8; } if (DAT_1401b33e8 == '\0') { pbVar5 = param_2; } param_2 = (byte *)(**(code **)(*plVar8 + 0x10))(plVar8,pbVar5,param_3,param_4); plVar6 = (longlong *)plVar8[7]; if (*plVar6 != 0) { do { bVar2 = *(byte *)((longlong)(plVar6 + 2) + (longlong)plVar10); iVar3 = isspace((uint)bVar2); if (((iVar3 == 0) && (bVar2 != 10)) && (bVar2 != 0xd)) goto LAB_14000f070; plVar10 = (longlong *)(ulonglong)((int)plVar10 + 1); plVar6 = (longlong *)plVar8[7]; } while (plVar10 < (longlong *)*plVar6); } (**(code **)*plVar8)(plVar8,1); } pbVar5 = FUN_14000da10(param_2,param_4); } if ((lVar4 != 0) && (*(char *)(lVar4 + 0x58) == '\0')) { *(undefined1 *)(lVar4 + 0x58) = 1; *(undefined4 *)(lVar4 + 0x5c) = 6; uVar9 = 0xffffffffffffffff; pcVar11 = PTR_s_Error_reading_Element_value__1401b3390; do { if (uVar9 == 0) break; uVar9 = uVar9 - 1; cVar1 = *pcVar11; pcVar11 = pcVar11 + 1; } while (cVar1 != '\0'); FUN_14000af60((longlong *)(lVar4 + 0x60),PTR_s_Error_reading_Element_value__1401b3390,~uVar9 - 1 ); *(undefined8 *)(lVar4 + 0x74) = 0xffffffffffffffff; } return (byte *)0x0; while( true ) { uVar9 = uVar9 - 1; cVar1 = *pcVar11; pcVar11 = pcVar11 + 1; if (cVar1 == '\0') break; code_r0x00014000f0b8: if (uVar9 == 0) break; } FUN_14000af60((longlong *)(lVar4 + 0x60),PTR_s_Memory_allocation_failed__1401b3378,~uVar9 - 1); *(undefined8 *)(lVar4 + 0x74) = 0xffffffffffffffff; return (byte *)0x0; }