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

186 lines
6.8 KiB
C

/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
* Ghidra 12.1.2 decompiler output for 0x1400d0130 FUN_1400d0130
* Pseudocode, not original source. */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
ulonglong FUN_1400d0130(longlong *param_1,undefined8 param_2,SIZE_T param_3,undefined8 param_4)
{
int *piVar1;
undefined4 uVar2;
longlong lVar3;
longlong *plVar4;
longlong lVar5;
undefined1 uVar6;
ulonglong extraout_RAX;
ulonglong uVar7;
ulonglong extraout_RAX_00;
undefined8 *puVar8;
longlong lVar9;
undefined8 uVar10;
ushort uVar11;
uint uVar12;
ulonglong uVar13;
double dVar14;
undefined8 local_d8;
undefined8 uStack_d0;
int local_c8 [2];
longlong local_c0;
longlong local_b8;
int local_ac;
undefined **local_a0;
undefined4 local_98;
ushort local_94;
undefined **local_90;
undefined4 local_88;
undefined2 local_84;
undefined **local_80;
undefined4 local_78;
undefined2 local_74;
undefined4 local_70 [2];
undefined8 local_68;
undefined1 local_60;
undefined4 local_5c;
undefined1 local_58;
undefined1 local_57;
undefined8 local_50;
undefined8 local_48 [4];
local_50 = 0xfffffffffffffffe;
dVar14 = (double)FUN_14009bf00(*(longlong *)(*param_1 + 0x670));
dVar14 = dVar14 + (double)param_1[1];
param_1[1] = (longlong)dVar14;
lVar9 = *param_1;
uVar7 = *(ulonglong *)(lVar9 + 0x670);
if (dVar14 < *(double *)(uVar7 + 0x640) || dVar14 == *(double *)(uVar7 + 0x640)) {
lVar3 = param_1[2];
if (*(int *)(lVar3 + 8) == 0) {
dVar14 = (double)FUN_14009bf00(uVar7);
dVar14 = *(double *)(lVar3 + 0x10) - dVar14;
*(double *)(lVar3 + 0x10) = dVar14;
uVar7 = extraout_RAX_00;
if (dVar14 < 0.0) {
*(undefined8 *)(lVar3 + 0x10) = DAT_14016f080;
FUN_140074fb0(local_c8);
FUN_140074a40((longlong)local_c8,lVar9,param_3,param_4);
FUN_140075110(local_c8,0x800,param_3,param_4);
uVar10 = 0;
FUN_140075110(local_c8,0,param_3,param_4);
FUN_140029d80((longlong)local_c8,CONCAT71((int7)((ulonglong)uVar10 >> 8),0x10),param_3,
param_4);
local_d8 = *(undefined8 *)(lVar3 + 0x1c);
uStack_d0 = *(undefined8 *)(lVar3 + 0x24);
FUN_140051cf0((longlong)local_c8,&local_d8,param_3,param_4);
FUN_140029e60((longlong)local_c8,(ulonglong)*(uint *)(*param_1 + 0x56c),param_3,param_4);
lVar3 = *param_1;
local_70[0] = 5;
lVar9 = 0;
local_68 = 0;
local_60 = 1;
local_5c = 0xffffffff;
local_58 = 1;
local_57 = DAT_14016f1cc;
if ((*(longlong **)(lVar3 + 0x18) != (longlong *)0x0) &&
(lVar5 = **(longlong **)(lVar3 + 0x18), lVar5 != 0)) {
lVar9 = lVar5 + -0x40;
}
plVar4 = *(longlong **)(lVar3 + 0x670);
dVar14 = (double)(**(code **)(*(longlong *)(*(longlong *)(lVar3 + 0x670) + 0x70) + 0x1c0))()
;
puVar8 = FUN_1400cf0b0(param_1,local_48);
uVar6 = (**(code **)(*plVar4 + 0x30))(plVar4);
uVar11 = FUN_14008be40(uVar6,1);
FUN_1400d31e0(lVar9,1,(ulonglong)uVar11,(longlong)puVar8,(longlong)local_c8,dVar14,
(undefined8 *)local_70);
uVar7 = FUN_14008a320(&local_c0);
if ((local_b8 != 0) && (local_ac < 0)) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
}
}
else if (*(int *)(lVar3 + 8) == 1) {
dVar14 = (double)FUN_14009bf00(uVar7);
dVar14 = *(double *)(lVar3 + 0x10) - dVar14;
*(double *)(lVar3 + 0x10) = dVar14;
uVar7 = extraout_RAX;
if (dVar14 < 0.0) {
*(undefined8 *)(lVar3 + 0x10) = *(undefined8 *)(*(longlong *)(*param_1 + 0x670) + 0x648);
*(int *)(lVar3 + 0x18) = *(int *)(lVar3 + 0x18) + 1;
lVar9 = *param_1;
local_d8 = *(undefined8 *)(lVar9 + 0x30);
uStack_d0 = *(undefined8 *)(lVar9 + 0x38);
local_90 = Proud::AddrPort::vftable;
local_88 = *(undefined4 *)(lVar9 + 0x578);
local_84 = *(undefined2 *)(lVar9 + 0x57c);
FUN_1400cf900(param_1,(longlong)&local_90,&local_d8,param_4);
lVar9 = *param_1;
plVar4 = *(longlong **)(lVar9 + 0x18);
uVar13 = 0;
if ((plVar4 != (longlong *)0x0) && (*plVar4 != 0)) {
uVar7 = uVar13;
if ((plVar4 != (longlong *)0x0) && (*plVar4 != 0)) {
uVar7 = *plVar4 - 0x40;
}
if (*(int *)(uVar7 + 0x140) == *(int *)(lVar9 + 0x578)) {
uVar7 = uVar13;
if ((*(longlong **)(lVar9 + 0x18) != (longlong *)0x0) &&
(lVar5 = **(longlong **)(lVar9 + 0x18), lVar5 != 0)) {
uVar7 = lVar5 - 0x40;
}
if (((*(char *)(uVar7 + 0x130) == *(char *)(lVar9 + 0x588)) &&
(*(char *)(uVar7 + 0x131) == *(char *)(lVar9 + 0x589))) &&
(*(char *)(uVar7 + 0x132) == *(char *)(lVar9 + 0x58a))) {
local_d8 = *(undefined8 *)(lVar9 + 0x30);
uStack_d0 = *(undefined8 *)(lVar9 + 0x38);
local_80 = Proud::AddrPort::vftable;
local_78 = *(undefined4 *)(lVar9 + 0x588);
local_74 = *(undefined2 *)(lVar9 + 0x58c);
FUN_1400cf900(param_1,(longlong)&local_80,&local_d8,param_4);
}
}
}
uVar7 = (ulonglong)DAT_14016f08c;
if ((int)DAT_14016f08c < *(int *)(lVar3 + 0x18)) {
piVar1 = (int *)(lVar3 + 0x30);
*piVar1 = *piVar1 + -1;
if (*piVar1 < 0) {
*(undefined4 *)(lVar3 + 0x30) = DAT_14016f0e8;
*(short *)(lVar3 + 0x34) = *(short *)(lVar3 + 0x34) + (short)_DAT_140176140;
uVar11 = *(ushort *)(lVar3 + 0x34);
if ((uVar11 < 0x3ff) || (uVar11 == 0xffff)) {
uVar11 = 0x3ff;
}
*(ushort *)(lVar3 + 0x34) = uVar11;
}
uVar7 = *param_1;
uVar2 = *(undefined4 *)(uVar7 + 0x578);
uVar11 = *(ushort *)(lVar3 + 0x34);
if (0 < _DAT_140176140) {
do {
local_d8 = *(undefined8 *)(*param_1 + 0x30);
uStack_d0 = *(undefined8 *)(*param_1 + 0x38);
local_a0 = Proud::AddrPort::vftable;
local_98 = uVar2;
local_94 = uVar11;
uVar7 = FUN_1400cf900(param_1,(longlong)&local_a0,&local_d8,param_4);
uVar11 = uVar11 + 1;
if ((uVar11 < 0x3ff) || (uVar11 == 0xffff)) {
uVar11 = 0x3ff;
}
uVar12 = (int)uVar13 + 1;
uVar13 = (ulonglong)uVar12;
} while ((int)uVar12 < _DAT_140176140);
}
}
}
}
uVar7 = CONCAT71((int7)(uVar7 >> 8),1);
}
else {
uVar7 = uVar7 & 0xffffffffffffff00;
}
return uVar7;
}