374 lines
10 KiB
C
374 lines
10 KiB
C
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
|
* Ghidra 12.1.2 decompiler output for 0x1401a16d0 FUN_1401a16d0
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __chkstk replaced with injection: alloca_probe */
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
ulonglong FUN_1401a16d0(longlong *param_1,undefined8 param_2,longlong param_3,undefined4 *param_4,
|
|
undefined4 param_5)
|
|
|
|
{
|
|
int *piVar1;
|
|
undefined *puVar2;
|
|
byte bVar3;
|
|
int iVar4;
|
|
uint uVar5;
|
|
uint uVar6;
|
|
uint *puVar7;
|
|
undefined8 uVar8;
|
|
ulonglong uVar9;
|
|
ulonglong uVar10;
|
|
uint *puVar11;
|
|
undefined4 uVar12;
|
|
uint uVar13;
|
|
ulonglong uVar14;
|
|
undefined *puVar15;
|
|
undefined1 auStack_1b18 [32];
|
|
undefined ***local_1af8;
|
|
uint *local_1ae8;
|
|
longlong *local_1ae0;
|
|
int local_1ad8 [2];
|
|
undefined1 local_1ad0 [8];
|
|
longlong local_1ac8;
|
|
ulonglong local_1ac0;
|
|
int local_1ab8;
|
|
int local_1ab4;
|
|
undefined1 local_1aa8 [8];
|
|
longlong local_1aa0;
|
|
ulonglong local_1a98;
|
|
undefined4 local_1a90;
|
|
int local_1a8c;
|
|
undefined4 *local_1a80;
|
|
longlong local_1a78;
|
|
undefined *local_1a70;
|
|
undefined8 local_1a68;
|
|
undefined1 local_1a60;
|
|
undefined **local_1a58;
|
|
undefined8 local_1a50;
|
|
undefined8 local_1a48;
|
|
undefined8 local_1a40;
|
|
undefined8 local_1a38;
|
|
undefined8 local_1a30;
|
|
undefined1 local_1a28 [8];
|
|
longlong local_1a20;
|
|
longlong local_1a18;
|
|
undefined4 local_1a10;
|
|
int local_1a0c;
|
|
undefined1 local_1a00 [136];
|
|
undefined1 local_1978 [3200];
|
|
undefined1 *local_cf8;
|
|
undefined4 local_cf0;
|
|
undefined4 local_cec;
|
|
undefined1 local_ce8 [3216];
|
|
ulonglong local_58;
|
|
undefined8 uStack_48;
|
|
|
|
uStack_48 = 0x1401a16ef;
|
|
local_1a30 = 0xfffffffffffffffe;
|
|
local_58 = DAT_1403463c0 ^ (ulonglong)auStack_1b18;
|
|
local_1a80 = param_4;
|
|
local_1a78 = param_3;
|
|
if ((*(int *)(param_3 + 0x28) == 0) || (iVar4 = FUN_14019b440(param_2), iVar4 < 0x33))
|
|
goto LAB_1401a1d86;
|
|
FUN_14016b440(local_1aa8);
|
|
FUN_14016abe0(local_1aa8);
|
|
FUN_14016b820(local_1aa8,param_2);
|
|
if (local_1aa0 == 0) {
|
|
uVar12 = local_1a90;
|
|
if (local_1a98 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
}
|
|
else {
|
|
uVar12 = *(undefined4 *)(local_1aa0 + 0x18);
|
|
}
|
|
FUN_14016b440(local_1ad0);
|
|
FUN_14016abe0(local_1ad0);
|
|
FUN_14016b5a0(local_1ad0,uVar12);
|
|
local_1ad8[0] = FUN_1401c3b40(uVar12);
|
|
uVar9 = 0;
|
|
uVar14 = local_1a98;
|
|
if (local_1a98 == 0) {
|
|
if (local_1aa0 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
uVar14 = uVar9;
|
|
if (*(int *)(local_1aa0 + 0x18) != 0) {
|
|
uVar14 = *(ulonglong *)(local_1aa0 + 0x10);
|
|
}
|
|
}
|
|
uVar10 = local_1ac0;
|
|
if (local_1ac0 == 0) {
|
|
if (local_1ac8 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
uVar10 = uVar9;
|
|
if (*(int *)(local_1ac8 + 0x18) != 0) {
|
|
uVar10 = *(ulonglong *)(local_1ac8 + 0x10);
|
|
}
|
|
}
|
|
iVar4 = FUN_1401c39b0(uVar10,local_1ad8,uVar14,uVar12);
|
|
if (iVar4 == 0) {
|
|
uVar5 = FUN_14019b440(param_2);
|
|
if (local_1ad8[0] + 9U < uVar5) {
|
|
FUN_14016b5a0(local_1ad0);
|
|
FUN_14016b440(local_1a28);
|
|
FUN_14016b0c0(local_1a28,local_1a00,0x80);
|
|
FUN_14004eef0(local_1a28,0x26);
|
|
if (local_1ac8 == 0) {
|
|
iVar4 = local_1ab8;
|
|
if (local_1ac0 == 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d1e0();
|
|
}
|
|
}
|
|
else {
|
|
iVar4 = *(int *)(local_1ac8 + 0x18);
|
|
}
|
|
FUN_14016cac0(local_1a28,(longlong)iVar4);
|
|
iVar4 = FUN_14019b440(param_2);
|
|
FUN_14016cac0(local_1a28,(longlong)iVar4);
|
|
local_cec = 200;
|
|
local_cf0 = 0;
|
|
local_cf8 = local_1978;
|
|
FUN_14016e080(local_ce8,local_1a28);
|
|
FUN_14016ded0(local_1978,local_ce8);
|
|
FUN_14016ddc0(local_ce8);
|
|
FUN_14016e080(local_ce8,local_1ad0);
|
|
FUN_14016ded0(local_1978,local_ce8);
|
|
FUN_14016ddc0(local_ce8);
|
|
local_1af8 = (undefined ***)CONCAT44(local_1af8._4_4_,param_5);
|
|
bVar3 = FUN_14019ff40(param_1,local_1978,local_1a78,param_4);
|
|
FUN_14016ddc0(local_1978);
|
|
local_1ae0 = &local_1a20;
|
|
FUN_14016d0e0(&local_1a20);
|
|
if (local_1a18 != 0) {
|
|
if (local_1a0c < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_1a10 = 0;
|
|
}
|
|
local_1ae0 = &local_1ac8;
|
|
FUN_14016d0e0(&local_1ac8);
|
|
if (local_1ac0 != 0) {
|
|
if (local_1ab4 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_1ab8 = 0;
|
|
}
|
|
local_1ae0 = &local_1aa0;
|
|
FUN_14016d0e0(&local_1aa0);
|
|
if ((local_1a98 != 0) && (local_1a8c < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
return (ulonglong)bVar3;
|
|
}
|
|
local_1ae0 = &local_1ac8;
|
|
FUN_14016d0e0(&local_1ac8);
|
|
if (local_1ac0 != 0) {
|
|
if (local_1ab4 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_1ab8 = 0;
|
|
}
|
|
local_1ae0 = &local_1aa0;
|
|
FUN_14016d0e0(&local_1aa0);
|
|
if ((local_1a98 != 0) && (local_1a8c < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
goto LAB_1401a1d86;
|
|
}
|
|
FUN_14016d8c0();
|
|
local_1a70 = PTR_DAT_1403440a0;
|
|
FUN_14004c020(&local_1a70,L"Packet compression failed! Error code=%d",iVar4);
|
|
puVar2 = local_1a70;
|
|
puVar15 = local_1a70;
|
|
if (local_1a70 == (undefined *)0x0) {
|
|
puVar15 = PTR_DAT_1403440a0;
|
|
}
|
|
FUN_14016d8c0();
|
|
local_1ae8 = (uint *)PTR_DAT_1403440a0;
|
|
uVar5 = FUN_14016d740(puVar15);
|
|
if ((local_1ae8 != (uint *)0x0) && (uVar9 = 0, local_1ae8 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar9 = (ulonglong)local_1ae8[-2];
|
|
}
|
|
uVar6 = uVar5;
|
|
if ((((int)uVar5 <= (int)uVar9) && (uVar6 = 0, local_1ae8 != (uint *)0x0)) &&
|
|
(uVar6 = 0, local_1ae8 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar6 = local_1ae8[-2];
|
|
}
|
|
uVar13 = 1;
|
|
if (1 < (int)uVar6) {
|
|
uVar13 = uVar6;
|
|
}
|
|
if (local_1ae8 == (uint *)0x0) {
|
|
uVar6 = 0;
|
|
}
|
|
else if (local_1ae8 == (uint *)PTR_DAT_1403440a0) {
|
|
uVar6 = 0;
|
|
}
|
|
else {
|
|
uVar6 = local_1ae8[-2];
|
|
}
|
|
if ((int)uVar6 < (int)uVar13) {
|
|
if (local_1ae8 == (uint *)0x0) {
|
|
local_1ae8 = (uint *)PTR_DAT_1403440a0;
|
|
}
|
|
if ((int)uVar13 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
if (uVar13 == 0) {
|
|
FUN_14004eb70(&local_1ae8);
|
|
}
|
|
else {
|
|
if (local_1ae8 == (uint *)0x0) {
|
|
uVar6 = 0;
|
|
}
|
|
else if (local_1ae8 == (uint *)PTR_DAT_1403440a0) {
|
|
uVar6 = 0;
|
|
}
|
|
else {
|
|
uVar6 = local_1ae8[-2];
|
|
}
|
|
if (uVar13 != uVar6) {
|
|
puVar7 = (uint *)FUN_14016d940((longlong)(int)uVar13 * 2 + 10);
|
|
if (puVar7 != (uint *)0x0) {
|
|
*puVar7 = 0;
|
|
puVar7[1] = 1;
|
|
}
|
|
*puVar7 = uVar13;
|
|
if (local_1ae8 == (uint *)0x0) {
|
|
uVar6 = 0;
|
|
}
|
|
else if (local_1ae8 == (uint *)PTR_DAT_1403440a0) {
|
|
uVar6 = 0;
|
|
}
|
|
else {
|
|
uVar6 = local_1ae8[-2];
|
|
}
|
|
puVar11 = (uint *)PTR_DAT_1403440a0;
|
|
if ((int)uVar13 < (int)uVar6) {
|
|
LAB_1401a1955:
|
|
if (local_1ae8 != (uint *)0x0) {
|
|
puVar11 = local_1ae8;
|
|
}
|
|
}
|
|
else {
|
|
if (local_1ae8 != (uint *)0x0) {
|
|
if (local_1ae8 == (uint *)PTR_DAT_1403440a0) {
|
|
uVar13 = 0;
|
|
}
|
|
else {
|
|
uVar13 = local_1ae8[-2];
|
|
}
|
|
goto LAB_1401a1955;
|
|
}
|
|
uVar13 = 0;
|
|
}
|
|
FUN_14016d770(puVar7 + 2,puVar11,uVar13);
|
|
FUN_14004eb70(&local_1ae8);
|
|
param_4 = local_1a80;
|
|
local_1ae8 = puVar7 + 2;
|
|
}
|
|
}
|
|
}
|
|
FUN_14004e850(&local_1ae8);
|
|
puVar7 = local_1ae8;
|
|
if (local_1ae8 == (uint *)0x0) {
|
|
puVar7 = (uint *)PTR_DAT_1403440a0;
|
|
}
|
|
FUN_14016d770(puVar7,puVar15,uVar5);
|
|
puVar7 = local_1ae8;
|
|
if (local_1ae8 == (uint *)0x0) {
|
|
puVar7 = (uint *)PTR_DAT_1403440a0;
|
|
}
|
|
uVar6 = FUN_14016d740(puVar7);
|
|
uVar13 = 0;
|
|
uVar5 = 0;
|
|
if (0 < (int)uVar6) {
|
|
uVar5 = uVar6;
|
|
}
|
|
uVar6 = uVar13;
|
|
if ((local_1ae8 != (uint *)0x0) && (local_1ae8 != (uint *)PTR_DAT_1403440a0)) {
|
|
uVar6 = local_1ae8[-2];
|
|
}
|
|
if (((int)uVar5 < (int)uVar6) || (uVar5 = uVar13, local_1ae8 == (uint *)0x0)) {
|
|
LAB_1401a19f0:
|
|
if (((local_1ae8 != (uint *)PTR_DAT_1403440a0) && (local_1ae8 != (uint *)0x0)) &&
|
|
(local_1ae8 + -2 != (uint *)0x0)) {
|
|
local_1ae8[-2] = uVar5;
|
|
*(undefined2 *)((longlong)local_1ae8 + (longlong)(int)uVar5 * 2) = 0;
|
|
}
|
|
}
|
|
else if (local_1ae8 != (uint *)PTR_DAT_1403440a0) {
|
|
uVar5 = local_1ae8[-2];
|
|
goto LAB_1401a19f0;
|
|
}
|
|
local_1a50 = 0;
|
|
local_1a48 = 0;
|
|
local_1a40 = 0;
|
|
local_1a38 = 0;
|
|
local_1a58 = Proud::ByteArray::vftable;
|
|
local_1af8 = &local_1a58;
|
|
uVar8 = FUN_140198f80(&local_1ae0,0x27,*param_4,&local_1ae8);
|
|
(**(code **)(*param_1 + 0x80))(param_1,uVar8);
|
|
FUN_14019a9e0(&local_1a58);
|
|
puVar7 = local_1ae8;
|
|
if (((local_1ae8 != (uint *)0x0) && (local_1ae8 != (uint *)PTR_DAT_1403440a0)) &&
|
|
(puVar11 = local_1ae8 + -2, puVar11 != (uint *)0x0)) {
|
|
uVar8 = FUN_14016d8c0();
|
|
local_1a68 = uVar8;
|
|
FUN_14016db50(uVar8);
|
|
local_1a60 = 1;
|
|
puVar7 = puVar7 + -1;
|
|
*puVar7 = *puVar7 - 1;
|
|
if (*puVar7 == 0) {
|
|
FUN_14016d970(puVar11);
|
|
}
|
|
FUN_14016dbe0(uVar8);
|
|
}
|
|
if (((puVar2 != (undefined *)0x0) && (puVar2 != PTR_DAT_1403440a0)) &&
|
|
(puVar2 + -8 != (undefined *)0x0)) {
|
|
uVar8 = FUN_14016d8c0();
|
|
local_1a68 = uVar8;
|
|
FUN_14016db50(uVar8);
|
|
local_1a60 = 1;
|
|
piVar1 = (int *)(puVar2 + -4);
|
|
*piVar1 = *piVar1 + -1;
|
|
if (*piVar1 == 0) {
|
|
FUN_14016d970(puVar2 + -8);
|
|
}
|
|
FUN_14016dbe0(uVar8);
|
|
}
|
|
local_1ae0 = &local_1ac8;
|
|
FUN_14016d0e0(&local_1ac8);
|
|
if (local_1ac0 != 0) {
|
|
if (local_1ab4 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
local_1ab8 = 0;
|
|
}
|
|
local_1ae0 = &local_1aa0;
|
|
FUN_14016d0e0(&local_1aa0);
|
|
param_4 = local_1a80;
|
|
if ((local_1a98 != 0) && (local_1a8c < 0)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14016d6b0();
|
|
}
|
|
LAB_1401a1d86:
|
|
local_1af8 = (undefined ***)CONCAT44(local_1af8._4_4_,param_5);
|
|
uVar9 = FUN_14019ff40(param_1,param_2,local_1a78,param_4);
|
|
return uVar9;
|
|
}
|
|
|