/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x14004c050 FUN_14004c050 * Pseudocode, not original source. */ longlong * FUN_14004c050(longlong *param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) { int *piVar1; undefined *puVar2; int iVar3; int iVar4; undefined *puVar5; int iVar6; undefined *puVar7; undefined *local_res8; undefined8 uVar8; uVar8 = 0xfffffffffffffffe; FUN_14016d8c0(); puVar2 = PTR_DAT_1403440a0; local_res8 = PTR_DAT_1403440a0; iVar3 = FUN_14016d740(param_2); iVar6 = 0; if ((puVar2 != (undefined *)0x0) && (puVar2 != PTR_DAT_1403440a0)) { iVar6 = *(int *)(puVar2 + -8); } iVar4 = iVar3; if (((iVar3 <= iVar6) && (iVar4 = 0, puVar2 != (undefined *)0x0)) && (puVar2 != PTR_DAT_1403440a0) ) { iVar4 = *(int *)(puVar2 + -8); } iVar6 = 1; if (1 < iVar4) { iVar6 = iVar4; } iVar4 = 0; if ((puVar2 != (undefined *)0x0) && (iVar4 = 0, puVar2 != PTR_DAT_1403440a0)) { iVar4 = *(int *)(puVar2 + -8); } if (iVar4 < iVar6) { FUN_14004e770(&local_res8); } FUN_14004e850(&local_res8); puVar2 = local_res8; puVar7 = local_res8; if (local_res8 == (undefined *)0x0) { puVar7 = PTR_DAT_1403440a0; } FUN_14016d770(puVar7,param_2,iVar3,param_4,uVar8); puVar7 = puVar2; if (puVar2 == (undefined *)0x0) { puVar7 = PTR_DAT_1403440a0; } iVar3 = FUN_14016d740(puVar7); puVar7 = PTR_DAT_1403440a0; iVar6 = 0; if (0 < iVar3) { iVar6 = iVar3; } iVar3 = 0; if ((puVar2 != (undefined *)0x0) && (iVar3 = 0, puVar2 != PTR_DAT_1403440a0)) { iVar3 = *(int *)(puVar2 + -8); } if ((iVar3 <= iVar6) && (iVar6 = 0, puVar2 != (undefined *)0x0)) { if (puVar2 == PTR_DAT_1403440a0) goto LAB_14004c170; iVar6 = *(int *)(puVar2 + -8); } if (((puVar2 != PTR_DAT_1403440a0) && (puVar2 != (undefined *)0x0)) && ((int *)(puVar2 + -8) != (int *)0x0)) { *(int *)(puVar2 + -8) = iVar6; *(undefined2 *)(puVar2 + (longlong)iVar6 * 2) = 0; } LAB_14004c170: puVar5 = (undefined *)*param_1; if ((undefined *)*param_1 == (undefined *)0x0) { puVar5 = puVar7; } *param_1 = (longlong)puVar5; if (puVar2 != puVar5) { uVar8 = FUN_14016d8c0(); FUN_14016db50(uVar8); FUN_14004eb70(param_1); *param_1 = (longlong)puVar2; if (((puVar2 != PTR_DAT_1403440a0) && (puVar2 != (undefined *)0x0)) && (puVar2 != (undefined *)0x8)) { *(int *)(puVar2 + -4) = *(int *)(puVar2 + -4) + 1; } FUN_14016dbe0(uVar8); puVar7 = PTR_DAT_1403440a0; } if (((puVar2 != (undefined *)0x0) && (puVar2 != puVar7)) && (puVar2 + -8 != (undefined *)0x0)) { uVar8 = FUN_14016d8c0(); FUN_14016db50(uVar8); piVar1 = (int *)(puVar2 + -4); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_14016d970(puVar2 + -8); } FUN_14016dbe0(uVar8); } return param_1; }