/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401bf080 FUN_1401bf080 * Pseudocode, not original source. */ void FUN_1401bf080(longlong param_1,longlong *param_2,int param_3) { int iVar1; longlong lVar2; longlong lVar3; longlong *plVar4; undefined8 *puVar5; longlong lVar6; int iVar7; undefined4 uStack_24; if ((100 < (ulonglong)param_2[2]) && ((void *)*param_2 != (void *)0x0)) { operator_delete__((void *)*param_2); *param_2 = 0; } param_2[1] = 0; param_2[2] = 100; lVar2 = *(longlong *)(param_1 + 0x28); iVar7 = 0; if (lVar2 != 0) { if (*(int *)(lVar2 + 0x18) == 0) { lVar6 = 0; } else { lVar6 = *(longlong *)(lVar2 + 0x10); } iVar7 = *(int *)(lVar2 + 0x18) - *(int *)(param_1 + 0x30); FUN_1401b68f0(param_2,lVar6 + *(int *)(param_1 + 0x30),iVar7); } puVar5 = *(undefined8 **)(param_1 + 0x10); while( true ) { if ((puVar5 == (undefined8 *)0x0) || (param_3 <= iVar7)) { return; } if (puVar5 == (undefined8 *)0x0) { /* WARNING: Subroutine does not return */ FUN_14004dc60(0x80004005); } lVar2 = puVar5[2]; iVar1 = *(int *)(lVar2 + 0x18); if (iVar1 == 0) { lVar6 = 0; } else { lVar6 = *(longlong *)(lVar2 + 0x10); } lVar3 = param_2[1]; if (lVar3 < 0) break; FUN_1401b5c60(param_2,lVar3 + 1,0xffffffffffffffff); if (param_2[1] <= lVar3) { /* WARNING: Subroutine does not return */ FUN_14016d6b0(); } if ((ulonglong)param_2[2] < 0x65) { plVar4 = param_2 + (lVar3 + 2) * 2; } else { plVar4 = (longlong *)(lVar3 * 0x10 + *param_2); } *plVar4 = CONCAT44(uStack_24,iVar1); plVar4[1] = lVar6; iVar7 = iVar7 + *(int *)(lVar2 + 0x18); puVar5 = (undefined8 *)*puVar5; } /* WARNING: Subroutine does not return */ FUN_14016d6b0(); }