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
235
decomp/DBCServer_Release_x64/full/functions/0x1401f70a0.c
Normal file
235
decomp/DBCServer_Release_x64/full/functions/0x1401f70a0.c
Normal file
|
|
@ -0,0 +1,235 @@
|
|||
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
||||
* Ghidra 12.1.2 decompiler output for 0x1401f70a0 FUN_1401f70a0
|
||||
* Pseudocode, not original source. */
|
||||
|
||||
/* WARNING: Removing unreachable block (ram,0x0001401f7140) */
|
||||
/* WARNING: Removing unreachable block (ram,0x0001401f7144) */
|
||||
/* WARNING: Removing unreachable block (ram,0x0001401f7160) */
|
||||
/* WARNING: Removing unreachable block (ram,0x0001401f716e) */
|
||||
/* WARNING: Removing unreachable block (ram,0x0001401f7166) */
|
||||
/* WARNING: Removing unreachable block (ram,0x0001401f7175) */
|
||||
/* WARNING: Removing unreachable block (ram,0x0001401f718d) */
|
||||
|
||||
void FUN_1401f70a0(longlong param_1)
|
||||
|
||||
{
|
||||
int *piVar1;
|
||||
int iVar2;
|
||||
undefined8 uVar3;
|
||||
undefined8 *puVar4;
|
||||
undefined *puVar5;
|
||||
longlong lVar6;
|
||||
longlong lVar7;
|
||||
undefined8 *puVar8;
|
||||
longlong lVar9;
|
||||
longlong *plVar10;
|
||||
int iVar11;
|
||||
undefined8 *puVar12;
|
||||
ulonglong uVar13;
|
||||
uint uVar14;
|
||||
longlong lVar15;
|
||||
longlong lVar16;
|
||||
longlong lVar17;
|
||||
int local_res10;
|
||||
longlong *local_res18;
|
||||
longlong local_res20;
|
||||
undefined **local_b8;
|
||||
longlong *local_b0;
|
||||
longlong local_a8;
|
||||
undefined8 local_a0;
|
||||
undefined8 local_98;
|
||||
undefined *local_90;
|
||||
longlong local_88;
|
||||
undefined1 local_80;
|
||||
undefined8 local_78;
|
||||
undefined1 local_70;
|
||||
undefined8 local_68;
|
||||
undefined1 local_60;
|
||||
undefined8 local_58;
|
||||
undefined8 *local_50;
|
||||
|
||||
local_58 = 0xfffffffffffffffe;
|
||||
lVar9 = param_1 + 0x10;
|
||||
local_88 = lVar9;
|
||||
FUN_14016db50(lVar9);
|
||||
local_80 = 1;
|
||||
local_b8 = Proud::CFastArray<Proud::StringT<char,Proud::AnsiStrTraits>,0>::vftable;
|
||||
local_b0 = (longlong *)0x0;
|
||||
local_a8 = 0;
|
||||
local_a0 = 0;
|
||||
local_98 = 0;
|
||||
FUN_140171180(&local_b8);
|
||||
if ((uint)local_a0 == 0) {
|
||||
FUN_14016d8c0();
|
||||
puVar5 = PTR_DAT_140344098;
|
||||
local_90 = PTR_DAT_140344098;
|
||||
lVar15 = (longlong)(int)(uint)local_a0;
|
||||
if ((int)(uint)local_a0 < 0) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14016d6b0();
|
||||
}
|
||||
FUN_1401703e0(&local_b8,(uint)local_a0 + 1);
|
||||
lVar16 = local_a8;
|
||||
if ((uint)local_a0 == 0) {
|
||||
lVar16 = 0;
|
||||
}
|
||||
FUN_14004f4d0(lVar16 + lVar15 * 8,&local_90);
|
||||
if (((puVar5 != (undefined *)0x0) && (puVar5 != PTR_DAT_140344098)) &&
|
||||
(puVar5 + -8 != (undefined *)0x0)) {
|
||||
uVar3 = FUN_14016d8c0();
|
||||
local_78 = uVar3;
|
||||
FUN_14016db50(uVar3);
|
||||
local_70 = 1;
|
||||
piVar1 = (int *)(puVar5 + -4);
|
||||
*piVar1 = *piVar1 + -1;
|
||||
if (*piVar1 == 0) {
|
||||
FUN_14016d970(puVar5 + -8);
|
||||
}
|
||||
FUN_14016dbe0(uVar3);
|
||||
local_70 = 0;
|
||||
}
|
||||
local_90 = PTR_DAT_140344098;
|
||||
}
|
||||
local_res10 = 0;
|
||||
local_res20 = 0;
|
||||
uVar14 = (uint)local_a0;
|
||||
if (0 < (int)(uint)local_a0) {
|
||||
do {
|
||||
puVar8 = (undefined8 *)0x0;
|
||||
puVar4 = operator_new(0x100);
|
||||
puVar12 = puVar8;
|
||||
local_50 = puVar4;
|
||||
if (puVar4 != (undefined8 *)0x0) {
|
||||
*puVar4 = Proud::CSsdpContext::vftable;
|
||||
FUN_14016d8c0();
|
||||
puVar4[1] = PTR_DAT_140344098;
|
||||
puVar4[2] = 0;
|
||||
puVar4[5] = 0;
|
||||
puVar4[6] = 0;
|
||||
puVar4[7] = 0;
|
||||
puVar4[8] = 0;
|
||||
puVar4[4] = Proud::ByteArray::vftable;
|
||||
*(undefined1 *)(puVar4 + 0x10) = 0;
|
||||
*(undefined1 *)(puVar4 + 0x18) = 0;
|
||||
puVar4[0x19] = 0;
|
||||
puVar4[3] = 0;
|
||||
puVar12 = puVar4;
|
||||
}
|
||||
if (puVar12 == (undefined8 *)0x0) {
|
||||
local_res18 = (longlong *)0x0;
|
||||
}
|
||||
else {
|
||||
local_res18 = (longlong *)FUN_14016d940(0x10);
|
||||
local_res18[1] = 1;
|
||||
*local_res18 = (longlong)puVar12;
|
||||
}
|
||||
lVar9 = local_a8;
|
||||
if ((local_res20 < 0) || ((int)(uint)local_a0 <= local_res10)) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14016d6e0();
|
||||
}
|
||||
if (local_res18 != (longlong *)0x0) {
|
||||
puVar8 = (undefined8 *)*local_res18;
|
||||
}
|
||||
puVar5 = (undefined *)puVar8[1];
|
||||
if ((undefined *)puVar8[1] == (undefined *)0x0) {
|
||||
puVar5 = PTR_DAT_140344098;
|
||||
}
|
||||
puVar8[1] = puVar5;
|
||||
if (*(undefined **)(local_a8 + local_res20 * 8) != puVar5) {
|
||||
uVar3 = FUN_14016d8c0();
|
||||
local_68 = uVar3;
|
||||
FUN_14016db50(uVar3);
|
||||
local_60 = 1;
|
||||
FUN_14004f5a0(puVar8 + 1);
|
||||
puVar5 = *(undefined **)(lVar9 + local_res20 * 8);
|
||||
puVar8[1] = puVar5;
|
||||
if (((puVar5 != PTR_DAT_140344098) && (puVar5 != (undefined *)0x0)) &&
|
||||
(puVar5 != (undefined *)0x8)) {
|
||||
*(int *)(puVar5 + -4) = *(int *)(puVar5 + -4) + 1;
|
||||
}
|
||||
FUN_14016dbe0(uVar3);
|
||||
local_60 = 0;
|
||||
}
|
||||
lVar15 = param_1 + 0x100;
|
||||
iVar2 = *(int *)(param_1 + 0x118);
|
||||
lVar9 = (longlong)iVar2;
|
||||
if (iVar2 < 0) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14016d6b0();
|
||||
}
|
||||
iVar11 = *(int *)(param_1 + 0x118);
|
||||
FUN_1401f61d0(lVar15,iVar11 + 1);
|
||||
iVar11 = iVar11 - iVar2;
|
||||
if ((0 < iVar11) && (iVar11 = iVar11 + -1, -1 < iVar11)) {
|
||||
lVar16 = (longlong)(iVar11 + iVar2 + 1) << 3;
|
||||
lVar17 = (longlong)(iVar11 + iVar2) << 3;
|
||||
do {
|
||||
lVar6 = FUN_14016ab80(lVar15);
|
||||
lVar7 = FUN_14016ab80(lVar15);
|
||||
FUN_1401eb200(lVar16 + lVar7,lVar17 + lVar6);
|
||||
lVar17 = lVar17 + -8;
|
||||
lVar16 = lVar16 + -8;
|
||||
iVar11 = iVar11 + -1;
|
||||
} while (-1 < iVar11);
|
||||
}
|
||||
lVar15 = FUN_14016ab80(lVar15);
|
||||
if (local_res18 != *(longlong **)(lVar15 + lVar9 * 8)) {
|
||||
if (local_res18 != (longlong *)0x0) {
|
||||
local_res18[1] = local_res18[1] + 1;
|
||||
}
|
||||
plVar10 = (longlong *)0x0;
|
||||
lVar16 = *(longlong *)(lVar15 + lVar9 * 8);
|
||||
if ((lVar16 != 0) &&
|
||||
(*(longlong *)(*(longlong *)(lVar15 + lVar9 * 8) + 8) = *(longlong *)(lVar16 + 8) + -1,
|
||||
*(longlong *)(*(longlong *)(lVar15 + lVar9 * 8) + 8) == 0)) {
|
||||
plVar10 = *(longlong **)(lVar15 + lVar9 * 8);
|
||||
}
|
||||
*(longlong **)(lVar15 + lVar9 * 8) = local_res18;
|
||||
if (plVar10 != (longlong *)0x0) {
|
||||
puVar8 = (undefined8 *)*plVar10;
|
||||
if (puVar8 != (undefined8 *)0x0) {
|
||||
(**(code **)*puVar8)(puVar8,1);
|
||||
}
|
||||
FUN_14016d970(plVar10);
|
||||
}
|
||||
}
|
||||
if (local_res18 != (longlong *)0x0) {
|
||||
plVar10 = local_res18 + 1;
|
||||
*plVar10 = *plVar10 + -1;
|
||||
if (*plVar10 == 0) {
|
||||
puVar8 = (undefined8 *)*local_res18;
|
||||
if (puVar8 != (undefined8 *)0x0) {
|
||||
(**(code **)*puVar8)(puVar8,1);
|
||||
}
|
||||
FUN_14016d970(local_res18);
|
||||
}
|
||||
}
|
||||
local_res10 = local_res10 + 1;
|
||||
local_res20 = local_res20 + 1;
|
||||
lVar9 = local_88;
|
||||
uVar14 = (uint)local_a0;
|
||||
} while (local_res10 < (int)(uint)local_a0);
|
||||
}
|
||||
local_b8 = Proud::CFastArray<Proud::StringT<char,Proud::AnsiStrTraits>,0>::vftable;
|
||||
if (0 < (int)uVar14) {
|
||||
uVar13 = (ulonglong)uVar14;
|
||||
lVar15 = local_a8;
|
||||
do {
|
||||
FUN_14004f5a0(lVar15);
|
||||
lVar15 = lVar15 + 8;
|
||||
uVar13 = uVar13 - 1;
|
||||
} while (uVar13 != 0);
|
||||
}
|
||||
if (local_a8 != 0) {
|
||||
if (local_b0 == (longlong *)0x0) {
|
||||
FUN_14016d970();
|
||||
}
|
||||
else {
|
||||
(**(code **)(*local_b0 + 0x18))(local_b0,local_a8);
|
||||
}
|
||||
}
|
||||
FUN_14016dbe0(lVar9);
|
||||
return;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue