/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x14016b600 FUN_14016b600 * Pseudocode, not original source. */ longlong FUN_14016b600(int *param_1,int param_2) { longlong lVar1; int iVar2; int iVar3; int iVar4; undefined1 local_58 [80]; FUN_14016b2e0(); lVar1 = *(longlong *)(param_1 + 2); if ((lVar1 == 0) && (*(longlong *)(param_1 + 4) == 0)) { FUN_14016d300(local_58,&DAT_1402760b0); /* WARNING: Subroutine does not return */ _CxxThrowException(local_58,(ThrowInfo *)&DAT_1403417f8); } iVar3 = *param_1; if (lVar1 == 0) { if (*(longlong *)(param_1 + 4) == 0) { /* WARNING: Subroutine does not return */ FUN_14016d1e0(); } iVar4 = param_1[6]; } else { iVar4 = *(int *)(lVar1 + 0x18); } iVar2 = ((int)(iVar3 + (iVar3 >> 0x1f & 7U)) >> 3) + param_2; if (iVar4 < iVar2) { return (ulonglong)(uint3)((uint)iVar2 >> 8) << 8; } iVar3 = iVar3 + param_2 * 8; *param_1 = iVar3; return CONCAT71((uint7)(uint3)((uint)iVar3 >> 8),1); }