decomp DBCServer_Release and inspect/document database
This commit is contained in:
parent
4b267cbe05
commit
7834b98bf0
28222 changed files with 843300 additions and 144 deletions
374
decomp/DBCServer_Release_x64/full/functions/0x1401a16d0.c
Normal file
374
decomp/DBCServer_Release_x64/full/functions/0x1401a16d0.c
Normal file
|
|
@ -0,0 +1,374 @@
|
|||
/* 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;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue