/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x14006d570 FUN_14006d570 * Pseudocode, not original source. */ undefined8 * FUN_14006d570(undefined8 *param_1,ulonglong param_2,longlong *param_3,undefined8 param_4) { undefined8 *puVar1; void *pvVar2; ulonglong uVar3; longlong lVar4; longlong *plVar5; exception local_a0 [72]; exception local_58 [80]; uVar3 = param_2; plVar5 = param_3; FUN_14006cbd0(param_1); *param_1 = Proud::CFastHeapImpl::vftable; puVar1 = param_1 + 9; FUN_14006fb50(puVar1); FUN_14006d4a0(puVar1,uVar3,plVar5,param_4); if (param_2 < 0x80) { FUN_14006ba50(local_a0,L"bad AccelBlockSizeLimit value",plVar5,param_4); /* WARNING: Subroutine does not return */ _CxxThrowException(local_a0,(ThrowInfo *)&DAT_1401a93e8); } if (param_1[9] == 0) { puVar1 = FUN_14006d4a0(puVar1,uVar3,plVar5,param_4); param_1[9] = *puVar1; } param_1[0xc] = param_2; pvVar2 = malloc(0x400); param_1[0xd] = pvVar2; if (pvVar2 == (void *)0x0) { FUN_14006ba50(local_58,L"Cannot allocate FastHeap buckets! FATAL!",plVar5,param_4); /* WARNING: Subroutine does not return */ _CxxThrowException(local_58,(ThrowInfo *)&DAT_1401a93e8); } lVar4 = 0; do { puVar1 = FUN_14006fac0(param_3,uVar3,plVar5,param_4); *(undefined8 **)(lVar4 + param_1[0xd]) = puVar1; lVar4 = lVar4 + 8; } while (lVar4 < 0x400); *(undefined4 *)(param_1 + 8) = 2; return param_1; }