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
288
decomp/DBCServer_Release_x64/full/functions/0x1401aa4c0.c
Normal file
288
decomp/DBCServer_Release_x64/full/functions/0x1401aa4c0.c
Normal file
|
|
@ -0,0 +1,288 @@
|
|||
/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
|
||||
* Ghidra 12.1.2 decompiler output for 0x1401aa4c0 FUN_1401aa4c0
|
||||
* Pseudocode, not original source. */
|
||||
|
||||
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
||||
|
||||
void FUN_1401aa4c0(longlong param_1)
|
||||
|
||||
{
|
||||
ulonglong *puVar1;
|
||||
longlong lVar2;
|
||||
undefined *puVar3;
|
||||
char cVar4;
|
||||
int iVar5;
|
||||
int iVar6;
|
||||
int *piVar7;
|
||||
undefined8 uVar8;
|
||||
int iVar9;
|
||||
int iVar10;
|
||||
ulonglong uVar11;
|
||||
int *piVar12;
|
||||
undefined *puVar13;
|
||||
ulonglong uVar14;
|
||||
int iVar15;
|
||||
ulonglong uVar16;
|
||||
undefined1 auStack_2a8 [32];
|
||||
undefined ***local_288;
|
||||
undefined1 local_278 [8];
|
||||
int *local_270;
|
||||
longlong local_268;
|
||||
longlong local_260;
|
||||
undefined **local_258;
|
||||
undefined4 local_250;
|
||||
undefined2 local_24c;
|
||||
undefined *local_238 [2];
|
||||
undefined **local_228;
|
||||
undefined4 local_220;
|
||||
undefined2 local_21c;
|
||||
undefined8 local_218;
|
||||
undefined1 local_210;
|
||||
undefined **local_208;
|
||||
undefined4 local_200;
|
||||
undefined2 local_1fc;
|
||||
undefined **local_1f8;
|
||||
undefined8 local_1f0;
|
||||
undefined8 local_1e8;
|
||||
undefined8 local_1e0;
|
||||
undefined8 local_1d8;
|
||||
undefined8 local_1d0;
|
||||
undefined1 local_1c8;
|
||||
undefined8 local_1c0;
|
||||
undefined8 local_1b8;
|
||||
undefined4 local_1b0;
|
||||
undefined8 local_1a8;
|
||||
undefined4 local_1a0;
|
||||
undefined **local_198;
|
||||
undefined4 local_190;
|
||||
undefined2 local_18c;
|
||||
undefined1 local_158 [8];
|
||||
undefined8 local_150;
|
||||
ulonglong local_38;
|
||||
|
||||
local_150 = 0xfffffffffffffffe;
|
||||
local_38 = DAT_1403463c0 ^ (ulonglong)auStack_2a8;
|
||||
local_260 = param_1;
|
||||
FUN_1401c5a10(local_278);
|
||||
uVar16 = 0;
|
||||
local_268 = 0;
|
||||
uVar14 = 1;
|
||||
do {
|
||||
while( true ) {
|
||||
while( true ) {
|
||||
if (*(char *)(param_1 + 0x140) != '\0') {
|
||||
if (*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x17f0) != 0) {
|
||||
FUN_14016d8c0();
|
||||
local_238[0] = PTR_DAT_1403440a0;
|
||||
FUN_14004c020(local_238,&DAT_140282f80,L"Proud::CNetThreads_S::TcpListenerProc");
|
||||
puVar3 = local_238[0];
|
||||
puVar13 = local_238[0];
|
||||
if (local_238[0] == (undefined *)0x0) {
|
||||
puVar13 = PTR_DAT_1403440a0;
|
||||
}
|
||||
FUN_1401adb30(*(undefined8 *)(*(longlong *)(param_1 + 0x148) + 0x17f0),0,puVar13);
|
||||
if (((puVar3 != (undefined *)0x0) && (puVar3 != PTR_DAT_1403440a0)) &&
|
||||
(puVar3 + -8 != (undefined *)0x0)) {
|
||||
uVar8 = FUN_14016d8c0();
|
||||
local_1c8 = 0;
|
||||
local_1d0 = uVar8;
|
||||
FUN_14016db50(uVar8);
|
||||
local_1c8 = 1;
|
||||
piVar7 = (int *)(puVar3 + -4);
|
||||
*piVar7 = *piVar7 + -1;
|
||||
if (*piVar7 == 0) {
|
||||
FUN_14016d970(puVar3 + -8);
|
||||
}
|
||||
FUN_14016dbe0(uVar8);
|
||||
}
|
||||
}
|
||||
lVar2 = local_268;
|
||||
if (local_268 != 0) {
|
||||
FUN_14019c9e0(local_268);
|
||||
FUN_14016d970(lVar2);
|
||||
}
|
||||
FUN_1401c5a40(local_278);
|
||||
return;
|
||||
}
|
||||
iVar15 = 0;
|
||||
if (((local_268 == 0) && ((char)uVar14 != '\0')) &&
|
||||
(local_268 = FUN_1401a93d0(param_1), local_268 == 0)) {
|
||||
uVar14 = uVar16;
|
||||
}
|
||||
lVar2 = local_268;
|
||||
local_198 = Proud::AddrPort::vftable;
|
||||
local_1c0 = 0;
|
||||
local_1a8 = 0;
|
||||
local_1b8 = 0;
|
||||
local_1b0 = 5;
|
||||
local_1a0 = 0;
|
||||
local_190 = DAT_140344450;
|
||||
local_18c = DAT_140344454;
|
||||
cVar4 = FUN_1401a22b0(*(undefined8 *)(*(longlong *)(param_1 + 0x148) + 0x790),&local_1c0,
|
||||
DAT_140344c98);
|
||||
if (cVar4 == '\x01') break;
|
||||
puVar1 = *(ulonglong **)(*(longlong *)(param_1 + 0x148) + 0x748);
|
||||
uVar11 = uVar16;
|
||||
if (puVar1 != (ulonglong *)0x0) {
|
||||
uVar11 = *puVar1;
|
||||
}
|
||||
FUN_14019c8d0(uVar11);
|
||||
}
|
||||
if (lVar2 == 0) break;
|
||||
local_208 = Proud::AddrPort::vftable;
|
||||
local_200 = 0;
|
||||
local_1fc = 0;
|
||||
local_258 = Proud::AddrPort::vftable;
|
||||
local_250 = 0;
|
||||
local_24c = 0;
|
||||
puVar1 = *(ulonglong **)(*(longlong *)(param_1 + 0x148) + 0x748);
|
||||
uVar11 = uVar16;
|
||||
if (puVar1 != (ulonglong *)0x0) {
|
||||
uVar11 = *puVar1;
|
||||
}
|
||||
FUN_14019c720(lVar2,uVar11,&local_208,&local_258);
|
||||
cVar4 = FUN_14016f870(&local_258);
|
||||
if (cVar4 == '\0') {
|
||||
LAB_1401aa682:
|
||||
FUN_14019c9e0(lVar2);
|
||||
FUN_14016d970(lVar2);
|
||||
}
|
||||
else {
|
||||
local_228 = Proud::AddrPort::vftable;
|
||||
local_220 = local_250;
|
||||
local_21c = local_24c;
|
||||
cVar4 = FUN_1401a9020(param_1,lVar2,&local_228);
|
||||
if (cVar4 == '\0') goto LAB_1401aa682;
|
||||
}
|
||||
local_268 = 0;
|
||||
}
|
||||
FUN_14016d8c0();
|
||||
local_270 = (int *)PTR_DAT_1403440a0;
|
||||
iVar5 = FUN_14016d740(L"acceptex getqueued but socket null");
|
||||
iVar6 = iVar15;
|
||||
if ((local_270 != (int *)0x0) && (local_270 != (int *)PTR_DAT_1403440a0)) {
|
||||
iVar6 = local_270[-2];
|
||||
}
|
||||
iVar9 = 0;
|
||||
iVar10 = iVar5;
|
||||
if (((iVar5 <= iVar6) && (iVar10 = iVar9, local_270 != (int *)0x0)) &&
|
||||
(local_270 != (int *)PTR_DAT_1403440a0)) {
|
||||
iVar10 = local_270[-2];
|
||||
}
|
||||
iVar6 = 1;
|
||||
if (1 < iVar10) {
|
||||
iVar6 = iVar10;
|
||||
}
|
||||
uVar11 = uVar16;
|
||||
if ((local_270 != (int *)0x0) && (uVar11 = 0, local_270 != (int *)PTR_DAT_1403440a0)) {
|
||||
uVar11 = (ulonglong)(uint)local_270[-2];
|
||||
}
|
||||
if ((int)uVar11 < iVar6) {
|
||||
if (local_270 == (int *)0x0) {
|
||||
local_270 = (int *)PTR_DAT_1403440a0;
|
||||
}
|
||||
if (iVar6 < 0) {
|
||||
/* WARNING: Subroutine does not return */
|
||||
FUN_14016d6b0();
|
||||
}
|
||||
if (iVar6 == 0) {
|
||||
FUN_14004eb70(&local_270);
|
||||
}
|
||||
else {
|
||||
iVar10 = iVar9;
|
||||
if ((local_270 != (int *)0x0) && (local_270 != (int *)PTR_DAT_1403440a0)) {
|
||||
iVar10 = local_270[-2];
|
||||
}
|
||||
if (iVar6 != iVar10) {
|
||||
piVar7 = (int *)FUN_14016d940((longlong)iVar6 * 2 + 10);
|
||||
if (piVar7 != (int *)0x0) {
|
||||
*piVar7 = 0;
|
||||
piVar7[1] = 1;
|
||||
}
|
||||
*piVar7 = iVar6;
|
||||
iVar10 = iVar9;
|
||||
if ((local_270 != (int *)0x0) && (local_270 != (int *)PTR_DAT_1403440a0)) {
|
||||
iVar10 = local_270[-2];
|
||||
}
|
||||
piVar12 = (int *)PTR_DAT_1403440a0;
|
||||
if (iVar6 < iVar10) {
|
||||
LAB_1401aa7a7:
|
||||
if (local_270 != (int *)0x0) {
|
||||
piVar12 = local_270;
|
||||
}
|
||||
}
|
||||
else {
|
||||
iVar6 = iVar15;
|
||||
if (local_270 != (int *)0x0) {
|
||||
if (local_270 != (int *)PTR_DAT_1403440a0) {
|
||||
iVar6 = local_270[-2];
|
||||
}
|
||||
goto LAB_1401aa7a7;
|
||||
}
|
||||
}
|
||||
FUN_14016d770(piVar7 + 2,piVar12,iVar6);
|
||||
FUN_14004eb70(&local_270);
|
||||
local_270 = piVar7 + 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
FUN_14004e850(&local_270);
|
||||
piVar7 = local_270;
|
||||
if (local_270 == (int *)0x0) {
|
||||
piVar7 = (int *)PTR_DAT_1403440a0;
|
||||
}
|
||||
FUN_14016d770(piVar7,L"acceptex getqueued but socket null",iVar5);
|
||||
piVar7 = local_270;
|
||||
if (local_270 == (int *)0x0) {
|
||||
piVar7 = (int *)PTR_DAT_1403440a0;
|
||||
}
|
||||
iVar6 = FUN_14016d740(piVar7);
|
||||
iVar15 = 0;
|
||||
if (0 < iVar6) {
|
||||
iVar15 = iVar6;
|
||||
}
|
||||
iVar6 = iVar9;
|
||||
if ((local_270 != (int *)0x0) && (local_270 != (int *)PTR_DAT_1403440a0)) {
|
||||
iVar6 = local_270[-2];
|
||||
}
|
||||
if ((iVar15 < iVar6) || (iVar15 = iVar9, local_270 == (int *)0x0)) {
|
||||
LAB_1401aa84a:
|
||||
if (((local_270 != (int *)PTR_DAT_1403440a0) && (local_270 != (int *)0x0)) &&
|
||||
(local_270 + -2 != (int *)0x0)) {
|
||||
local_270[-2] = iVar15;
|
||||
*(undefined2 *)((longlong)local_270 + (longlong)iVar15 * 2) = 0;
|
||||
}
|
||||
}
|
||||
else if (local_270 != (int *)PTR_DAT_1403440a0) {
|
||||
iVar15 = local_270[-2];
|
||||
goto LAB_1401aa84a;
|
||||
}
|
||||
local_1f0 = 0;
|
||||
local_1e8 = 0;
|
||||
local_1e0 = 0;
|
||||
local_1d8 = 0;
|
||||
local_1f8 = Proud::ByteArray::vftable;
|
||||
local_288 = &local_1f8;
|
||||
uVar8 = FUN_140198f80(local_158,1,0,&local_270);
|
||||
(**(code **)(**(longlong **)(param_1 + 0x148) + 0x80))(*(longlong **)(param_1 + 0x148),uVar8);
|
||||
FUN_14019a9e0(&local_1f8);
|
||||
piVar7 = local_270;
|
||||
if (((local_270 != (int *)0x0) && (local_270 != (int *)PTR_DAT_1403440a0)) &&
|
||||
(piVar12 = local_270 + -2, piVar12 != (int *)0x0)) {
|
||||
uVar8 = FUN_14016d8c0();
|
||||
local_210 = 0;
|
||||
local_218 = uVar8;
|
||||
FUN_14016db50(uVar8);
|
||||
local_210 = 1;
|
||||
piVar7 = piVar7 + -1;
|
||||
*piVar7 = *piVar7 + -1;
|
||||
if (*piVar7 == 0) {
|
||||
FUN_14016d970(piVar12);
|
||||
}
|
||||
FUN_14016dbe0(uVar8);
|
||||
local_210 = 0;
|
||||
}
|
||||
local_270 = (int *)PTR_DAT_1403440a0;
|
||||
} while( true );
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue