60 lines
2 KiB
C
60 lines
2 KiB
C
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
|
* Ghidra 12.1.2 decompiler output for 0x14006d000 FUN_14006d000
|
|
* Pseudocode, not original source. */
|
|
|
|
undefined2 * FUN_14006d000(longlong param_1,longlong param_2,undefined8 param_3,undefined8 param_4)
|
|
|
|
{
|
|
longlong *plVar1;
|
|
undefined1 auVar2 [16];
|
|
undefined1 auVar3 [16];
|
|
ulonglong uVar4;
|
|
undefined2 *puVar5;
|
|
ulonglong uVar6;
|
|
longlong lVar7;
|
|
exception local_58 [80];
|
|
|
|
if (param_2 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be00();
|
|
}
|
|
if (*(int *)(param_1 + 0x40) != 2) {
|
|
FUN_14006c280(L"CFastHeapImpl.Alloc() is called after the allocator is already disposed!");
|
|
return (undefined2 *)0x0;
|
|
}
|
|
uVar6 = *(ulonglong *)(param_1 + 0x60) >> 7;
|
|
lVar7 = ((param_2 - 1U) / uVar6 + 1) * uVar6;
|
|
if (lVar7 != 0) {
|
|
auVar2._8_8_ = 0;
|
|
auVar2._0_8_ = uVar6;
|
|
auVar3._8_8_ = 0;
|
|
auVar3._0_8_ = lVar7 - 1U;
|
|
uVar4 = SUB168(auVar3 / auVar2,0);
|
|
if (0xffffffff < uVar4) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14006be60(L"Proud::CFastHeapImpl::GetAllocByGroundSize",(lVar7 - 1U) % uVar6,param_1,
|
|
param_4);
|
|
}
|
|
if ((uVar4 < 0x80) &&
|
|
(plVar1 = *(longlong **)
|
|
(*(longlong *)(param_1 + 0x68) + (longlong)SUB164(auVar3 / auVar2,0) * 8),
|
|
plVar1 != (longlong *)0x0)) {
|
|
puVar5 = (undefined2 *)(**(code **)(*plVar1 + 8))(plVar1,lVar7 + 0x10);
|
|
goto LAB_14006d092;
|
|
}
|
|
}
|
|
puVar5 = (undefined2 *)
|
|
(**(code **)**(undefined8 **)(param_1 + 0x48))
|
|
(*(undefined8 **)(param_1 + 0x48),lVar7 + 0x10);
|
|
if (puVar5 == (undefined2 *)0x0) {
|
|
FUN_14006ba50(local_58,L"CRT malloc returned NULL at %s!",L"Proud::CFastHeapImpl::Alloc",param_4
|
|
);
|
|
/* WARNING: Subroutine does not return */
|
|
_CxxThrowException(local_58,(ThrowInfo *)&DAT_1401a93e8);
|
|
}
|
|
LAB_14006d092:
|
|
*(longlong *)(puVar5 + 4) = lVar7;
|
|
*puVar5 = 0x71a;
|
|
return puVar5 + 8;
|
|
}
|
|
|