/* 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); }