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

88 lines
2.8 KiB
C

/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
* Ghidra 12.1.2 decompiler output for 0x1400dc890 FUN_1400dc890
* Pseudocode, not original source. */
void FUN_1400dc890(longlong *param_1,longlong param_2,size_t param_3,undefined8 param_4)
{
int iVar1;
longlong *plVar2;
longlong lVar3;
undefined ***pppuVar4;
ulonglong uVar5;
uint uVar6;
ulonglong uVar7;
ulonglong uVar8;
undefined8 uVar9;
double dVar10;
undefined **local_30;
longlong *local_28;
LPVOID local_20;
undefined8 local_18;
undefined8 local_10;
plVar2 = (longlong *)
(**(code **)(**(longlong **)*param_1 + 0x38))
(*(longlong **)*param_1,param_2,param_3,param_4,0xfffffffffffffffe);
uVar7 = 0;
local_28 = (longlong *)0x0;
local_20 = (LPVOID)0x0;
local_18 = 0;
local_10 = 0;
local_30 = Proud::CUncompressedFrameNumberArray::vftable;
if (plVar2 == (longlong *)0x0) {
/* WARNING: Subroutine does not return */
FUN_14003dec0();
}
uVar8 = uVar7;
if (*(ulonglong **)(param_2 + 0x20) != (ulonglong *)0x0) {
uVar8 = **(ulonglong **)(param_2 + 0x20);
}
pppuVar4 = &local_30;
local_28 = plVar2;
FUN_1400981d0(uVar8,(longlong)pppuVar4,param_3,param_4);
if (0 < (int)local_18) {
iVar1 = (int)local_18 + -1;
if ((iVar1 < 0) || ((int)local_18 <= iVar1)) {
/* WARNING: Subroutine does not return */
FUN_14003def0(uVar8,pppuVar4,param_3,param_4);
}
*(undefined4 *)(*param_1 + 0xe4) = *(undefined4 *)((longlong)local_20 + (longlong)iVar1 * 4);
uVar9 = (**(code **)(**(longlong **)*param_1 + 0x18))();
*(undefined8 *)(*param_1 + 0xe8) = uVar9;
*(int *)(*param_1 + 0x30) = *(int *)(*param_1 + 0x30) + 1;
}
lVar3 = *param_1 + 8;
uVar5 = (ulonglong)*(uint *)(param_2 + 0x34);
FUN_1400d4e30(lVar3,*(uint *)(param_2 + 0x34));
*(undefined4 *)(*param_1 + 0xe0) = *(undefined4 *)(param_2 + 0x34);
uVar8 = uVar7;
if (0 < (int)local_18) {
do {
if (((longlong)uVar8 < 0) || ((int)local_18 <= (int)uVar7)) {
/* WARNING: Subroutine does not return */
FUN_14003def0(lVar3,uVar5,param_3,param_4);
}
lVar3 = *param_1 + 8;
uVar6 = *(uint *)((longlong)local_20 + uVar8 * 4);
uVar5 = (ulonglong)uVar6;
FUN_1400d4df0(lVar3,uVar6);
uVar6 = (int)uVar7 + 1;
uVar7 = (ulonglong)uVar6;
uVar8 = uVar8 + 1;
} while ((int)uVar6 < (int)local_18);
}
dVar10 = (double)*(int *)(*param_1 + 0x14);
*(int *)(*param_1 + 0x14) = (int)(((double)*(int *)(param_2 + 0x30) - dVar10) * 0.9 + dVar10) + 1;
local_30 = Proud::CFastArray<Proud::FrameNumber,1>::vftable;
if (local_20 != (LPVOID)0x0) {
if (local_28 == (longlong *)0x0) {
FUN_14003e8b0(local_20);
}
else {
(**(code **)(*local_28 + 0x18))();
}
}
return;
}