180 lines
5.3 KiB
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);
|
|
}
|
|
|