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