88 lines
2.3 KiB
C
88 lines
2.3 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x14000bd00 FUN_14000bd00
|
|
* Pseudocode, not original source. */
|
|
|
|
void FUN_14000bd00(longlong *param_1,char *param_2,char *param_3)
|
|
|
|
{
|
|
char cVar1;
|
|
char cVar2;
|
|
longlong *plVar3;
|
|
char *pcVar4;
|
|
undefined8 *puVar5;
|
|
ulonglong uVar6;
|
|
longlong lVar7;
|
|
|
|
for (plVar3 = (longlong *)param_1[0x14]; plVar3 != param_1 + 0xb; plVar3 = (longlong *)plVar3[9])
|
|
{
|
|
pcVar4 = (char *)(plVar3[4] + 0x10);
|
|
lVar7 = (longlong)param_2 - (longlong)pcVar4;
|
|
do {
|
|
cVar1 = *pcVar4;
|
|
cVar2 = pcVar4[lVar7];
|
|
if (cVar1 != cVar2) break;
|
|
pcVar4 = pcVar4 + 1;
|
|
} while (cVar2 != '\0');
|
|
if (cVar1 == cVar2) {
|
|
if (plVar3 != (longlong *)0x0) {
|
|
uVar6 = 0xffffffffffffffff;
|
|
pcVar4 = param_3;
|
|
goto code_r0x00014000bd80;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
puVar5 = operator_new(0x50);
|
|
if (puVar5 == (undefined8 *)0x0) {
|
|
puVar5 = (undefined8 *)0x0;
|
|
}
|
|
else {
|
|
puVar5 = FUN_14000b1d0(puVar5,param_2,param_3);
|
|
}
|
|
if (puVar5 != (undefined8 *)0x0) {
|
|
puVar5[9] = param_1 + 0xb;
|
|
puVar5[8] = param_1[0x13];
|
|
*(undefined8 **)(param_1[0x13] + 0x48) = puVar5;
|
|
param_1[0x13] = (longlong)puVar5;
|
|
return;
|
|
}
|
|
while( true ) {
|
|
if (param_1 == (longlong *)0x0) {
|
|
return;
|
|
}
|
|
lVar7 = (**(code **)(*param_1 + 0x20))(param_1);
|
|
if (lVar7 != 0) break;
|
|
param_1 = (longlong *)param_1[3];
|
|
}
|
|
lVar7 = (**(code **)(*param_1 + 0x20))();
|
|
if (lVar7 == 0) {
|
|
return;
|
|
}
|
|
if (*(char *)(lVar7 + 0x58) != '\0') {
|
|
return;
|
|
}
|
|
*(undefined1 *)(lVar7 + 0x58) = 1;
|
|
*(undefined4 *)(lVar7 + 0x5c) = 3;
|
|
uVar6 = 0xffffffffffffffff;
|
|
pcVar4 = PTR_s_Memory_allocation_failed__1401b3378;
|
|
do {
|
|
if (uVar6 == 0) break;
|
|
uVar6 = uVar6 - 1;
|
|
cVar1 = *pcVar4;
|
|
pcVar4 = pcVar4 + 1;
|
|
} while (cVar1 != '\0');
|
|
FUN_14000af60((longlong *)(lVar7 + 0x60),PTR_s_Memory_allocation_failed__1401b3378,~uVar6 - 1);
|
|
*(undefined8 *)(lVar7 + 0x74) = 0xffffffffffffffff;
|
|
return;
|
|
while( true ) {
|
|
uVar6 = uVar6 - 1;
|
|
cVar1 = *pcVar4;
|
|
pcVar4 = pcVar4 + 1;
|
|
if (cVar1 == '\0') break;
|
|
code_r0x00014000bd80:
|
|
if (uVar6 == 0) break;
|
|
}
|
|
FUN_14000af60(plVar3 + 6,param_3,~uVar6 - 1);
|
|
return;
|
|
}
|
|
|