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
244
decomp/DBCServer_Release_x64/full/functions/0x1401d5dd0.c
Normal file
244
decomp/DBCServer_Release_x64/full/functions/0x1401d5dd0.c
Normal file
|
|
@ -0,0 +1,244 @@
|
|||
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
||||
* Ghidra 12.1.2 decompiler output for 0x1401d5dd0 FUN_1401d5dd0
|
||||
* Pseudocode, not original source. */
|
||||
|
||||
void FUN_1401d5dd0(longlong *param_1,undefined8 param_2,undefined4 param_3,longlong param_4,
|
||||
int *param_5,undefined4 *param_6)
|
||||
|
||||
{
|
||||
undefined8 *puVar1;
|
||||
longlong lVar2;
|
||||
longlong lVar3;
|
||||
int iVar4;
|
||||
int iVar5;
|
||||
int iVar6;
|
||||
int *piVar7;
|
||||
undefined8 uVar8;
|
||||
longlong *plVar9;
|
||||
longlong lVar10;
|
||||
int *piVar11;
|
||||
longlong lVar12;
|
||||
longlong lVar13;
|
||||
longlong lVar14;
|
||||
int iVar15;
|
||||
int iVar16;
|
||||
ulonglong uVar17;
|
||||
ulonglong uVar18;
|
||||
double dVar19;
|
||||
longlong *local_res10;
|
||||
undefined **local_c8;
|
||||
undefined4 local_c0;
|
||||
undefined2 local_bc;
|
||||
undefined **local_b8;
|
||||
undefined8 local_b0;
|
||||
undefined8 local_a8;
|
||||
undefined8 local_a0;
|
||||
undefined8 local_98;
|
||||
undefined8 local_90;
|
||||
undefined4 local_88;
|
||||
longlong local_80;
|
||||
undefined4 local_78;
|
||||
undefined4 local_74;
|
||||
undefined1 local_68 [8];
|
||||
undefined8 local_60;
|
||||
undefined8 local_58;
|
||||
undefined1 local_50;
|
||||
|
||||
lVar3 = (longlong)param_5;
|
||||
local_60 = 0xfffffffffffffffe;
|
||||
FUN_1401a7d90(param_5,0);
|
||||
uVar17 = (ulonglong)*(int *)(lVar3 + 0x18);
|
||||
FUN_1401becf0(&local_90);
|
||||
local_80 = lVar3;
|
||||
lVar14 = 0;
|
||||
local_78 = 0;
|
||||
local_74 = *(undefined4 *)((longlong)param_1 + 0x6a4);
|
||||
local_90 = param_2;
|
||||
local_88 = param_3;
|
||||
iVar4 = FUN_1401bf780(&local_90,param_6);
|
||||
if (-1 < iVar4) {
|
||||
local_c8 = Proud::AddrPort::vftable;
|
||||
local_c0 = *(undefined4 *)(param_4 + 8);
|
||||
local_bc = *(undefined2 *)(param_4 + 0xc);
|
||||
plVar9 = (longlong *)FUN_1401d0f00(param_1,&local_res10,&local_c8);
|
||||
lVar13 = lVar14;
|
||||
if ((longlong *)*plVar9 != (longlong *)0x0) {
|
||||
lVar13 = *(longlong *)*plVar9;
|
||||
}
|
||||
if ((local_res10 != (longlong *)0x0) &&
|
||||
(local_res10[1] = local_res10[1] + -1, local_res10[1] == 0)) {
|
||||
puVar1 = (undefined8 *)*local_res10;
|
||||
if (puVar1 != (undefined8 *)0x0) {
|
||||
(**(code **)*puVar1)(puVar1,1);
|
||||
}
|
||||
FUN_14016d970(local_res10);
|
||||
}
|
||||
if (iVar4 < 1) {
|
||||
return;
|
||||
}
|
||||
lVar12 = uVar17 * 0x48;
|
||||
uVar18 = uVar17;
|
||||
do {
|
||||
lVar10 = 0;
|
||||
if (((longlong)(uVar17 + lVar14) < 0) || (*(int *)(lVar3 + 0x18) <= (int)uVar18)) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14016d6e0();
|
||||
}
|
||||
lVar2 = *(longlong *)(lVar3 + 0x10);
|
||||
*(undefined4 *)(lVar12 + 0x38 + lVar2) = *(undefined4 *)(param_4 + 8);
|
||||
*(undefined2 *)(lVar12 + 0x3c + lVar2) = *(undefined2 *)(param_4 + 0xc);
|
||||
if (lVar13 == 0) {
|
||||
if ((longlong *)param_1[0x2ae] != (longlong *)0x0) {
|
||||
lVar10 = *(longlong *)param_1[0x2ae];
|
||||
}
|
||||
if ((*(int *)(param_4 + 8) == *(int *)(lVar10 + 0xd0)) &&
|
||||
(*(short *)(param_4 + 0xc) == *(short *)(lVar10 + 0xd4))) {
|
||||
*(undefined4 *)(lVar12 + 0x28 + lVar2) = 1;
|
||||
FUN_1401c7210(param_1);
|
||||
}
|
||||
else {
|
||||
*(undefined4 *)(lVar12 + 0x28 + lVar2) = 0;
|
||||
}
|
||||
}
|
||||
else {
|
||||
*(undefined4 *)(lVar12 + 0x28 + lVar2) = *(undefined4 *)(lVar13 + 0x56c);
|
||||
dVar19 = (double)(**(code **)(param_1[0xe] + 0x1c0))(param_1 + 0xe);
|
||||
dVar19 = dVar19 - *(double *)(lVar13 + 0xc0);
|
||||
if (0.0 < dVar19) {
|
||||
*(double *)(lVar13 + 0x140) = dVar19;
|
||||
}
|
||||
uVar8 = (**(code **)(param_1[0xe] + 0x1c0))(param_1 + 0xe);
|
||||
*(undefined8 *)(lVar13 + 0xc0) = uVar8;
|
||||
*(int *)(lVar13 + 0x100) = *(int *)(lVar13 + 0x100) + 1;
|
||||
}
|
||||
uVar18 = (ulonglong)((int)uVar18 + 1);
|
||||
lVar14 = lVar14 + 1;
|
||||
lVar12 = lVar12 + 0x48;
|
||||
} while (lVar14 < iVar4);
|
||||
return;
|
||||
}
|
||||
FUN_14016d8c0();
|
||||
param_5 = (int *)PTR_DAT_1403440a0;
|
||||
iVar5 = FUN_14016d740(L"ExtractMessageFromUdpRecvQueue : addedCount < 0");
|
||||
iVar16 = 0;
|
||||
iVar4 = 0;
|
||||
if ((param_5 != (int *)0x0) && (iVar4 = 0, param_5 != (int *)PTR_DAT_1403440a0)) {
|
||||
iVar4 = param_5[-2];
|
||||
}
|
||||
iVar6 = iVar5;
|
||||
if (((iVar5 <= iVar4) && (iVar6 = iVar16, param_5 != (int *)0x0)) &&
|
||||
(param_5 != (int *)PTR_DAT_1403440a0)) {
|
||||
iVar6 = param_5[-2];
|
||||
}
|
||||
iVar4 = 1;
|
||||
if (1 < iVar6) {
|
||||
iVar4 = iVar6;
|
||||
}
|
||||
iVar6 = iVar16;
|
||||
if ((param_5 != (int *)0x0) && (param_5 != (int *)PTR_DAT_1403440a0)) {
|
||||
iVar6 = param_5[-2];
|
||||
}
|
||||
iVar15 = 0;
|
||||
if (iVar6 < iVar4) {
|
||||
if (param_5 == (int *)0x0) {
|
||||
param_5 = (int *)PTR_DAT_1403440a0;
|
||||
}
|
||||
if (iVar4 < 0) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14016d6b0();
|
||||
}
|
||||
if (iVar4 == 0) {
|
||||
FUN_14004eb70(¶m_5);
|
||||
}
|
||||
else {
|
||||
iVar6 = iVar16;
|
||||
if ((param_5 != (int *)0x0) && (param_5 != (int *)PTR_DAT_1403440a0)) {
|
||||
iVar6 = param_5[-2];
|
||||
}
|
||||
if (iVar4 != iVar6) {
|
||||
piVar7 = (int *)FUN_14016d940((longlong)iVar4 * 2 + 10);
|
||||
if (piVar7 != (int *)0x0) {
|
||||
*piVar7 = 0;
|
||||
piVar7[1] = 1;
|
||||
}
|
||||
*piVar7 = iVar4;
|
||||
iVar6 = iVar15;
|
||||
if ((param_5 != (int *)0x0) && (param_5 != (int *)PTR_DAT_1403440a0)) {
|
||||
iVar6 = param_5[-2];
|
||||
}
|
||||
piVar11 = (int *)PTR_DAT_1403440a0;
|
||||
if (iVar4 < iVar6) {
|
||||
LAB_1401d5f52:
|
||||
if (param_5 != (int *)0x0) {
|
||||
piVar11 = param_5;
|
||||
}
|
||||
}
|
||||
else {
|
||||
iVar4 = iVar16;
|
||||
if (param_5 != (int *)0x0) {
|
||||
if (param_5 != (int *)PTR_DAT_1403440a0) {
|
||||
iVar4 = param_5[-2];
|
||||
}
|
||||
goto LAB_1401d5f52;
|
||||
}
|
||||
}
|
||||
FUN_14016d770(piVar7 + 2,piVar11,iVar4);
|
||||
FUN_14004eb70(¶m_5);
|
||||
param_5 = piVar7 + 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
FUN_14004e850(¶m_5);
|
||||
piVar7 = param_5;
|
||||
if (param_5 == (int *)0x0) {
|
||||
piVar7 = (int *)PTR_DAT_1403440a0;
|
||||
}
|
||||
FUN_14016d770(piVar7,L"ExtractMessageFromUdpRecvQueue : addedCount < 0",iVar5);
|
||||
piVar7 = param_5;
|
||||
if (param_5 == (int *)0x0) {
|
||||
piVar7 = (int *)PTR_DAT_1403440a0;
|
||||
}
|
||||
iVar5 = FUN_14016d740(piVar7);
|
||||
iVar4 = 0;
|
||||
if (0 < iVar5) {
|
||||
iVar4 = iVar5;
|
||||
}
|
||||
iVar5 = iVar15;
|
||||
if ((param_5 != (int *)0x0) && (param_5 != (int *)PTR_DAT_1403440a0)) {
|
||||
iVar5 = param_5[-2];
|
||||
}
|
||||
if ((iVar5 <= iVar4) && (iVar4 = iVar15, param_5 != (int *)0x0)) {
|
||||
if (param_5 == (int *)PTR_DAT_1403440a0) goto LAB_1401d600a;
|
||||
iVar4 = param_5[-2];
|
||||
}
|
||||
if (((param_5 != (int *)PTR_DAT_1403440a0) && (param_5 != (int *)0x0)) &&
|
||||
(param_5 + -2 != (int *)0x0)) {
|
||||
param_5[-2] = iVar4;
|
||||
*(undefined2 *)((longlong)param_5 + (longlong)iVar4 * 2) = 0;
|
||||
}
|
||||
LAB_1401d600a:
|
||||
local_b0 = 0;
|
||||
local_a8 = 0;
|
||||
local_a0 = 0;
|
||||
local_98 = 0;
|
||||
local_b8 = Proud::ByteArray::vftable;
|
||||
uVar8 = FUN_140198f80(local_68,*param_6,(int)param_1[0x2af],¶m_5,&local_b8);
|
||||
(**(code **)(*param_1 + 0x88))(param_1,uVar8);
|
||||
FUN_14019a9e0(&local_b8);
|
||||
piVar7 = param_5;
|
||||
if (((param_5 != (int *)0x0) && (param_5 != (int *)PTR_DAT_1403440a0)) &&
|
||||
(piVar11 = param_5 + -2, piVar11 != (int *)0x0)) {
|
||||
uVar8 = FUN_14016d8c0();
|
||||
local_58 = uVar8;
|
||||
FUN_14016db50(uVar8);
|
||||
local_50 = 1;
|
||||
piVar7 = piVar7 + -1;
|
||||
*piVar7 = *piVar7 + -1;
|
||||
if (*piVar7 == 0) {
|
||||
FUN_14016d970(piVar11);
|
||||
}
|
||||
FUN_14016dbe0(uVar8);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue