/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401e01b0 FUN_1401e01b0 * Pseudocode, not original source. */ undefined8 FUN_1401e01b0(longlong param_1) { ulonglong *puVar1; uint uVar2; uint uVar3; uint uVar4; undefined8 uVar5; ulonglong uVar6; uint *puVar7; undefined8 uVar8; uint uVar9; uint *puVar10; uint *puVar11; uint uVar12; ulonglong uVar13; uint *local_res8; uVar5 = (**(code **)(**(longlong **)(param_1 + 0x20) + 0x58))(); FUN_14016db50(uVar5); puVar1 = *(ulonglong **)(*(longlong *)(param_1 + 0x20) + 0x5d0); if ((puVar1 == (ulonglong *)0x0) || (*puVar1 == 0)) goto LAB_1401e0449; uVar13 = 0; uVar6 = uVar13; if (puVar1 != (ulonglong *)0x0) { uVar6 = *puVar1; } if (3 < *(int *)(uVar6 + 0x100)) goto LAB_1401e0449; FUN_14016d8c0(); puVar11 = (uint *)PTR_DAT_1403440a0; local_res8 = (uint *)PTR_DAT_1403440a0; uVar2 = FUN_14016d740(L"Autoprune"); uVar4 = 0; uVar6 = uVar13; if ((puVar11 != (uint *)0x0) && (uVar6 = 0, puVar11 != (uint *)PTR_DAT_1403440a0)) { uVar6 = (ulonglong)*(uint *)((longlong)puVar11 + -8); } uVar3 = uVar2; if ((((int)uVar2 <= (int)uVar6) && (uVar3 = uVar4, puVar11 != (uint *)0x0)) && (puVar11 != (uint *)PTR_DAT_1403440a0)) { uVar3 = *(uint *)((longlong)puVar11 + -8); } uVar12 = 1; if (1 < (int)uVar3) { uVar12 = uVar3; } uVar3 = uVar4; if ((puVar11 != (uint *)0x0) && (puVar11 != (uint *)PTR_DAT_1403440a0)) { uVar3 = *(uint *)((longlong)puVar11 + -8); } uVar9 = 0; if ((int)uVar3 < (int)uVar12) { if (puVar11 == (uint *)0x0) { puVar11 = (uint *)PTR_DAT_1403440a0; } local_res8 = puVar11; if ((int)uVar12 < 0) { /* WARNING: Subroutine does not return */ FUN_14016d6b0(); } if (uVar12 == 0) { FUN_14004eb70(&local_res8); } else { uVar3 = uVar4; if ((puVar11 != (uint *)0x0) && (puVar11 != (uint *)PTR_DAT_1403440a0)) { uVar3 = puVar11[-2]; } if (uVar12 != uVar3) { puVar7 = (uint *)FUN_14016d940((longlong)(int)uVar12 * 2 + 10); if (puVar7 != (uint *)0x0) { *puVar7 = 0; puVar7[1] = 1; } *puVar7 = uVar12; uVar3 = uVar9; if ((puVar11 != (uint *)0x0) && (puVar11 != (uint *)PTR_DAT_1403440a0)) { uVar3 = puVar11[-2]; } puVar10 = (uint *)PTR_DAT_1403440a0; if ((int)uVar12 < (int)uVar3) { LAB_1401e0314: if (puVar11 != (uint *)0x0) { puVar10 = puVar11; } } else { uVar12 = uVar4; if (puVar11 != (uint *)0x0) { if (puVar11 != (uint *)PTR_DAT_1403440a0) { uVar12 = puVar11[-2]; } goto LAB_1401e0314; } } FUN_14016d770(puVar7 + 2,puVar10,uVar12); FUN_14004eb70(&local_res8); local_res8 = puVar7 + 2; } } } FUN_14004e850(&local_res8); puVar11 = local_res8; puVar7 = local_res8; if (local_res8 == (uint *)0x0) { puVar7 = (uint *)PTR_DAT_1403440a0; } FUN_14016d770(puVar7,L"Autoprune",uVar2); puVar7 = puVar11; if (puVar11 == (uint *)0x0) { puVar7 = (uint *)PTR_DAT_1403440a0; } uVar4 = FUN_14016d740(puVar7); uVar2 = 0; if (0 < (int)uVar4) { uVar2 = uVar4; } uVar4 = uVar9; if ((puVar11 != (uint *)0x0) && (puVar11 != (uint *)PTR_DAT_1403440a0)) { uVar4 = puVar11[-2]; } if (((int)uVar2 < (int)uVar4) || (uVar2 = uVar9, puVar11 == (uint *)0x0)) { LAB_1401e03a9: if (((puVar11 != (uint *)PTR_DAT_1403440a0) && (puVar11 != (uint *)0x0)) && (puVar11 + -2 != (uint *)0x0)) { puVar11[-2] = uVar2; *(undefined2 *)((longlong)puVar11 + (longlong)(int)uVar2 * 2) = 0; } } else if (puVar11 != (uint *)PTR_DAT_1403440a0) { uVar2 = puVar11[-2]; goto LAB_1401e03a9; } FUN_1401df890(*(undefined8 *)(param_1 + 0x20),0xb,3,&local_res8); if (((puVar11 != (uint *)0x0) && (puVar11 != (uint *)PTR_DAT_1403440a0)) && (puVar11 + -2 != (uint *)0x0)) { uVar8 = FUN_14016d8c0(); FUN_14016db50(uVar8); puVar7 = puVar11 + -1; *puVar7 = *puVar7 - 1; if (*puVar7 == 0) { FUN_14016d970(puVar11 + -2); } FUN_14016dbe0(uVar8); } puVar1 = *(ulonglong **)(*(longlong *)(param_1 + 0x20) + 0x5d0); if (puVar1 != (ulonglong *)0x0) { uVar13 = *puVar1; } FUN_1401ea690(uVar13,4); LAB_1401e0449: FUN_14016dbe0(uVar5); return 1; }