server-re/decomp/AgentManager_Release_x64/full/functions/0x14001f130.c
2026-10-15 09:58:24 -04:00

88 lines
2.3 KiB
C

/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
* Ghidra 12.1.2 decompiler output for 0x14001f130 FUN_14001f130
* Pseudocode, not original source. */
void FUN_14001f130(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_r0x00014001f1b0;
}
break;
}
}
puVar5 = operator_new(0x50);
if (puVar5 == (undefined8 *)0x0) {
puVar5 = (undefined8 *)0x0;
}
else {
puVar5 = FUN_14001e530(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__140174c48;
do {
if (uVar6 == 0) break;
uVar6 = uVar6 - 1;
cVar1 = *pcVar4;
pcVar4 = pcVar4 + 1;
} while (cVar1 != '\0');
FUN_14001e2c0((longlong *)(lVar7 + 0x60),PTR_s_Memory_allocation_failed__140174c48,~uVar6 - 1);
*(undefined8 *)(lVar7 + 0x74) = 0xffffffffffffffff;
return;
while( true ) {
uVar6 = uVar6 - 1;
cVar1 = *pcVar4;
pcVar4 = pcVar4 + 1;
if (cVar1 == '\0') break;
code_r0x00014001f1b0:
if (uVar6 == 0) break;
}
FUN_14001e2c0(plVar3 + 6,param_3,~uVar6 - 1);
return;
}