/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401d51c0 FUN_1401d51c0 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_1401d51c0(longlong param_1,undefined4 param_2,wchar_t *param_3,undefined8 param_4) { longlong *plVar1; int iVar2; int iVar3; int *piVar4; undefined8 *puVar5; undefined8 uVar6; __time64_t _Var7; undefined *puVar8; undefined *puVar9; int *piVar10; int iVar11; undefined *puVar12; int iVar13; undefined8 local_res20; undefined1 auStack_918 [32]; int **local_8f8; int *local_8e8; undefined4 local_8e0 [2]; undefined *local_8d8; undefined1 local_8d0; undefined8 local_8c0; undefined1 local_8b8; undefined8 *local_8b0; undefined8 *local_8a8; undefined1 local_8a0; int *local_898; undefined4 local_890; __time64_t local_888; undefined8 local_880; wchar_t local_878 [1040]; ulonglong local_58; local_880 = 0xfffffffffffffffe; local_58 = DAT_1403463c0 ^ (ulonglong)auStack_918; local_res20 = param_4; local_8e0[0] = param_2; FUN_14016d8c0(); local_8e8 = (int *)PTR_DAT_1403440a0; if (param_3 == (wchar_t *)0x0) { /* WARNING: Subroutine does not return */ FUN_14004dc60(0x80070057); } iVar2 = vswprintf_s(local_878,0x400,param_3,(va_list)&local_res20); iVar13 = 0; iVar11 = 0; if ((local_8e8 != (int *)0x0) && (iVar11 = 0, local_8e8 != (int *)PTR_DAT_1403440a0)) { iVar11 = local_8e8[-2]; } iVar3 = iVar2; if (((iVar2 <= iVar11) && (iVar3 = iVar13, local_8e8 != (int *)0x0)) && (local_8e8 != (int *)PTR_DAT_1403440a0)) { iVar3 = local_8e8[-2]; } iVar11 = 1; if (1 < iVar3) { iVar11 = iVar3; } iVar3 = iVar13; if ((local_8e8 != (int *)0x0) && (local_8e8 != (int *)PTR_DAT_1403440a0)) { iVar3 = local_8e8[-2]; } if (iVar3 < iVar11) { if (local_8e8 == (int *)0x0) { local_8e8 = (int *)PTR_DAT_1403440a0; } if (iVar11 < 0) { /* WARNING: Subroutine does not return */ FUN_14016d6b0(); } if (iVar11 == 0) { FUN_14004eb70(&local_8e8); } else { iVar3 = iVar13; if ((local_8e8 != (int *)0x0) && (local_8e8 != (int *)PTR_DAT_1403440a0)) { iVar3 = local_8e8[-2]; } if (iVar11 != iVar3) { piVar4 = (int *)FUN_14016d940((longlong)iVar11 * 2 + 10); if (piVar4 != (int *)0x0) { *piVar4 = 0; piVar4[1] = 1; } *piVar4 = iVar11; iVar3 = iVar13; if ((local_8e8 != (int *)0x0) && (local_8e8 != (int *)PTR_DAT_1403440a0)) { iVar3 = local_8e8[-2]; } piVar10 = (int *)PTR_DAT_1403440a0; if (iVar11 < iVar3) { LAB_1401d5326: if (local_8e8 != (int *)0x0) { piVar10 = local_8e8; } } else { iVar11 = iVar13; if (local_8e8 != (int *)0x0) { if (local_8e8 != (int *)PTR_DAT_1403440a0) { iVar11 = local_8e8[-2]; } goto LAB_1401d5326; } } FUN_14016d770(piVar4 + 2,piVar10,iVar11); FUN_14004eb70(&local_8e8); local_8e8 = piVar4 + 2; } } } FUN_14004e850(&local_8e8); piVar4 = local_8e8; if (local_8e8 == (int *)0x0) { piVar4 = (int *)PTR_DAT_1403440a0; } FUN_14016d770(piVar4,local_878,iVar2); piVar4 = local_8e8; if (local_8e8 == (int *)0x0) { piVar4 = (int *)PTR_DAT_1403440a0; } iVar2 = FUN_14016d740(piVar4); iVar11 = 0; if (0 < iVar2) { iVar11 = iVar2; } iVar2 = iVar13; if ((local_8e8 != (int *)0x0) && (local_8e8 != (int *)PTR_DAT_1403440a0)) { iVar2 = local_8e8[-2]; } if ((iVar2 <= iVar11) && (iVar11 = iVar13, local_8e8 != (int *)0x0)) { if (local_8e8 == (int *)PTR_DAT_1403440a0) goto LAB_1401d53e8; iVar11 = local_8e8[-2]; } if (((local_8e8 != (int *)PTR_DAT_1403440a0) && (local_8e8 != (int *)0x0)) && (local_8e8 + -2 != (int *)0x0)) { local_8e8[-2] = iVar11; *(undefined2 *)((longlong)local_8e8 + (longlong)iVar11 * 2) = 0; } LAB_1401d53e8: if (*(char *)(param_1 + 0x1790) != '\0') { local_8f8 = &local_8e8; (**(code **)(*(longlong *)(param_1 + 0x1818) + 0xb0)) ((longlong *)(param_1 + 0x1818),1,&DAT_14034c4b0,local_8e0); } if (*(int *)(param_1 + 0x6c8) != 0) { (**(code **)(*(longlong *)(param_1 + 0x78) + 0x10))(); FUN_14016d8c0(); puVar8 = PTR_DAT_1403440a0; local_890 = 2; local_898 = (int *)PTR_DAT_1403440a0; piVar4 = (int *)PTR_DAT_1403440a0; if (local_8e8 != (int *)PTR_DAT_1403440a0) { puVar5 = (undefined8 *)FUN_14016d8c0(); local_8a8 = puVar5; FUN_14016db50(puVar5); local_8a0 = 1; if (((puVar8 != (undefined *)0x0) && (puVar8 != PTR_DAT_1403440a0)) && (puVar8 + -8 != (undefined *)0x0)) { uVar6 = FUN_14016d8c0(); local_8c0 = uVar6; FUN_14016db50(uVar6); local_8b8 = 1; piVar4 = (int *)(puVar8 + -4); *piVar4 = *piVar4 + -1; if (*piVar4 == 0) { FUN_14016d970(puVar8 + -8); } FUN_14016dbe0(uVar6); } piVar4 = local_8e8; local_898 = local_8e8; if (((local_8e8 != (int *)PTR_DAT_1403440a0) && (local_8e8 != (int *)0x0)) && (local_8e8 != (int *)0x8)) { local_8e8[-1] = local_8e8[-1] + 1; } FUN_14016dbe0(puVar5); } _Var7 = _time64((__time64_t *)0x0); uVar6 = *(undefined8 *)(param_1 + 0x17c0); plVar1 = *(longlong **)(param_1 + 0x17b0); local_8c0 = uVar6; local_888 = _Var7; if (plVar1 == (longlong *)0x0) { puVar5 = (undefined8 *)FUN_14016d940(0x28); } else { puVar5 = (undefined8 *)(**(code **)(*plVar1 + 8))(plVar1,0x28); } local_8b0 = puVar5; local_8a8 = puVar5; if (puVar5 != (undefined8 *)0x0) { FUN_14016d8c0(); puVar8 = PTR_DAT_1403440a0; puVar5[2] = PTR_DAT_1403440a0; if (puVar8 == (undefined *)0x0) { puVar5[2] = PTR_DAT_1403440a0; } if (piVar4 != (int *)puVar5[2]) { puVar8 = (undefined *)FUN_14016d8c0(); local_8d8 = puVar8; FUN_14016db50(puVar8); local_8d0 = 1; FUN_14004eb70(puVar5 + 2); puVar5[2] = piVar4; if (((piVar4 != (int *)PTR_DAT_1403440a0) && (piVar4 != (int *)0x0)) && (piVar4 != (int *)0x8)) { piVar4[-1] = piVar4[-1] + 1; } FUN_14016dbe0(puVar8); uVar6 = local_8c0; } *(undefined4 *)(puVar5 + 3) = 2; puVar5[4] = _Var7; } puVar5[1] = uVar6; *puVar5 = 0; *(longlong *)(param_1 + 0x17c8) = *(longlong *)(param_1 + 0x17c8) + 1; if (*(undefined8 **)(param_1 + 0x17c0) == (undefined8 *)0x0) { *(undefined8 **)(param_1 + 0x17b8) = puVar5; } else { **(undefined8 **)(param_1 + 0x17c0) = puVar5; } *(undefined8 **)(param_1 + 0x17c0) = puVar5; if ((((ulonglong)*(uint *)(param_1 + 0x6c8) < *(ulonglong *)(param_1 + 0x17c8)) && (FUN_1401d3d60(param_1 + 0x17b0,&local_8d8), puVar8 = local_8d8, local_8d8 != (undefined *)0x0)) && ((local_8d8 != PTR_DAT_1403440a0 && (puVar12 = local_8d8 + -8, puVar12 != (undefined *)0x0))) ) { puVar9 = (undefined *)FUN_14016d8c0(); local_8d8 = puVar9; FUN_14016db50(puVar9); local_8d0 = 1; piVar10 = (int *)(puVar8 + -4); *piVar10 = *piVar10 + -1; if (*piVar10 == 0) { FUN_14016d970(puVar12); } FUN_14016dbe0(puVar9); } if (((piVar4 != (int *)0x0) && (piVar4 != (int *)PTR_DAT_1403440a0)) && (piVar4 + -2 != (int *)0x0)) { puVar8 = (undefined *)FUN_14016d8c0(); local_8d8 = puVar8; FUN_14016db50(puVar8); local_8d0 = 1; piVar10 = piVar4 + -1; *piVar10 = *piVar10 + -1; if (*piVar10 == 0) { FUN_14016d970(piVar4 + -2); } FUN_14016dbe0(puVar8); } } piVar4 = local_8e8; if (((local_8e8 != (int *)0x0) && (local_8e8 != (int *)PTR_DAT_1403440a0)) && (piVar10 = local_8e8 + -2, piVar10 != (int *)0x0)) { puVar8 = (undefined *)FUN_14016d8c0(); local_8d8 = puVar8; FUN_14016db50(puVar8); local_8d0 = 1; piVar4 = piVar4 + -1; *piVar4 = *piVar4 + -1; if (*piVar4 == 0) { FUN_14016d970(piVar10); } FUN_14016dbe0(puVar8); } return; }