/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401c31e0 FUN_1401c31e0 * Pseudocode, not original source. */ void FUN_1401c31e0(longlong param_1,int param_2) { int iVar1; int iVar2; int iVar3; longlong lVar4; undefined8 *_Src; longlong lVar5; undefined8 *puVar6; longlong lVar7; iVar1 = *(int *)(param_1 + 0x18); lVar5 = (longlong)iVar1; if (iVar1 == 0) { iVar1 = *(int *)(param_1 + 0x18); FUN_1401c2dc0(param_1,iVar1 + 1); puVar6 = (undefined8 *)0x0; if (0 < iVar1) { _Src = puVar6; if (*(int *)(param_1 + 0x18) != 0) { _Src = *(undefined8 **)(param_1 + 0x10); } memmove(_Src + 1,_Src,(longlong)iVar1 << 3); } if (*(int *)(param_1 + 0x18) != 0) { puVar6 = *(undefined8 **)(param_1 + 0x10); } *puVar6 = CONCAT44(param_2,param_2); } else { iVar3 = iVar1 + -1; if ((iVar3 < 0) || (iVar1 <= iVar3)) { /* WARNING: Subroutine does not return */ FUN_14016d6e0(); } lVar7 = *(longlong *)(param_1 + 0x10); lVar4 = (longlong)iVar3; iVar3 = *(int *)(lVar7 + lVar4 * 8); if ((iVar3 != param_2) && (iVar2 = *(int *)(lVar7 + 4 + lVar4 * 8), iVar2 != param_2)) { if ((iVar2 + 1 != param_2) && (iVar3 + 1 != param_2)) { if (iVar1 < 0) { /* WARNING: Subroutine does not return */ FUN_14016d6b0(); } iVar3 = *(int *)(param_1 + 0x18); FUN_1401c2dc0(param_1,iVar3 + 1); iVar3 = iVar3 - iVar1; lVar7 = 0; if (0 < iVar3) { lVar4 = lVar7; if (*(int *)(param_1 + 0x18) != 0) { lVar4 = *(longlong *)(param_1 + 0x10); } memmove((void *)(lVar4 + 8 + lVar5 * 8),(void *)(lVar4 + lVar5 * 8),(longlong)iVar3 << 3); } if (*(int *)(param_1 + 0x18) != 0) { lVar7 = *(longlong *)(param_1 + 0x10); } *(ulonglong *)(lVar7 + lVar5 * 8) = CONCAT44(param_2,param_2); return; } *(int *)(lVar7 + 4 + lVar4 * 8) = param_2; return; } } return; }