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

87 lines
2.7 KiB
C

/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
* Ghidra 12.1.2 decompiler output for 0x1400e8c2c FUN_1400e8c2c
* Pseudocode, not original source. */
undefined4 FUN_1400e8c2c(longlong *param_1,int param_2)
{
int *piVar1;
uint uVar2;
uint uVar3;
undefined1 *puVar4;
undefined1 *puVar5;
uint uVar6;
uint uVar7;
uVar3 = (int)param_1[3] - 5;
uVar2 = 0xffff;
if (uVar3 < 0xffff) {
uVar2 = uVar3;
}
puVar5 = (undefined1 *)0x0;
do {
uVar3 = *(uint *)((longlong)param_1 + 0x9c);
if (uVar3 < 2) {
FUN_1400e8adc(param_1);
uVar3 = *(uint *)((longlong)param_1 + 0x9c);
if (uVar3 == 0) {
if (param_2 == 0) {
return 0;
}
uVar2 = *(uint *)((longlong)param_1 + 0x84);
if (-1 < (int)uVar2) {
puVar5 = (undefined1 *)((ulonglong)uVar2 + param_1[10]);
}
FUN_1400eca38(param_1,puVar5,*(int *)((longlong)param_1 + 0x94) - uVar2,(uint)(param_2 == 4)
);
*(undefined4 *)((longlong)param_1 + 0x84) = *(undefined4 *)((longlong)param_1 + 0x94);
FUN_1400e7b6c(*param_1);
if (*(int *)(*param_1 + 0x18) != 0) {
if (param_2 == 4) {
return 3;
}
return 1;
}
if (param_2 == 4) {
return 2;
}
return 0;
}
}
uVar7 = *(uint *)((longlong)param_1 + 0x84);
piVar1 = (int *)((longlong)param_1 + 0x94);
*piVar1 = *piVar1 + uVar3;
uVar3 = *(uint *)((longlong)param_1 + 0x94);
uVar6 = uVar7 + uVar2;
*(undefined4 *)((longlong)param_1 + 0x9c) = 0;
if ((*piVar1 == 0) || (uVar6 <= uVar3)) {
*(uint *)((longlong)param_1 + 0x94) = uVar6;
*(uint *)((longlong)param_1 + 0x9c) = uVar3 - uVar6;
puVar4 = puVar5;
if (-1 < (int)uVar7) {
puVar4 = (undefined1 *)((ulonglong)uVar7 + param_1[10]);
}
FUN_1400eca38(param_1,puVar4,uVar6 - uVar7,0);
*(undefined4 *)((longlong)param_1 + 0x84) = *(undefined4 *)((longlong)param_1 + 0x94);
FUN_1400e7b6c(*param_1);
if (*(int *)(*param_1 + 0x18) == 0) {
return 0;
}
}
uVar3 = *(uint *)((longlong)param_1 + 0x84);
uVar7 = *(int *)((longlong)param_1 + 0x94) - uVar3;
if (*(int *)((longlong)param_1 + 0x44) - 0x106U <= uVar7) {
puVar4 = puVar5;
if (-1 < (int)uVar3) {
puVar4 = (undefined1 *)((ulonglong)uVar3 + param_1[10]);
}
FUN_1400eca38(param_1,puVar4,uVar7,0);
*(undefined4 *)((longlong)param_1 + 0x84) = *(undefined4 *)((longlong)param_1 + 0x94);
FUN_1400e7b6c(*param_1);
if (*(int *)(*param_1 + 0x18) == 0) {
return 0;
}
}
} while( true );
}