/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x14016bfb0 FUN_14016bfb0 * Pseudocode, not original source. */ undefined8 * FUN_14016bfb0(undefined8 *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) { uint uVar1; int iVar2; uint uVar3; uint *puVar4; uint *puVar5; uint *puVar6; uint uVar7; uint *local_res18 [2]; undefined8 uVar8; uVar8 = 0xfffffffffffffffe; FUN_14016d8c0(); puVar6 = (uint *)PTR_DAT_140344098; local_res18[0] = (uint *)PTR_DAT_140344098; uVar1 = FUN_14016d7e0(param_2); if (puVar6 == (uint *)0x0) { iVar2 = 0; } else if (puVar6 == (uint *)PTR_DAT_140344098) { iVar2 = 0; } else { iVar2 = *(int *)((longlong)puVar6 + -8); } uVar3 = uVar1; if ((int)uVar1 <= iVar2) { if (puVar6 == (uint *)0x0) { uVar3 = 0; } else if (puVar6 == (uint *)PTR_DAT_140344098) { uVar3 = 0; } else { uVar3 = *(uint *)((longlong)puVar6 + -8); } } uVar7 = 1; if (1 < (int)uVar3) { uVar7 = uVar3; } if (puVar6 == (uint *)0x0) { iVar2 = 0; } else if (puVar6 == (uint *)PTR_DAT_140344098) { iVar2 = 0; } else { iVar2 = *(int *)((longlong)puVar6 + -8); } if ((int)uVar7 <= iVar2) goto LAB_14016c108; if (puVar6 == (uint *)0x0) { puVar6 = (uint *)PTR_DAT_140344098; } local_res18[0] = puVar6; if ((int)uVar7 < 0) { /* WARNING: Subroutine does not return */ FUN_14016d6b0(); } if (uVar7 == 0) { FUN_14004f5a0(local_res18); goto LAB_14016c108; } if (puVar6 == (uint *)0x0) { uVar3 = 0; } else if (puVar6 == (uint *)PTR_DAT_140344098) { uVar3 = 0; } else { uVar3 = puVar6[-2]; } if (uVar7 == uVar3) goto LAB_14016c108; puVar4 = (uint *)FUN_14016d940(); if (puVar4 != (uint *)0x0) { *puVar4 = 0; puVar4[1] = 1; } *puVar4 = uVar7; if (puVar6 == (uint *)0x0) { uVar3 = 0; } else if (puVar6 == (uint *)PTR_DAT_140344098) { uVar3 = 0; } else { uVar3 = puVar6[-2]; } puVar5 = (uint *)PTR_DAT_140344098; if ((int)uVar7 < (int)uVar3) { LAB_14016c0e2: if (puVar6 != (uint *)0x0) { puVar5 = puVar6; } } else { if (puVar6 != (uint *)0x0) { if (puVar6 == (uint *)PTR_DAT_140344098) { uVar7 = 0; } else { uVar7 = puVar6[-2]; } goto LAB_14016c0e2; } uVar7 = 0; } FUN_14016d810(puVar4 + 2,puVar5,uVar7,param_4,uVar8); FUN_14004f5a0(local_res18); local_res18[0] = puVar4 + 2; LAB_14016c108: FUN_14013c600(local_res18); puVar6 = local_res18[0]; puVar4 = local_res18[0]; if (local_res18[0] == (uint *)0x0) { puVar4 = (uint *)PTR_DAT_140344098; } FUN_14016d810(puVar4,param_2,uVar1,param_4,uVar8); uVar3 = FUN_14016d7e0(); uVar1 = 0; if (0 < (int)uVar3) { uVar1 = uVar3; } if (puVar6 == (uint *)0x0) { uVar3 = 0; } else if (puVar6 == (uint *)PTR_DAT_140344098) { uVar3 = 0; } else { uVar3 = puVar6[-2]; } if ((int)uVar3 <= (int)uVar1) { if (puVar6 == (uint *)0x0) { uVar1 = 0; } else if (puVar6 == (uint *)PTR_DAT_140344098) { uVar1 = 0; } else { uVar1 = puVar6[-2]; } } if (((puVar6 != (uint *)PTR_DAT_140344098) && (puVar6 != (uint *)0x0)) && (puVar4 = puVar6 + -2, puVar4 != (uint *)0x0)) { *puVar4 = uVar1; *(undefined1 *)((longlong)(int)uVar1 + 8 + (longlong)puVar4) = 0; } puVar4 = (uint *)*param_1; if ((uint *)*param_1 == (uint *)0x0) { puVar4 = (uint *)PTR_DAT_140344098; } *param_1 = puVar4; if (puVar6 != puVar4) { uVar8 = FUN_14016d8c0(); FUN_14016db50(uVar8); FUN_14004f5a0(param_1); *param_1 = puVar6; if (((puVar6 != (uint *)PTR_DAT_140344098) && (puVar6 != (uint *)0x0)) && (puVar6 != (uint *)0x8)) { puVar6[-1] = puVar6[-1] + 1; } FUN_14016dbe0(uVar8); } if (((puVar6 != (uint *)0x0) && (puVar6 != (uint *)PTR_DAT_140344098)) && (puVar6 + -2 != (uint *)0x0)) { uVar8 = FUN_14016d8c0(); FUN_14016db50(uVar8); puVar4 = puVar6 + -1; *puVar4 = *puVar4 - 1; if (*puVar4 == 0) { FUN_14016d970(puVar6 + -2); } FUN_14016dbe0(uVar8); } return param_1; }