/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14004b950 FUN_14004b950 * Pseudocode, not original source. */ void FUN_14004b950(longlong param_1,int param_2,longlong param_3) { int iVar1; longlong *plVar2; int iVar3; longlong lVar4; int iVar5; undefined8 uVar6; exception local_58 [80]; iVar1 = *(int *)(param_1 + 0x1c); iVar3 = iVar1; if (iVar1 < param_2) { iVar3 = param_2; } iVar5 = *(int *)(param_1 + 0x20); if ((*(int *)(param_1 + 0x20) <= iVar3) && (iVar5 = param_2, param_2 <= iVar1)) { iVar5 = iVar1; } if (iVar1 < iVar5) { plVar2 = *(longlong **)(param_1 + 8); if (iVar1 == 0) { if (plVar2 == (longlong *)0x0) { lVar4 = FUN_14003e840((longlong)iVar5 << 2); } else { lVar4 = (**(code **)(*plVar2 + 8))(plVar2,(longlong)iVar5 << 2); } } else { uVar6 = *(undefined8 *)(param_1 + 0x10); if (plVar2 == (longlong *)0x0) { lVar4 = FUN_14003e870(uVar6,(longlong)iVar5 << 2); } else { param_3 = (longlong)iVar5 << 2; lVar4 = (**(code **)(*plVar2 + 0x10))(plVar2,uVar6); } if (lVar4 == 0) { FUN_14003db10(local_58,L"Memory allocation failure!",param_3,uVar6); /* WARNING: Subroutine does not return */ _CxxThrowException(local_58,(ThrowInfo *)&DAT_14016c210); } } *(longlong *)(param_1 + 0x10) = lVar4; *(int *)(param_1 + 0x1c) = iVar5; } return; }