server-re/decomp/DBCServer_Release_x64/full/functions/0x14019adc0.c

58 lines
1.9 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x14019adc0 FUN_14019adc0
* Pseudocode, not original source. */
undefined2 * FUN_14019adc0(longlong param_1,longlong param_2)
{
longlong *plVar1;
undefined1 auVar2 [16];
undefined1 auVar3 [16];
ulonglong uVar4;
undefined2 *puVar5;
ulonglong uVar6;
longlong lVar7;
undefined1 local_58 [80];
if (param_2 == 0) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
if (*(int *)(param_1 + 0x40) != 2) {
FUN_14016f090(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_14016d710(L"Proud::CFastHeapImpl::GetAllocByGroundSize",(lVar7 - 1U) % uVar6);
}
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_14019ae52;
}
}
puVar5 = (undefined2 *)
(**(code **)**(undefined8 **)(param_1 + 0x48))
(*(undefined8 **)(param_1 + 0x48),lVar7 + 0x10);
if (puVar5 == (undefined2 *)0x0) {
FUN_14016d300(local_58,L"CRT malloc returned NULL at %s!",L"Proud::CFastHeapImpl::Alloc");
/* WARNING: Subroutine does not return */
_CxxThrowException(local_58,(ThrowInfo *)&DAT_1403417f8);
}
LAB_14019ae52:
*(longlong *)(puVar5 + 4) = lVar7;
*puVar5 = 0x71a;
return puVar5 + 8;
}