/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1400a5140 FUN_1400a5140 * Pseudocode, not original source. */ undefined8 * FUN_1400a5140(longlong *param_1,undefined8 *param_2,int *param_3) { int *piVar1; char **ppcVar2; undefined8 *puVar3; int iVar4; undefined8 *puVar5; longlong lVar6; char **ppcVar7; char *local_res8; undefined **local_38; undefined8 local_30; undefined8 local_28; puVar5 = operator_new(0x18); if (puVar5 != (undefined8 *)0x0) { *puVar5 = 0; puVar5[1] = local_30; puVar5[2] = local_28; piVar1 = (int *)(puVar5 + 1); if (piVar1 != (int *)0x0) { *piVar1 = *param_3; *(undefined8 *)((longlong)puVar5 + 0xc) = *(undefined8 *)(param_3 + 1); } iVar4 = *piVar1; if (*param_1 == 0) { local_res8 = (char *)FUN_1400a55e0(param_1,1); ppcVar2 = (char **)(param_1 + 1); ppcVar7 = &local_res8; if (local_res8 <= *ppcVar2) { ppcVar7 = ppcVar2; } *ppcVar2 = *ppcVar7; FUN_1400a59f0(param_1); FUN_1400a5ae0(param_1); } else if ((ulonglong)param_1[7] < 2) { local_res8 = (char *)(((ulonglong)param_1[4] >> 1) + param_1[4]); lVar6 = FUN_1400a55e0(param_1); if (lVar6 != param_1[1]) { FUN_1400a56c0(param_1); } } puVar3 = (undefined8 *)(*param_1 + ((ulonglong)(longlong)iVar4 % (ulonglong)param_1[1]) * 8); *puVar5 = *puVar3; *puVar3 = puVar5; param_1[4] = param_1[4] + 1; param_1[6] = (longlong)puVar3; *param_2 = puVar3; param_2[1] = puVar5; *(undefined1 *)(param_2 + 2) = 1; return param_2; } local_res8 = (char *)0x0; std::exception::exception((exception *)&local_38,&local_res8); local_38 = std::bad_alloc::vftable; /* WARNING: Subroutine does not return */ _CxxThrowException(&local_38,(ThrowInfo *)&DAT_140341858); }