/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x14007ac50 FUN_14007ac50 * Pseudocode, not original source. */ void FUN_14007ac50(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_14006cbf0((longlong)iVar5 << 2); } else { lVar4 = (**(code **)(*plVar2 + 8))(plVar2,(longlong)iVar5 << 2); } } else { uVar6 = *(undefined8 *)(param_1 + 0x10); if (plVar2 == (longlong *)0x0) { lVar4 = FUN_14006cc20(uVar6,(longlong)iVar5 << 2); } else { param_3 = (longlong)iVar5 << 2; lVar4 = (**(code **)(*plVar2 + 0x10))(plVar2,uVar6); } if (lVar4 == 0) { FUN_14006ba50(local_58,L"Memory allocation failure!",param_3,uVar6); /* WARNING: Subroutine does not return */ _CxxThrowException(local_58,(ThrowInfo *)&DAT_1401a93e8); } } *(longlong *)(param_1 + 0x10) = lVar4; *(int *)(param_1 + 0x1c) = iVar5; } return; }