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
351
decomp/DBCServer_Release_x64/full/functions/0x1401a2700.c
Normal file
351
decomp/DBCServer_Release_x64/full/functions/0x1401a2700.c
Normal file
|
|
@ -0,0 +1,351 @@
|
|||
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
||||
* Ghidra 12.1.2 decompiler output for 0x1401a2700 FUN_1401a2700
|
||||
* Pseudocode, not original source. */
|
||||
|
||||
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
||||
|
||||
undefined8 FUN_1401a2700(longlong param_1,longlong param_2,uint *param_3,uint param_4)
|
||||
|
||||
{
|
||||
uint uVar1;
|
||||
longlong lVar2;
|
||||
undefined8 *puVar3;
|
||||
longlong *plVar4;
|
||||
longlong lVar5;
|
||||
longlong *plVar6;
|
||||
bool bVar7;
|
||||
undefined4 uVar8;
|
||||
undefined2 uVar9;
|
||||
char cVar10;
|
||||
int iVar11;
|
||||
longlong lVar12;
|
||||
undefined8 *puVar13;
|
||||
undefined8 *puVar14;
|
||||
undefined8 uVar15;
|
||||
ulonglong uVar16;
|
||||
ulonglong uVar17;
|
||||
longlong *plVar18;
|
||||
double dVar19;
|
||||
double dVar20;
|
||||
undefined1 auStack_2a8 [32];
|
||||
uint local_288;
|
||||
undefined4 local_280;
|
||||
uint local_278 [2];
|
||||
undefined8 local_270;
|
||||
undefined4 local_268;
|
||||
undefined4 uStack_264;
|
||||
undefined4 local_260;
|
||||
undefined2 local_25c;
|
||||
ulonglong local_258;
|
||||
undefined4 local_250;
|
||||
undefined **local_248;
|
||||
undefined4 local_240;
|
||||
undefined2 local_23c;
|
||||
int local_238;
|
||||
uint local_234;
|
||||
longlong local_230;
|
||||
undefined8 local_228;
|
||||
undefined8 local_220;
|
||||
undefined4 local_218;
|
||||
undefined8 local_210;
|
||||
undefined4 local_208;
|
||||
undefined **local_200;
|
||||
undefined4 local_1f8;
|
||||
undefined2 local_1f4;
|
||||
longlong local_1f0;
|
||||
uint *local_1e8;
|
||||
longlong local_1e0;
|
||||
longlong local_1d8;
|
||||
undefined1 local_1d0;
|
||||
undefined8 local_1c8;
|
||||
longlong local_1b8 [3];
|
||||
undefined4 auStack_1a0 [74];
|
||||
ulonglong local_78;
|
||||
|
||||
local_1c8 = 0xfffffffffffffffe;
|
||||
local_78 = DAT_1403463c0 ^ (ulonglong)auStack_2a8;
|
||||
if (9 < *(uint *)(param_2 + 0x18)) {
|
||||
local_234 = param_4;
|
||||
local_1f0 = param_2;
|
||||
local_1e8 = param_3;
|
||||
if (*(longlong *)(param_1 + 0x28) == 0) {
|
||||
SetLastError(0);
|
||||
dVar19 = (double)FUN_1401a1eb0(param_1);
|
||||
local_278[0] = 0;
|
||||
*param_3 = 0;
|
||||
local_230 = param_1 + 0x50;
|
||||
plVar18 = (longlong *)(param_1 + 0x38);
|
||||
do {
|
||||
local_1d8 = param_1 + 0x50;
|
||||
FUN_14016db50(local_1d8);
|
||||
local_1d0 = 1;
|
||||
local_238 = *(int *)(param_1 + 0x48) * 3 + 3;
|
||||
puVar13 = (undefined8 *)*plVar18;
|
||||
local_268 = 0x402776a0;
|
||||
uStack_264 = 1;
|
||||
local_258 = local_258 & 0xffffffff00000000;
|
||||
local_270 = 0;
|
||||
puVar3 = puVar13;
|
||||
local_260 = DAT_140344450;
|
||||
local_25c = DAT_140344454;
|
||||
do {
|
||||
if (puVar3 == (undefined8 *)0x0) break;
|
||||
local_200 = Proud::AddrPort::vftable;
|
||||
local_228 = 0;
|
||||
local_210 = 0;
|
||||
local_220 = 0;
|
||||
local_218 = 5;
|
||||
local_208 = 0;
|
||||
local_1f8 = DAT_140344450;
|
||||
local_1f4 = DAT_140344454;
|
||||
cVar10 = FUN_14019c560(puVar3,0,&local_270);
|
||||
if (cVar10 == '\0') {
|
||||
cVar10 = FUN_14019c2f0(puVar3,0,&local_270);
|
||||
if (cVar10 != '\0') {
|
||||
local_218 = 2;
|
||||
local_208 = *(undefined4 *)((longlong)puVar3 + 0x304);
|
||||
FUN_14016f840(&local_200);
|
||||
puVar14 = puVar3 + 0x30;
|
||||
goto LAB_1401a2b38;
|
||||
}
|
||||
cVar10 = FUN_14019c3c0(puVar3,0,&local_270);
|
||||
if (cVar10 != '\0') {
|
||||
local_218 = 3;
|
||||
puVar14 = puVar3 + 0x18;
|
||||
goto LAB_1401a2b38;
|
||||
}
|
||||
cVar10 = FUN_14019c490(puVar3,0,&local_270);
|
||||
if (cVar10 != '\0') {
|
||||
local_218 = 4;
|
||||
puVar14 = puVar3 + 0x68;
|
||||
goto LAB_1401a2b38;
|
||||
}
|
||||
}
|
||||
else {
|
||||
local_218 = 1;
|
||||
puVar14 = puVar3 + 0x48;
|
||||
LAB_1401a2b38:
|
||||
FUN_14019bbb0(puVar14,0,0);
|
||||
local_228 = puVar3[0x5d];
|
||||
local_220 = CONCAT44((int)((ulonglong)local_270 >> 0x20),(undefined4)local_258);
|
||||
if (puVar3[2] != 0) {
|
||||
FUN_14019c130();
|
||||
}
|
||||
if (puVar3[2] != 0) {
|
||||
FUN_14019c130(plVar18);
|
||||
}
|
||||
if (*(longlong *)(param_1 + 0x40) == 0) {
|
||||
*plVar18 = (longlong)puVar3;
|
||||
}
|
||||
else {
|
||||
*(undefined8 **)(*(longlong *)(param_1 + 0x40) + 8) = puVar3;
|
||||
*puVar3 = *(undefined8 *)(param_1 + 0x40);
|
||||
}
|
||||
*(undefined8 **)(param_1 + 0x40) = puVar3;
|
||||
puVar3[2] = plVar18;
|
||||
*(int *)(param_1 + 0x48) = *(int *)(param_1 + 0x48) + 1;
|
||||
uVar1 = *param_3;
|
||||
if (((int)uVar1 < 0) || (*(int *)(param_2 + 0x18) <= (int)uVar1)) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14016d6e0();
|
||||
}
|
||||
puVar14 = (undefined8 *)((longlong)(int)uVar1 * 0x38 + *(longlong *)(param_2 + 0x10));
|
||||
*puVar14 = local_228;
|
||||
*(undefined4 *)(puVar14 + 1) = (undefined4)local_220;
|
||||
*(undefined4 *)((longlong)puVar14 + 0xc) = local_220._4_4_;
|
||||
*(undefined4 *)(puVar14 + 2) = local_218;
|
||||
puVar14[3] = local_210;
|
||||
*(undefined4 *)(puVar14 + 4) = local_208;
|
||||
*(undefined4 *)(puVar14 + 6) = local_1f8;
|
||||
*(undefined2 *)((longlong)puVar14 + 0x34) = local_1f4;
|
||||
*param_3 = *param_3 + 1;
|
||||
if (9 < *param_3) goto LAB_1401a2db3;
|
||||
}
|
||||
puVar3 = (undefined8 *)puVar3[1];
|
||||
} while (puVar3 != puVar13);
|
||||
lVar12 = *(longlong *)(param_1 + 0xa0);
|
||||
uVar8 = DAT_140344450;
|
||||
uVar9 = DAT_140344454;
|
||||
while (DAT_140344450 = uVar8, DAT_140344454 = uVar9, lVar12 != 0) {
|
||||
plVar4 = *(longlong **)(param_1 + 0x90);
|
||||
if (plVar4 == (longlong *)0x0) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14004dc60(0x80004005);
|
||||
}
|
||||
lVar12 = plVar4[2];
|
||||
lVar2 = plVar4[3];
|
||||
local_1e0 = plVar4[4];
|
||||
lVar5 = *plVar4;
|
||||
*(longlong *)(param_1 + 0x90) = lVar5;
|
||||
if (lVar5 == 0) {
|
||||
*(undefined8 *)(param_1 + 0x98) = 0;
|
||||
}
|
||||
else {
|
||||
*(undefined8 *)(lVar5 + 8) = 0;
|
||||
}
|
||||
plVar6 = *(longlong **)(param_1 + 0x88);
|
||||
if (plVar6 == (longlong *)0x0) {
|
||||
FUN_14016d970();
|
||||
}
|
||||
else {
|
||||
(**(code **)(*plVar6 + 0x10))(plVar6,plVar4);
|
||||
}
|
||||
*(longlong *)(param_1 + 0xa0) = *(longlong *)(param_1 + 0xa0) + -1;
|
||||
uVar15 = 0;
|
||||
if (lVar12 != 0) {
|
||||
uVar15 = *(undefined8 *)(lVar12 + 0x2e8);
|
||||
}
|
||||
uVar1 = *local_1e8;
|
||||
if (((int)uVar1 < 0) || (*(int *)(local_1f0 + 0x18) <= (int)uVar1)) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14016d6e0();
|
||||
}
|
||||
puVar13 = (undefined8 *)((longlong)(int)uVar1 * 0x38 + *(longlong *)(local_1f0 + 0x10));
|
||||
*puVar13 = uVar15;
|
||||
puVar13[1] = 0;
|
||||
*(int *)(puVar13 + 2) = (int)local_1e0;
|
||||
puVar13[3] = lVar2;
|
||||
*(undefined4 *)(puVar13 + 4) = 0;
|
||||
*(undefined4 *)(puVar13 + 6) = uVar8;
|
||||
*(undefined2 *)((longlong)puVar13 + 0x34) = uVar9;
|
||||
*local_1e8 = *local_1e8 + 1;
|
||||
if (9 < *local_1e8) goto LAB_1401a2db3;
|
||||
param_3 = local_1e8;
|
||||
param_2 = local_1f0;
|
||||
uVar8 = DAT_140344450;
|
||||
uVar9 = DAT_140344454;
|
||||
lVar12 = *(longlong *)(param_1 + 0xa0);
|
||||
}
|
||||
if (*param_3 != 0) {
|
||||
LAB_1401a2db3:
|
||||
FUN_14016dbe0(local_230);
|
||||
return 1;
|
||||
}
|
||||
FUN_14016dbe0(param_1 + 0x50);
|
||||
local_1d0 = 0;
|
||||
uVar16 = (ulonglong)local_234;
|
||||
if ((local_234 == 0) ||
|
||||
((local_234 != 0xffffffff &&
|
||||
(dVar20 = (double)FUN_1401a1eb0(param_1), (double)uVar16 < (dVar20 - dVar19) * 1000.0)))
|
||||
) {
|
||||
return 0;
|
||||
}
|
||||
bVar7 = local_238 <= (int)local_278[0];
|
||||
if (bVar7) {
|
||||
local_278[0] = 0;
|
||||
}
|
||||
else {
|
||||
local_278[0] = local_278[0] + 1;
|
||||
}
|
||||
Sleep((uint)bVar7);
|
||||
} while( true );
|
||||
}
|
||||
uVar16 = 0;
|
||||
local_278[0] = 0;
|
||||
SetLastError(0);
|
||||
lVar12 = FUN_14016f040();
|
||||
local_280 = 0;
|
||||
local_288 = param_4;
|
||||
iVar11 = (**(code **)(lVar12 + 0x20))(*(undefined8 *)(param_1 + 0x28),local_1b8,10,local_278);
|
||||
if (iVar11 == 0) {
|
||||
GetLastError();
|
||||
}
|
||||
else if (local_278[0] != 0) {
|
||||
*param_3 = local_278[0];
|
||||
plVar18 = local_1b8 + 1;
|
||||
uVar17 = uVar16;
|
||||
do {
|
||||
local_248 = Proud::AddrPort::vftable;
|
||||
local_270 = 0;
|
||||
local_258 = 0;
|
||||
local_268 = 0;
|
||||
uStack_264 = 0;
|
||||
local_260 = 5;
|
||||
local_250 = 0;
|
||||
local_240 = DAT_140344450;
|
||||
local_23c = DAT_140344454;
|
||||
lVar12 = *plVar18;
|
||||
iVar11 = (int)uVar17;
|
||||
if (lVar12 == 0) {
|
||||
uStack_264 = 0xffffffff;
|
||||
if ((iVar11 < 0) || (*(int *)(param_2 + 0x18) <= iVar11)) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14016d6e0();
|
||||
}
|
||||
lVar12 = *(longlong *)(param_2 + 0x10);
|
||||
*(undefined8 *)(uVar16 + lVar12) = 0;
|
||||
}
|
||||
else {
|
||||
lVar2 = plVar18[-1];
|
||||
if (lVar2 == 0) {
|
||||
local_270 = 0;
|
||||
}
|
||||
else {
|
||||
local_270 = *(undefined8 *)(lVar2 + 0x2e8);
|
||||
}
|
||||
if (lVar12 < 0) {
|
||||
local_268 = (undefined4)plVar18[2];
|
||||
uStack_264 = 0;
|
||||
local_260 = 0;
|
||||
local_250 = 0;
|
||||
if ((iVar11 < 0) || (local_258 = lVar12, *(int *)(param_2 + 0x18) <= iVar11)) {
|
||||
local_258 = lVar12;
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14016d6e0();
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (lVar2 == 0) {
|
||||
LAB_1401a2935:
|
||||
local_260 = 0;
|
||||
local_258 = lVar12;
|
||||
}
|
||||
else if (lVar12 == lVar2 + 0x180) {
|
||||
local_260 = 2;
|
||||
local_250 = *(undefined4 *)(lVar2 + 0x304);
|
||||
FUN_14016f840(&local_248,lVar2 + 0x2f0);
|
||||
FUN_14019bbb0(lVar2 + 0x180,0,0);
|
||||
}
|
||||
else if (lVar12 == lVar2 + 0x240) {
|
||||
local_260 = 1;
|
||||
FUN_14019bbb0(lVar2 + 0x240,0,0);
|
||||
}
|
||||
else if (lVar12 == lVar2 + 0xc0) {
|
||||
local_260 = 3;
|
||||
FUN_14019bbb0(lVar2 + 0xc0,0,0);
|
||||
}
|
||||
else {
|
||||
if (lVar12 != lVar2 + 0x340) goto LAB_1401a2935;
|
||||
local_260 = 4;
|
||||
FUN_14019bbb0(lVar2 + 0x340,0,0);
|
||||
}
|
||||
local_268 = (undefined4)plVar18[2];
|
||||
uStack_264 = 0;
|
||||
if ((iVar11 < 0) || (*(int *)(param_2 + 0x18) <= iVar11)) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14016d6e0();
|
||||
}
|
||||
}
|
||||
uStack_264 = 0;
|
||||
lVar12 = *(longlong *)(param_2 + 0x10);
|
||||
*(undefined8 *)(uVar16 + lVar12) = local_270;
|
||||
}
|
||||
*(undefined4 *)(uVar16 + 8 + lVar12) = local_268;
|
||||
*(undefined4 *)(uVar16 + 0xc + lVar12) = uStack_264;
|
||||
*(undefined4 *)(uVar16 + 0x10 + lVar12) = local_260;
|
||||
*(ulonglong *)(uVar16 + 0x18 + lVar12) = local_258;
|
||||
*(undefined4 *)(uVar16 + 0x20 + lVar12) = local_250;
|
||||
*(undefined4 *)(uVar16 + 0x30 + lVar12) = local_240;
|
||||
*(undefined2 *)(uVar16 + 0x34 + lVar12) = local_23c;
|
||||
uVar17 = (ulonglong)(iVar11 + 1U);
|
||||
plVar18 = plVar18 + 4;
|
||||
uVar16 = uVar16 + 0x38;
|
||||
if (local_278[0] <= iVar11 + 1U) {
|
||||
return 1;
|
||||
}
|
||||
} while( true );
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue