/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14003ef50 FUN_14003ef50 * Pseudocode, not original source. */ void FUN_14003ef50(longlong param_1,longlong param_2,short *param_3) { undefined1 auVar1 [16]; undefined1 auVar2 [16]; ulonglong uVar3; ulonglong uVar4; ulonglong uVar5; longlong *plVar6; exception local_58 [88]; if (*(int *)(param_1 + 0x40) != 2) { FUN_14003e110( L"CFastHeap.Free(): Attempt Free after Heap destruction! Doing Free before WinMain returns in highly recommended. Refer the manual for the resolution." ); return; } if ((param_2 == 0) || (param_3 = (short *)(param_2 + -0x10), *param_3 != 0x71a)) { FUN_14003db10(local_58, L"Not CFastHeap-allocated block! Refer to ProudNet help \'ProudNet Technical Note\' for more help." ,param_3,param_1); /* WARNING: Subroutine does not return */ _CxxThrowException(local_58,(ThrowInfo *)&DAT_14016c210); } *param_3 = 0xb0c; if (*(longlong *)(param_2 + -8) != 0) { uVar5 = *(ulonglong *)(param_1 + 0x60) >> 7; uVar3 = *(longlong *)(param_2 + -8) - 1; auVar1._8_8_ = 0; auVar1._0_8_ = uVar5; auVar2._8_8_ = 0; auVar2._0_8_ = uVar3; uVar4 = SUB168(auVar2 / auVar1,0); if (0xffffffff < uVar4) { /* WARNING: Subroutine does not return */ FUN_14003df20(L"Proud::CFastHeapImpl::GetAllocByGroundSize",uVar3 % uVar5,param_3,param_1); } if ((uVar4 < 0x80) && (plVar6 = *(longlong **) (*(longlong *)(param_1 + 0x68) + (longlong)SUB164(auVar2 / auVar1,0) * 8), plVar6 != (longlong *)0x0)) goto LAB_14003efd8; } plVar6 = *(longlong **)(param_1 + 0x48); LAB_14003efd8: /* WARNING: Could not recover jumptable at 0x00014003efe2. Too many branches */ /* WARNING: Treating indirect jump as call */ (**(code **)(*plVar6 + 0x10))(plVar6,param_3); return; }