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
234
decomp/MessageServer_Release_x64/full/functions/0x14010c750.c
Normal file
234
decomp/MessageServer_Release_x64/full/functions/0x14010c750.c
Normal file
|
|
@ -0,0 +1,234 @@
|
|||
/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1
|
||||
* Ghidra 12.1.2 decompiler output for 0x14010c750 FUN_14010c750
|
||||
* 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_14010c750(uint *param_1,int *param_2,uint *param_3,undefined8 *param_4,int param_5)
|
||||
|
||||
{
|
||||
uint *puVar1;
|
||||
int iVar2;
|
||||
undefined8 uVar3;
|
||||
ulonglong uVar4;
|
||||
uint *puVar5;
|
||||
uint uVar6;
|
||||
int iVar7;
|
||||
ulonglong unaff_RBX;
|
||||
int iVar8;
|
||||
int iVar9;
|
||||
uint uVar10;
|
||||
uint uVar11;
|
||||
code *pcVar12;
|
||||
undefined1 auStack_18c8 [32];
|
||||
uint local_18a8;
|
||||
uint local_18a4;
|
||||
int local_18a0;
|
||||
uint *local_1898;
|
||||
int local_1890;
|
||||
uint local_1888 [6];
|
||||
uint local_1870;
|
||||
int *local_1868;
|
||||
undefined8 *local_1860;
|
||||
uint auStack_1858 [6];
|
||||
uint local_1840 [1530];
|
||||
ulonglong local_58;
|
||||
|
||||
local_58 = DAT_1401ac5a0 ^ (ulonglong)auStack_18c8;
|
||||
local_1898 = param_3;
|
||||
local_1868 = param_2;
|
||||
local_1860 = param_4;
|
||||
iVar2 = FUN_140103a40(param_2);
|
||||
if (iVar2 < 8) {
|
||||
iVar2 = 2;
|
||||
}
|
||||
else if (iVar2 < 0x25) {
|
||||
iVar2 = 3;
|
||||
}
|
||||
else if (iVar2 < 0x8d) {
|
||||
iVar2 = 4;
|
||||
}
|
||||
else if (iVar2 < 0x1c3) {
|
||||
iVar2 = 5;
|
||||
}
|
||||
else if (iVar2 < 0x518) {
|
||||
iVar2 = 6;
|
||||
}
|
||||
else {
|
||||
iVar2 = (0xdc9 < iVar2) + 7;
|
||||
}
|
||||
uVar3 = FUN_140103790(local_1840);
|
||||
if ((int)uVar3 != 0) {
|
||||
return unaff_RBX;
|
||||
}
|
||||
iVar8 = iVar2 + -1;
|
||||
uVar11 = 1 << (sbyte)iVar2;
|
||||
iVar7 = 1 << ((byte)iVar8 & 0x1f);
|
||||
local_18a0 = iVar7;
|
||||
local_18a4 = uVar11;
|
||||
for (iVar9 = iVar7; iVar9 < (int)uVar11; iVar9 = iVar9 + 1) {
|
||||
uVar3 = FUN_140103790(auStack_1858 + (longlong)iVar9 * 6);
|
||||
if ((int)uVar3 != 0) {
|
||||
if (iVar7 < iVar9) {
|
||||
uVar4 = (ulonglong)(uint)(iVar9 - local_18a0);
|
||||
puVar5 = auStack_1858 + (longlong)iVar7 * 6;
|
||||
do {
|
||||
FUN_1401037f0((int *)puVar5);
|
||||
puVar5 = puVar5 + 6;
|
||||
uVar4 = uVar4 - 1;
|
||||
} while (uVar4 != 0);
|
||||
}
|
||||
FUN_1401037f0((int *)local_1840);
|
||||
return unaff_RBX;
|
||||
}
|
||||
param_3 = local_1898;
|
||||
}
|
||||
if (param_5 == 0) {
|
||||
uVar3 = FUN_140104e00((longlong)param_3,&local_18a8);
|
||||
if ((int)uVar3 != 0) goto LAB_14010cc9d;
|
||||
if (((int)(*param_3 * 2 + 1) < 0x200) && ((int)*param_3 < 0x100)) {
|
||||
pcVar12 = FUN_14010c500;
|
||||
}
|
||||
else {
|
||||
pcVar12 = FUN_140104f30;
|
||||
}
|
||||
}
|
||||
else if (param_5 == 1) {
|
||||
FUN_14010fb90((longlong)param_3,(int *)&local_18a8);
|
||||
pcVar12 = FUN_14010fa80;
|
||||
}
|
||||
else {
|
||||
uVar4 = FUN_14010f9e0(param_3,&local_18a8);
|
||||
if ((int)uVar4 != 0) goto LAB_14010cc9d;
|
||||
pcVar12 = FUN_14010f8f0;
|
||||
}
|
||||
uVar3 = FUN_140103790(local_1888);
|
||||
uVar11 = local_18a4;
|
||||
if ((int)uVar3 != 0) goto LAB_14010cc9d;
|
||||
if (param_5 == 0) {
|
||||
uVar3 = FUN_140104e60(local_1888,param_3);
|
||||
if ((int)uVar3 != 0) goto LAB_14010cc8e;
|
||||
uVar4 = FUN_140104ce0(param_1,local_1888,param_3,local_1840);
|
||||
iVar9 = (int)uVar4;
|
||||
}
|
||||
else {
|
||||
FUN_14010c4c0(local_1888,1);
|
||||
uVar4 = FUN_14010bc40(param_1,param_3,local_1840);
|
||||
iVar9 = (int)uVar4;
|
||||
}
|
||||
if (iVar9 == 0) {
|
||||
puVar5 = auStack_1858 + (longlong)local_18a0 * 6;
|
||||
uVar3 = FUN_140103890(local_1840,puVar5);
|
||||
puVar1 = local_1898;
|
||||
if ((int)uVar3 == 0) {
|
||||
iVar9 = 0;
|
||||
if (0 < iVar8) {
|
||||
do {
|
||||
iVar7 = FUN_1401043c0(puVar5,puVar5);
|
||||
if ((iVar7 != 0) || (iVar7 = (*pcVar12)(puVar5,puVar1,local_18a8), iVar7 != 0))
|
||||
goto LAB_14010cc8e;
|
||||
iVar9 = iVar9 + 1;
|
||||
} while (iVar9 < iVar8);
|
||||
}
|
||||
iVar9 = local_18a0 + 1;
|
||||
iVar8 = local_18a0;
|
||||
if (iVar9 < (int)local_18a4) {
|
||||
do {
|
||||
iVar7 = FUN_140104250(auStack_1858 + (longlong)iVar8 * 6,local_1840,
|
||||
auStack_1858 + (longlong)iVar9 * 6);
|
||||
if ((iVar7 != 0) ||
|
||||
(iVar7 = (*pcVar12)(auStack_1858 + (longlong)iVar9 * 6,puVar1,local_18a8), iVar7 != 0))
|
||||
goto LAB_14010cc8e;
|
||||
iVar9 = iVar9 + 1;
|
||||
iVar8 = iVar8 + 1;
|
||||
} while (iVar9 < (int)local_18a4);
|
||||
}
|
||||
iVar9 = 0;
|
||||
iVar8 = 0;
|
||||
local_1890 = 1;
|
||||
uVar10 = 0;
|
||||
local_1898 = (uint *)(longlong)(*local_1868 + -1);
|
||||
puVar5 = local_1898;
|
||||
uVar11 = 0;
|
||||
do {
|
||||
do {
|
||||
do {
|
||||
while( true ) {
|
||||
local_1890 = local_1890 + -1;
|
||||
if (local_1890 == 0) {
|
||||
if (puVar5 == (uint *)0xffffffffffffffff) {
|
||||
if (((iVar9 != 2) || (iVar8 < 1)) || (iVar2 = 0, iVar8 < 1)) goto LAB_14010cc5e;
|
||||
goto LAB_14010cbf0;
|
||||
}
|
||||
puVar5 = (uint *)((longlong)puVar5 + -1);
|
||||
uVar11 = *(uint *)(*(longlong *)(local_1868 + 4) + 4 + (longlong)puVar5 * 4);
|
||||
local_1890 = 0x1c;
|
||||
local_1898 = puVar5;
|
||||
}
|
||||
local_1870 = uVar11 * 2;
|
||||
uVar6 = uVar11 >> 0x1b & 1;
|
||||
uVar11 = local_1870;
|
||||
if (iVar9 == 0) break;
|
||||
if ((iVar9 != 1) || (uVar6 != 0)) goto LAB_14010cac3;
|
||||
iVar7 = FUN_1401043c0(local_1888,local_1888);
|
||||
if ((iVar7 != 0) ||
|
||||
(iVar7 = (*pcVar12)(local_1888,puVar1,local_18a8), puVar5 = local_1898,
|
||||
uVar11 = local_1870, iVar7 != 0)) goto LAB_14010cc8e;
|
||||
}
|
||||
} while (uVar6 == 0);
|
||||
LAB_14010cac3:
|
||||
iVar8 = iVar8 + 1;
|
||||
iVar9 = 2;
|
||||
uVar10 = uVar10 | uVar6 << ((sbyte)iVar2 - (char)iVar8 & 0x1fU);
|
||||
puVar5 = local_1898;
|
||||
} while (iVar8 != iVar2);
|
||||
iVar8 = 0;
|
||||
if (iVar2 != 0) {
|
||||
do {
|
||||
iVar9 = FUN_1401043c0(local_1888,local_1888);
|
||||
if ((iVar9 != 0) || (iVar9 = (*pcVar12)(local_1888,puVar1,local_18a8), iVar9 != 0))
|
||||
goto LAB_14010cc8e;
|
||||
iVar8 = iVar8 + 1;
|
||||
} while (iVar8 < iVar2);
|
||||
}
|
||||
iVar8 = FUN_140104250(local_1888,auStack_1858 + (longlong)(int)uVar10 * 6,local_1888);
|
||||
if ((iVar8 != 0) || (iVar8 = (*pcVar12)(local_1888,puVar1,local_18a8), iVar8 != 0)) break;
|
||||
iVar8 = 0;
|
||||
iVar9 = 1;
|
||||
uVar10 = 0;
|
||||
puVar5 = local_1898;
|
||||
uVar11 = local_1870;
|
||||
} while( true );
|
||||
}
|
||||
}
|
||||
goto LAB_14010cc8e;
|
||||
while (iVar2 = iVar2 + 1, iVar2 < iVar8) {
|
||||
LAB_14010cbf0:
|
||||
iVar9 = FUN_1401043c0(local_1888,local_1888);
|
||||
if (((iVar9 != 0) || (iVar9 = (*pcVar12)(local_1888,puVar1,local_18a8), iVar9 != 0)) ||
|
||||
((uVar10 = uVar10 * 2, (local_18a4 & uVar10) != 0 &&
|
||||
((iVar9 = FUN_140104250(local_1888,local_1840,local_1888), iVar9 != 0 ||
|
||||
(iVar9 = (*pcVar12)(local_1888,puVar1,local_18a8), iVar9 != 0)))))) goto LAB_14010cc8e;
|
||||
}
|
||||
LAB_14010cc5e:
|
||||
if ((param_5 != 0) || (iVar2 = (*pcVar12)(local_1888,puVar1,local_18a8), iVar2 == 0)) {
|
||||
FUN_14010b960((undefined8 *)local_1888,local_1860);
|
||||
}
|
||||
LAB_14010cc8e:
|
||||
FUN_1401037f0((int *)local_1888);
|
||||
uVar11 = local_18a4;
|
||||
LAB_14010cc9d:
|
||||
FUN_1401037f0((int *)local_1840);
|
||||
if (local_18a0 < (int)uVar11) {
|
||||
puVar5 = auStack_1858 + (longlong)local_18a0 * 6;
|
||||
uVar4 = (ulonglong)(uVar11 - local_18a0);
|
||||
do {
|
||||
FUN_1401037f0((int *)puVar5);
|
||||
puVar5 = puVar5 + 6;
|
||||
uVar4 = uVar4 - 1;
|
||||
} while (uVar4 != 0);
|
||||
}
|
||||
return unaff_RBX;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue