280 lines
8.3 KiB
C
280 lines
8.3 KiB
C
/* 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;
|
|
}
|
|
|