/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x1400c08b0 FUN_1400c08b0 * Pseudocode, not original source. */ void FUN_1400c08b0(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_14002f590(); } uVar8 = uVar7; if (*(ulonglong **)(param_2 + 0x20) != (ulonglong *)0x0) { uVar8 = **(ulonglong **)(param_2 + 0x20); } pppuVar4 = &local_30; local_28 = plVar2; FUN_1400a3120(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_14002f5c0(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_1400b9150(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_14002f5c0(lVar3,uVar5,param_3,param_4); } lVar3 = *param_1 + 8; uVar6 = *(uint *)((longlong)local_20 + uVar8 * 4); uVar5 = (ulonglong)uVar6; FUN_1400b9110(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::vftable; if (local_20 != (LPVOID)0x0) { if (local_28 == (longlong *)0x0) { FUN_1400302f0(local_20); } else { (**(code **)(*local_28 + 0x18))(); } } return; }