server-re/decomp/DBCServer_Release_x64/full/functions/0x1401a8530.c

180 lines
5.3 KiB
C

/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c
* Ghidra 12.1.2 decompiler output for 0x1401a8530 FUN_1401a8530
* Pseudocode, not original source. */
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
void FUN_1401a8530(longlong param_1,longlong param_2)
{
int iVar1;
undefined8 uVar2;
undefined8 uVar3;
longlong lVar4;
longlong lVar5;
undefined1 auStack_db8 [32];
wchar_t *local_d98;
int local_d90;
undefined1 local_d88 [4];
undefined4 local_d84;
longlong local_d80;
longlong local_d78;
undefined4 local_d70;
int local_d6c;
undefined8 local_d60;
undefined1 uStack_d58;
undefined3 uStack_d57;
undefined4 uStack_d54;
longlong *local_d50;
undefined1 local_d48;
undefined8 local_d40;
undefined1 local_d38;
undefined **local_d30;
undefined8 local_d28;
undefined8 local_d20;
undefined8 local_d18;
undefined8 local_d10;
undefined8 local_ce8;
undefined4 local_cd8;
undefined4 uStack_cd4;
undefined4 uStack_cd0;
undefined4 uStack_ccc;
undefined4 *local_58;
undefined4 local_50;
int local_4c;
ulonglong local_48;
local_ce8 = 0xfffffffffffffffe;
local_48 = DAT_1403463c0 ^ (ulonglong)auStack_db8;
FUN_1401b1b20(param_2 + 0xc0);
uVar2 = (**(code **)(**(longlong **)(param_1 + 0x148) + 0x58))();
local_d40 = uVar2;
FUN_14016db50(uVar2);
local_d38 = 1;
if (DAT_14034c86f != '\0') {
(**(code **)(**(longlong **)(param_1 + 0x148) + 200))
(*(longlong **)(param_1 + 0x148),
L"Proud::CNetThreads_S::NetWorkerThread_NewClientCase");
}
FUN_1401a33f0(*(undefined8 *)(*(longlong *)(param_1 + 0x148) + 0x788),
*(undefined8 *)(*(longlong *)(param_2 + 0x748) + 0x110));
FUN_14016b440(local_d88);
FUN_14016abe0(local_d88);
FUN_14016b5a0(local_d88,0x800);
FUN_14016b5a0(local_d88,0);
FUN_14004eef0(local_d88,4);
FUN_14004eef0(local_d88,*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x17f0) != 0);
FUN_14016c330(local_d88,*(longlong *)(param_1 + 0x148) + 0x228);
lVar4 = *(longlong *)(param_1 + 0x148);
iVar1 = *(int *)(lVar4 + 0xc68);
FUN_14016cac0(local_d88,(longlong)iVar1);
lVar5 = 0;
if (*(int *)(lVar4 + 0xc68) != 0) {
lVar5 = *(longlong *)(lVar4 + 0xc60);
}
if (iVar1 == 0) goto LAB_1401a86dc;
local_d84 = 0;
if (local_d80 == 0) {
if (local_d78 == 0) {
/* WARNING: Subroutine does not return */
FUN_14016d1e0(0,lVar5);
}
LAB_1401a86ae:
FUN_14004efd0(&local_d78,lVar5,iVar1);
}
else {
if (local_d78 != 0) goto LAB_1401a86ae;
if (local_d80 == 0) {
/* WARNING: Subroutine does not return */
FUN_14016d1e0(0,lVar5);
}
FUN_14004f200(local_d80,lVar5,iVar1);
}
FUN_14004f270(local_d88);
LAB_1401a86dc:
FUN_14016dbe0(uVar2);
local_d38 = 0;
uVar3 = (**(code **)(*(longlong *)(param_2 + 0x108) + 0x10))();
local_d50 = (longlong *)uVar3;
FUN_14016db50(uVar3);
local_d48 = 1;
local_4c = 200;
local_50 = 0;
local_58 = &local_cd8;
if (local_d80 == 0) {
uStack_cd0 = local_d70;
if (local_d78 == 0) {
/* WARNING: Subroutine does not return */
FUN_14016d1e0();
}
}
else {
uStack_cd0 = *(undefined4 *)(local_d80 + 0x18);
}
lVar4 = local_d78;
if (local_d78 == 0) {
if (local_d80 == 0) {
/* WARNING: Subroutine does not return */
FUN_14016d1e0();
}
lVar4 = 0;
if (*(int *)(local_d80 + 0x18) != 0) {
lVar4 = *(longlong *)(local_d80 + 0x10);
}
}
local_50 = 1;
local_d60._0_4_ = (undefined4)lVar4;
local_d60._4_4_ = (undefined4)((ulonglong)lVar4 >> 0x20);
local_cd8 = (undefined4)local_d60;
uStack_cd4 = local_d60._4_4_;
uStack_ccc = uStack_d54;
local_d60 = 0;
_uStack_d58 = CONCAT31((int3)((uint)uStack_cd0 >> 8),1);
FUN_1401ba860(*(undefined8 *)(param_2 + 0x748),&local_cd8,&local_d60);
if (local_58 != (undefined4 *)0x0) {
if (local_4c < 0) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
iVar1 = FUN_1401ba4d0(*(undefined8 *)(param_2 + 0x748));
if (iVar1 == 0) {
FUN_14016dbe0(uVar3);
local_d48 = 0;
}
else {
FUN_14016dbe0(uVar3);
local_d48 = 0;
local_d38 = 1;
FUN_14016db50(uVar2);
local_d28 = 0;
local_d20 = 0;
local_d18 = 0;
local_d10 = 0;
local_d30 = Proud::ByteArray::vftable;
local_d98 = L"Proud::CNetThreads_S::NetWorkerThread_NewClientCase";
local_d90 = iVar1;
(**(code **)(*(longlong *)(param_2 + 0xa0) + 0x38))(param_2 + 0xa0,0xb,3,&local_d30);
FUN_14019a9e0(&local_d30);
(**(code **)(*(longlong *)(param_2 + 0xa0) + 0x40))
(param_2 + 0xa0,L"Proud::CNetThreads_S::NetWorkerThread_NewClientCase");
}
FUN_1401baa20(param_2 + 0xc0);
local_d50 = &local_d80;
FUN_14016d0e0(&local_d80);
if (local_d78 != 0) {
if (local_d6c < 0) {
/* WARNING: Subroutine does not return */
FUN_14016d6b0();
}
local_d70 = 0;
}
if (iVar1 != 0) {
FUN_14016dbe0(uVar2);
}
return;
}
FUN_14016d300(&local_d30,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0);
/* WARNING: Subroutine does not return */
_CxxThrowException(&local_d30,(ThrowInfo *)&DAT_1403417f8);
}