131 lines
4 KiB
C
131 lines
4 KiB
C
/* 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;
|
|
}
|
|
|