/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x1400c1cc0 FUN_1400c1cc0 * Pseudocode, not original source. */ void FUN_1400c1cc0(longlong param_1,SIZE_T param_2,longlong param_3,undefined8 param_4) { undefined8 *puVar1; undefined1 uVar2; ushort uVar3; longlong lVar4; longlong *plVar5; uint *puVar6; undefined ***pppuVar7; uint uVar8; double extraout_XMM0_Qa; undefined8 uVar9; undefined4 uVar10; undefined4 uVar11; longlong *local_res10; int local_d8 [2]; longlong local_d0; longlong local_c8; int local_bc; undefined **local_b0; undefined4 local_a8; undefined2 local_a4; undefined **local_a0; undefined4 local_98; undefined2 local_94; undefined **local_90; undefined4 local_88; undefined2 local_84; uint local_80 [2]; undefined8 local_78; undefined1 local_70; undefined4 local_6c; undefined1 local_68; undefined1 local_67; uint local_60 [2]; undefined8 local_58; undefined1 local_50; undefined4 local_4c; undefined1 local_48; undefined1 local_47; undefined8 local_40; if (param_2 == 0) { return; } local_40 = 0xfffffffffffffffe; local_a0 = Proud::AddrPort::vftable; local_98 = *(undefined4 *)(param_3 + 0x38); local_94 = *(undefined2 *)(param_3 + 0x3c); pppuVar7 = &local_a0; FUN_14008c900(*(longlong *)(param_2 + 0x188),(longlong)pppuVar7); if (extraout_XMM0_Qa <= 0.0) { return; } FUN_140074fb0(local_d8); FUN_140074a40((longlong)local_d8,pppuVar7,param_2,param_4); FUN_140075110(local_d8,0x800,param_2,param_4); uVar9 = 0; FUN_140075110(local_d8,0,param_2,param_4); FUN_140029d80((longlong)local_d8,CONCAT71((int7)((ulonglong)uVar9 >> 8),0x28),param_2,param_4); FUN_14002f5c0((longlong)local_d8,extraout_XMM0_Qa,param_2,param_4); uVar8 = *(uint *)(param_3 + 0x28); if (uVar8 == 1) { lVar4 = 0; local_78 = 0; local_70 = 1; local_6c = 0xffffffff; local_68 = 1; local_67 = DAT_14016f1cc; plVar5 = *(longlong **)(*(longlong *)(param_1 + 0x108) + 0x1570); if (plVar5 != (longlong *)0x0) { lVar4 = *plVar5; } local_90 = Proud::AddrPort::vftable; local_88 = *(undefined4 *)(lVar4 + 0xd0); local_84 = *(undefined2 *)(lVar4 + 0xd4); plVar5 = *(longlong **)(param_1 + 0x108); local_80[0] = uVar8; uVar9 = (**(code **)(plVar5[0xe] + 0x1c0))(); uVar10 = (undefined4)uVar9; uVar11 = (undefined4)((ulonglong)uVar9 >> 0x20); uVar2 = (**(code **)(*plVar5 + 0x30))(plVar5); uVar3 = FUN_14008be40(uVar2,1); lVar4 = FUN_14009c0d0(*(longlong *)(param_1 + 0x108)); puVar6 = local_80; pppuVar7 = &local_90; uVar8 = 1; } else { if (uVar8 == 0) goto LAB_1400c1f46; plVar5 = FUN_1400a7920(*(longlong **)(param_1 + 0x108),(longlong *)&local_res10,uVar8); lVar4 = 0; if ((longlong *)*plVar5 != (longlong *)0x0) { lVar4 = *(longlong *)*plVar5; } if ((local_res10 != (longlong *)0x0) && (local_res10[1] = local_res10[1] + -1, local_res10[1] == 0)) { puVar1 = (undefined8 *)*local_res10; if (puVar1 != (undefined8 *)0x0) { (**(code **)*puVar1)(puVar1,1); } FUN_14003e8b0(local_res10); } if ((*(longlong **)(lVar4 + 0x18) == (longlong *)0x0) || (**(longlong **)(lVar4 + 0x18) == 0)) goto LAB_1400c1f46; local_60[0] = 1; local_58 = 0; local_50 = 1; local_4c = 0xffffffff; local_48 = 1; local_47 = DAT_14016f1cc; local_b0 = Proud::AddrPort::vftable; local_a8 = *(undefined4 *)(lVar4 + 0x598); local_a4 = *(undefined2 *)(lVar4 + 0x59c); uVar8 = *(uint *)(param_3 + 0x28); plVar5 = *(longlong **)(param_1 + 0x108); uVar9 = (**(code **)(plVar5[0xe] + 0x1c0))(); uVar10 = (undefined4)uVar9; uVar11 = (undefined4)((ulonglong)uVar9 >> 0x20); uVar2 = (**(code **)(*plVar5 + 0x30))(plVar5); uVar3 = FUN_14008be40(uVar2,(char)uVar8); lVar4 = FUN_1400cf2a0(lVar4); puVar6 = local_60; pppuVar7 = &local_b0; } FUN_1400d31e0(lVar4,uVar8,(ulonglong)uVar3,(longlong)pppuVar7,(longlong)local_d8, (double)CONCAT44(uVar11,uVar10),(undefined8 *)puVar6); LAB_1400c1f46: local_res10 = &local_d0; FUN_14008a320(&local_d0); if ((local_c8 != 0) && (local_bc < 0)) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } return; }