server-re/decomp/MessageServer_Release_x64/full/functions/0x14006d570.c

50 lines
1.5 KiB
C

/* 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;
}