/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x14015e500 FUN_14015e500 * Pseudocode, not original source. */ void FUN_14015e500(longlong *param_1,ulonglong param_2,undefined8 param_3,undefined8 param_4) { longlong lVar1; code *pcVar2; char *pcVar3; longlong lVar4; longlong lVar5; char *local_res10; undefined8 uVar6; undefined **local_30 [3]; uVar6 = 0xfffffffffffffffe; if (0x199999999999999 < param_2) { std::_Xlength_error("vector too long"); pcVar2 = (code *)swi(3); (*pcVar2)(); return; } if ((ulonglong)((param_1[2] - *param_1) / 0xa0) < param_2) { local_res10 = (char *)0x0; if ((param_2 != 0) && (local_res10 = operator_new(param_2 * 0xa0), local_res10 == (char *)0x0)) { std::exception::exception((exception *)local_30,&local_res10); local_30[0] = std::bad_alloc::vftable; /* WARNING: Subroutine does not return */ _CxxThrowException(local_30,(ThrowInfo *)&DAT_140341858); } pcVar3 = local_res10; FUN_14015eb90(*param_1,param_1[1],local_res10,param_4,uVar6); lVar1 = param_1[1]; lVar5 = *param_1; lVar4 = lVar1 - lVar5; if (lVar5 != 0) { for (; lVar5 != lVar1; lVar5 = lVar5 + 0xa0) { FUN_14015dfc0(lVar5); } operator_delete((void *)*param_1); } param_1[2] = (longlong)(pcVar3 + param_2 * 0xa0); param_1[1] = (longlong)(pcVar3 + (lVar4 / 0xa0) * 0xa0); *param_1 = (longlong)pcVar3; } return; }