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
371
decomp/DBCServer_Release_x64/full/functions/0x1401e0470.c
Normal file
371
decomp/DBCServer_Release_x64/full/functions/0x1401e0470.c
Normal file
|
|
@ -0,0 +1,371 @@
|
|||
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
||||
* Ghidra 12.1.2 decompiler output for 0x1401e0470 FUN_1401e0470
|
||||
* Pseudocode, not original source. */
|
||||
|
||||
void FUN_1401e0470(longlong *param_1,double param_2,undefined8 param_3)
|
||||
|
||||
{
|
||||
longlong *plVar1;
|
||||
int *piVar2;
|
||||
longlong lVar3;
|
||||
undefined8 *puVar4;
|
||||
double dVar5;
|
||||
bool bVar6;
|
||||
DWORD DVar7;
|
||||
DWORD DVar8;
|
||||
undefined8 uVar9;
|
||||
undefined *puVar10;
|
||||
longlong *plVar11;
|
||||
undefined8 uVar12;
|
||||
char cVar13;
|
||||
undefined *puVar14;
|
||||
undefined *puVar15;
|
||||
undefined *local_res10;
|
||||
undefined8 local_res18;
|
||||
undefined *local_res20;
|
||||
undefined *local_168;
|
||||
undefined8 local_160;
|
||||
char local_158;
|
||||
longlong *local_150;
|
||||
undefined1 local_148;
|
||||
undefined *local_140;
|
||||
undefined *local_138;
|
||||
undefined *local_130;
|
||||
undefined *local_128;
|
||||
undefined *local_120;
|
||||
undefined *local_118;
|
||||
undefined8 local_110;
|
||||
undefined1 local_108;
|
||||
undefined8 local_100;
|
||||
undefined1 local_f8;
|
||||
undefined8 local_f0;
|
||||
undefined1 local_e8;
|
||||
undefined8 local_e0;
|
||||
undefined8 local_d8;
|
||||
undefined1 local_d0;
|
||||
undefined8 local_c8;
|
||||
undefined1 local_c0;
|
||||
undefined8 local_b8;
|
||||
undefined1 local_b0;
|
||||
undefined8 local_a8;
|
||||
undefined1 local_a0;
|
||||
undefined8 local_98;
|
||||
undefined1 local_90;
|
||||
undefined *local_88;
|
||||
undefined1 local_80;
|
||||
undefined8 local_78;
|
||||
undefined1 local_70;
|
||||
|
||||
local_e0 = 0xfffffffffffffffe;
|
||||
local_150 = param_1 + 0x95;
|
||||
local_res18 = param_3;
|
||||
FUN_14016db50();
|
||||
local_148 = 1;
|
||||
(**(code **)(param_1[1] + 0x18))();
|
||||
bVar6 = false;
|
||||
puVar15 = (undefined *)0x0;
|
||||
puVar14 = puVar15;
|
||||
if (param_1[0xad] != 0) {
|
||||
puVar14 = *(undefined **)(param_1[0xad] + 0x38);
|
||||
}
|
||||
FUN_14016db50(puVar14 + 0x10);
|
||||
puVar10 = puVar15;
|
||||
if (param_1[0xad] != 0) {
|
||||
puVar10 = *(undefined **)(param_1[0xad] + 0x38);
|
||||
}
|
||||
*(int *)(puVar10 + 0x288) = *(int *)(puVar10 + 0x288) + 1;
|
||||
LOCK();
|
||||
*(int *)(param_1 + 0xa2) = (int)param_1[0xa2] + 1;
|
||||
UNLOCK();
|
||||
FUN_14016dbe0(puVar14 + 0x10);
|
||||
DVar7 = GetTickCount();
|
||||
dVar5 = param_2 * 2.0 * 1000.0;
|
||||
if (dVar5 <= 100000.0) {
|
||||
dVar5 = 100000.0;
|
||||
}
|
||||
if (((char)param_1[0x2e4] != '\0') || ((int)param_1[0xcb] != 0)) {
|
||||
puVar14 = puVar15;
|
||||
if (param_1[0xad] != 0) {
|
||||
puVar14 = *(undefined **)(param_1[0xad] + 0x38);
|
||||
}
|
||||
puVar14 = puVar14 + 0x10;
|
||||
local_88 = puVar14;
|
||||
FUN_14016db50(puVar14);
|
||||
local_80 = 1;
|
||||
FUN_1401d4c70(param_1 + -0xe,0,&DAT_140290e50,(int)param_1[0x2a1]);
|
||||
FUN_14016dbe0(puVar14);
|
||||
}
|
||||
plVar1 = param_1 + -0xe;
|
||||
puVar14 = puVar15;
|
||||
do {
|
||||
uVar9 = (**(code **)(*plVar1 + 0x58))(plVar1);
|
||||
local_160 = uVar9;
|
||||
FUN_14016db50(uVar9);
|
||||
local_158 = '\x01';
|
||||
if (((longlong *)param_1[0xac] == (longlong *)0x0) ||
|
||||
(lVar3 = *(longlong *)param_1[0xac], lVar3 == 0)) {
|
||||
if ((((longlong *)param_1[0x2a0] != (longlong *)0x0) && (*(longlong *)param_1[0x2a0] != 0)) ||
|
||||
(((longlong *)param_1[0x296] != (longlong *)0x0 && (*(longlong *)param_1[0x296] != 0)))) {
|
||||
FUN_14016d8c0();
|
||||
local_140 = PTR_DAT_1403440a0;
|
||||
plVar11 = (longlong *)FUN_14016f6b0(&local_118);
|
||||
puVar14 = (undefined *)*plVar11;
|
||||
if ((undefined *)*plVar11 == (undefined *)0x0) {
|
||||
puVar14 = PTR_DAT_1403440a0;
|
||||
}
|
||||
FUN_14004c020(&local_140,L"Unstability in Disconnect #1! Process=%s",puVar14);
|
||||
if (((local_118 != (undefined *)0x0) && (local_118 != PTR_DAT_1403440a0)) &&
|
||||
(local_118 + -8 != (undefined *)0x0)) {
|
||||
uVar12 = FUN_14016d8c0();
|
||||
local_b8 = uVar12;
|
||||
FUN_14016db50(uVar12);
|
||||
local_b0 = 1;
|
||||
piVar2 = (int *)(local_118 + -4);
|
||||
*piVar2 = *piVar2 + -1;
|
||||
if (*piVar2 == 0) {
|
||||
FUN_14016d970(local_118 + -8);
|
||||
}
|
||||
FUN_14016dbe0(uVar12);
|
||||
}
|
||||
FUN_14016d8c0();
|
||||
puVar14 = local_140;
|
||||
local_168 = PTR_DAT_1403440a0;
|
||||
if (PTR_DAT_1403440a0 == (undefined *)0x0) {
|
||||
local_168 = puVar15;
|
||||
}
|
||||
if (local_140 != PTR_DAT_1403440a0) {
|
||||
uVar12 = FUN_14016d8c0();
|
||||
local_98 = uVar12;
|
||||
FUN_14016db50(uVar12);
|
||||
local_90 = 1;
|
||||
FUN_14004eb70(&local_168);
|
||||
local_168 = puVar14;
|
||||
if (((puVar14 != PTR_DAT_1403440a0) && (puVar14 != (undefined *)0x0)) &&
|
||||
(puVar14 != (undefined *)0x8)) {
|
||||
*(int *)(puVar14 + -4) = *(int *)(puVar14 + -4) + 1;
|
||||
}
|
||||
FUN_14016dbe0(uVar12);
|
||||
}
|
||||
FUN_1401be230(&local_168);
|
||||
if (((puVar14 != (undefined *)0x0) && (puVar14 != PTR_DAT_1403440a0)) &&
|
||||
(puVar14 + -8 != (undefined *)0x0)) {
|
||||
uVar12 = FUN_14016d8c0();
|
||||
local_78 = uVar12;
|
||||
FUN_14016db50(uVar12);
|
||||
local_70 = 1;
|
||||
piVar2 = (int *)(puVar14 + -4);
|
||||
*piVar2 = *piVar2 + -1;
|
||||
if (*piVar2 == 0) {
|
||||
FUN_14016d970(puVar14 + -8);
|
||||
}
|
||||
FUN_14016dbe0(uVar12);
|
||||
}
|
||||
}
|
||||
FUN_1401dd3e0(plVar1,1);
|
||||
FUN_14016dbe0(uVar9);
|
||||
LAB_1401e0c5d:
|
||||
FUN_14016dbe0(local_150);
|
||||
return;
|
||||
}
|
||||
if ((*(int *)(lVar3 + 0x100) == 5) && (param_1[0x2d5] == 0)) {
|
||||
FUN_1401dd3e0(plVar1,1);
|
||||
FUN_14016dbe0(local_160);
|
||||
goto LAB_1401e0c5d;
|
||||
}
|
||||
if (DAT_14034c8c0 != '\0') {
|
||||
FUN_1401dd3e0(plVar1,1);
|
||||
FUN_14016dbe0(local_160);
|
||||
goto LAB_1401e0c5d;
|
||||
}
|
||||
puVar10 = puVar15;
|
||||
if (param_1[0xad] != 0) {
|
||||
puVar10 = *(undefined **)(param_1[0xad] + 0x38);
|
||||
}
|
||||
if (*(longlong *)(puVar10 + 0x2b8) == 0) {
|
||||
puVar14 = puVar15;
|
||||
if ((undefined8 *)param_1[0xac] != (undefined8 *)0x0) {
|
||||
puVar14 = *(undefined **)param_1[0xac];
|
||||
}
|
||||
FUN_1401ea690(puVar14,5);
|
||||
FUN_14016d8c0();
|
||||
local_138 = PTR_DAT_1403440a0;
|
||||
plVar11 = (longlong *)FUN_14016f6b0(&local_128);
|
||||
puVar14 = (undefined *)*plVar11;
|
||||
if ((undefined *)*plVar11 == (undefined *)0x0) {
|
||||
puVar14 = PTR_DAT_1403440a0;
|
||||
}
|
||||
FUN_14004c020(&local_138,L"Unstability in Disconnect #2! Process=%s",puVar14);
|
||||
if (((local_128 != (undefined *)0x0) && (local_128 != PTR_DAT_1403440a0)) &&
|
||||
(local_128 + -8 != (undefined *)0x0)) {
|
||||
uVar9 = FUN_14016d8c0();
|
||||
local_100 = uVar9;
|
||||
FUN_14016db50(uVar9);
|
||||
local_f8 = 1;
|
||||
piVar2 = (int *)(local_128 + -4);
|
||||
*piVar2 = *piVar2 + -1;
|
||||
if (*piVar2 == 0) {
|
||||
FUN_14016d970(local_128 + -8);
|
||||
}
|
||||
FUN_14016dbe0(uVar9);
|
||||
}
|
||||
FUN_14016d8c0();
|
||||
puVar14 = local_138;
|
||||
local_res20 = PTR_DAT_1403440a0;
|
||||
if (PTR_DAT_1403440a0 == (undefined *)0x0) {
|
||||
local_res20 = puVar15;
|
||||
}
|
||||
if (local_138 != PTR_DAT_1403440a0) {
|
||||
uVar9 = FUN_14016d8c0();
|
||||
local_f0 = uVar9;
|
||||
FUN_14016db50(uVar9);
|
||||
local_e8 = 1;
|
||||
FUN_14004eb70(&local_res20);
|
||||
local_res20 = puVar14;
|
||||
if (((puVar14 != PTR_DAT_1403440a0) && (puVar14 != (undefined *)0x0)) &&
|
||||
(puVar14 != (undefined *)0x8)) {
|
||||
*(int *)(puVar14 + -4) = *(int *)(puVar14 + -4) + 1;
|
||||
}
|
||||
FUN_14016dbe0(uVar9);
|
||||
}
|
||||
FUN_1401be230(&local_res20);
|
||||
if (((puVar14 != (undefined *)0x0) && (puVar14 != PTR_DAT_1403440a0)) &&
|
||||
(puVar14 + -8 != (undefined *)0x0)) {
|
||||
uVar9 = FUN_14016d8c0();
|
||||
local_d8 = uVar9;
|
||||
FUN_14016db50(uVar9);
|
||||
local_d0 = 1;
|
||||
piVar2 = (int *)(puVar14 + -4);
|
||||
*piVar2 = *piVar2 + -1;
|
||||
if (*piVar2 == 0) {
|
||||
FUN_14016d970(puVar14 + -8);
|
||||
}
|
||||
FUN_14016dbe0(uVar9);
|
||||
}
|
||||
FUN_1401dd3e0(plVar1,1);
|
||||
FUN_14016dbe0(local_160);
|
||||
goto LAB_1401e0c5d;
|
||||
}
|
||||
DVar8 = GetTickCount();
|
||||
if (dVar5 < (double)(DVar8 - DVar7)) {
|
||||
FUN_14016d8c0();
|
||||
local_130 = PTR_DAT_1403440a0;
|
||||
plVar11 = (longlong *)FUN_14016f6b0(&local_120);
|
||||
puVar14 = (undefined *)*plVar11;
|
||||
if ((undefined *)*plVar11 == (undefined *)0x0) {
|
||||
puVar14 = PTR_DAT_1403440a0;
|
||||
}
|
||||
puVar10 = puVar15;
|
||||
if ((undefined8 *)param_1[0xac] != (undefined8 *)0x0) {
|
||||
puVar10 = *(undefined **)param_1[0xac];
|
||||
}
|
||||
FUN_14004c020(&local_130,
|
||||
L"CNetClient.Disconnect seems to be freezed ## State=%d##GarbageCount=%d##Process=%s"
|
||||
,*(undefined4 *)(puVar10 + 0x100),param_1[0x2d5],puVar14);
|
||||
if (((local_120 != (undefined *)0x0) && (local_120 != PTR_DAT_1403440a0)) &&
|
||||
(local_120 + -8 != (undefined *)0x0)) {
|
||||
uVar9 = FUN_14016d8c0();
|
||||
local_110 = uVar9;
|
||||
FUN_14016db50(uVar9);
|
||||
local_108 = 1;
|
||||
piVar2 = (int *)(local_120 + -4);
|
||||
*piVar2 = *piVar2 + -1;
|
||||
if (*piVar2 == 0) {
|
||||
FUN_14016d970(local_120 + -8);
|
||||
}
|
||||
FUN_14016dbe0(uVar9);
|
||||
}
|
||||
FUN_14016d8c0();
|
||||
puVar14 = local_130;
|
||||
local_res10 = PTR_DAT_1403440a0;
|
||||
if (PTR_DAT_1403440a0 == (undefined *)0x0) {
|
||||
local_res10 = puVar15;
|
||||
}
|
||||
if (local_130 != PTR_DAT_1403440a0) {
|
||||
uVar9 = FUN_14016d8c0();
|
||||
local_a8 = uVar9;
|
||||
FUN_14016db50(uVar9);
|
||||
local_a0 = 1;
|
||||
FUN_14004eb70(&local_res10);
|
||||
local_res10 = puVar14;
|
||||
if (((puVar14 != PTR_DAT_1403440a0) && (puVar14 != (undefined *)0x0)) &&
|
||||
(puVar14 != (undefined *)0x8)) {
|
||||
*(int *)(puVar14 + -4) = *(int *)(puVar14 + -4) + 1;
|
||||
}
|
||||
FUN_14016dbe0(uVar9);
|
||||
}
|
||||
FUN_1401be230(&local_res10);
|
||||
if ((undefined8 *)param_1[0xac] != (undefined8 *)0x0) {
|
||||
puVar15 = *(undefined **)param_1[0xac];
|
||||
}
|
||||
FUN_1401ea690(puVar15,5);
|
||||
FUN_1401dd3e0(plVar1,1);
|
||||
if (((puVar14 != (undefined *)0x0) && (puVar14 != PTR_DAT_1403440a0)) &&
|
||||
(puVar14 + -8 != (undefined *)0x0)) {
|
||||
uVar9 = FUN_14016d8c0();
|
||||
local_c8 = uVar9;
|
||||
FUN_14016db50(uVar9);
|
||||
local_c0 = 1;
|
||||
piVar2 = (int *)(puVar14 + -4);
|
||||
*piVar2 = *piVar2 + -1;
|
||||
if (*piVar2 == 0) {
|
||||
FUN_14016d970(puVar14 + -8);
|
||||
}
|
||||
FUN_14016dbe0(uVar9);
|
||||
}
|
||||
FUN_14016dbe0(local_160);
|
||||
goto LAB_1401e0c5d;
|
||||
}
|
||||
if (!bVar6) {
|
||||
bVar6 = true;
|
||||
puVar10 = puVar15;
|
||||
if (param_1[0xad] != 0) {
|
||||
puVar10 = *(undefined **)(param_1[0xad] + 0x38);
|
||||
}
|
||||
FUN_14016dc80(puVar10 + 0x10);
|
||||
puVar10 = puVar15;
|
||||
if ((undefined8 *)param_1[0xac] != (undefined8 *)0x0) {
|
||||
puVar10 = *(undefined **)param_1[0xac];
|
||||
}
|
||||
puVar4 = (undefined8 *)param_1[0xac];
|
||||
if (*(int *)(puVar10 + 0x100) == 3) {
|
||||
puVar10 = puVar15;
|
||||
if (puVar4 != (undefined8 *)0x0) {
|
||||
puVar10 = (undefined *)*puVar4;
|
||||
}
|
||||
uVar9 = (**(code **)(*param_1 + 0x1c0))(param_1);
|
||||
*(undefined8 *)(puVar10 + 0xd0) = uVar9;
|
||||
puVar10 = puVar15;
|
||||
if ((undefined8 *)param_1[0xac] != (undefined8 *)0x0) {
|
||||
puVar10 = *(undefined **)param_1[0xac];
|
||||
}
|
||||
*(double *)(puVar10 + 0xd8) = param_2;
|
||||
(**(code **)(param_1[0x2f5] + 0x80))(param_1 + 0x2f5,1,&DAT_14034c4b0,local_res18);
|
||||
}
|
||||
else {
|
||||
puVar10 = puVar15;
|
||||
if (puVar4 != (undefined8 *)0x0) {
|
||||
puVar10 = (undefined *)*puVar4;
|
||||
}
|
||||
if (*(int *)(puVar10 + 0x100) < 3) {
|
||||
puVar10 = puVar15;
|
||||
if ((undefined8 *)param_1[0xac] != (undefined8 *)0x0) {
|
||||
puVar10 = *(undefined **)param_1[0xac];
|
||||
}
|
||||
FUN_1401ea690(puVar10,4);
|
||||
}
|
||||
}
|
||||
}
|
||||
uVar9 = local_160;
|
||||
cVar13 = local_158;
|
||||
if (0 < (int)puVar14) {
|
||||
FUN_14016dbe0(local_160);
|
||||
Sleep(10);
|
||||
cVar13 = '\0';
|
||||
}
|
||||
puVar14 = (undefined *)(ulonglong)((int)puVar14 + 1);
|
||||
if (cVar13 != '\0') {
|
||||
FUN_14016dbe0(uVar9);
|
||||
}
|
||||
} while( true );
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue