/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x14019b0c0 FUN_14019b0c0 * Pseudocode, not original source. */ void FUN_14019b0c0(longlong param_1,longlong param_2) { short *psVar1; undefined1 auVar2 [16]; undefined1 auVar3 [16]; ulonglong uVar4; ulonglong uVar5; ulonglong uVar6; longlong *plVar7; undefined1 local_58 [88]; if (*(int *)(param_1 + 0x40) != 2) { FUN_14016f090( L"CFastHeap.Free(): Attempt Free after Heap destruction! Doing Free before WinMain returns in highly recommended. Refer the manual for the resolution." ); return; } if ((param_2 == 0) || (psVar1 = (short *)(param_2 + -0x10), *psVar1 != 0x71a)) { FUN_14016d300(local_58, L"Not CFastHeap-allocated block! Refer to ProudNet help \'ProudNet Technical Note\' for more help." ); /* WARNING: Subroutine does not return */ _CxxThrowException(local_58,(ThrowInfo *)&DAT_1403417f8); } *psVar1 = 0xb0c; if (*(longlong *)(param_2 + -8) != 0) { uVar6 = *(ulonglong *)(param_1 + 0x60) >> 7; uVar4 = *(longlong *)(param_2 + -8) - 1; auVar2._8_8_ = 0; auVar2._0_8_ = uVar6; auVar3._8_8_ = 0; auVar3._0_8_ = uVar4; uVar5 = SUB168(auVar3 / auVar2,0); if (0xffffffff < uVar5) { /* WARNING: Subroutine does not return */ FUN_14016d710(L"Proud::CFastHeapImpl::GetAllocByGroundSize",uVar4 % uVar6); } if ((uVar5 < 0x80) && (plVar7 = *(longlong **) (*(longlong *)(param_1 + 0x68) + (longlong)SUB164(auVar3 / auVar2,0) * 8), plVar7 != (longlong *)0x0)) goto LAB_14019b148; } plVar7 = *(longlong **)(param_1 + 0x48); LAB_14019b148: /* WARNING: Could not recover jumptable at 0x00014019b152. Too many branches */ /* WARNING: Treating indirect jump as call */ (**(code **)(*plVar7 + 0x10))(plVar7,psVar1); return; }