/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401a8110 FUN_1401a8110 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_1401a8110(longlong param_1,undefined8 param_2,longlong param_3) { char cVar1; int iVar2; undefined8 uVar3; longlong lVar4; undefined **ppuVar5; undefined8 uVar6; bool bVar7; undefined1 auStack_da8 [32]; undefined **local_d88; undefined *local_d80; longlong local_d78; ulonglong local_d70; undefined8 local_d68; undefined **local_d60; undefined8 local_d58; longlong local_d50; undefined8 local_d48; undefined8 local_d40; undefined **local_d38; undefined8 local_d30; undefined8 local_d28; undefined8 local_d20; undefined8 local_d18; undefined8 local_d10; undefined1 local_d08; undefined8 local_d00; undefined **local_cf8; undefined4 uStack_cf0; undefined4 uStack_cec; undefined **local_ce8; undefined4 uStack_ce0; undefined4 uStack_cdc; undefined1 local_cd8 [3216]; ulonglong local_48; local_d00 = 0xfffffffffffffffe; local_48 = DAT_1403463c0 ^ (ulonglong)auStack_da8; FUN_1401b1b20(param_3 + 0xc0); uVar3 = (**(code **)(**(longlong **)(param_1 + 0x148) + 0x58))(); local_d10 = uVar3; FUN_14016db50(uVar3); local_d08 = 1; if (DAT_14034c86f != '\0') { (**(code **)(**(longlong **)(param_1 + 0x148) + 200)) (*(longlong **)(param_1 + 0x148), L"Proud::CNetThreads_S::NetWorkerThread_ProcessMessage_NotifyServerConnectionRequestData" ); } iVar2 = 0; lVar4 = 0; if (*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x1708) != 0) { lVar4 = *(longlong *)(*(longlong *)(param_1 + 0x148) + 0x16f8); } do { if (lVar4 == 0) { FUN_1401a7880(param_1,param_3); LAB_1401a84ef: FUN_14016dbe0(uVar3); return; } if (param_3 == *(longlong *)(lVar4 + 0x10)) { local_d58 = 0; local_d50 = 0; local_d48 = 0; local_d40 = 0; local_d60 = Proud::ByteArray::vftable; cVar1 = FUN_14016ba10(param_2,&local_cf8); ppuVar5 = local_cf8; if (((cVar1 != '\0') && (-1 < (int)local_cf8)) && ((int)local_cf8 <= DAT_140344d70)) { FUN_14004f0e0(&local_d60,(ulonglong)local_cf8 & 0xffffffff); lVar4 = local_d50; if ((int)local_d48 == 0) { lVar4 = 0; } cVar1 = FUN_14016b370(param_2,lVar4,(ulonglong)ppuVar5 & 0xffffffff); if (cVar1 != '\0') { local_cf8 = (undefined **)0x0; uStack_cf0 = 0; uStack_cec = 0; cVar1 = FUN_14016b370(param_2,&local_cf8,0x10); if (cVar1 == '\0') { FUN_1401a7880(param_1,param_3); FUN_14019a9e0(&local_d60); } else { local_ce8 = local_cf8; uStack_ce0 = uStack_cf0; uStack_cdc = uStack_cec; cVar1 = FUN_14016b370(param_2,&local_cf8,4); if (cVar1 == '\0') { FUN_1401a7880(param_1,param_3); FUN_14019a9e0(&local_d60); } else { lVar4 = *(longlong *)(param_1 + 0x148); bVar7 = local_ce8 < *(undefined ***)(lVar4 + 1000); if ((local_ce8 != *(undefined ***)(lVar4 + 1000)) || (bVar7 = CONCAT44(uStack_cdc,uStack_ce0) < *(ulonglong *)(lVar4 + 0x3f0), CONCAT44(uStack_cdc,uStack_ce0) != *(ulonglong *)(lVar4 + 0x3f0))) { iVar2 = (1 - (uint)bVar7) - (uint)(bVar7 != 0); } if ((iVar2 == 0) && ((int)local_cf8 == *(int *)(lVar4 + 0x220))) { cVar1 = FUN_1401723c0(param_3 + 0x288); if (cVar1 == '\x01') { lVar4 = *(longlong *)(param_1 + 0x148); if (*(longlong *)(lVar4 + 0x758) == 0) { local_d80 = (undefined *)0x0; local_d78 = 0; local_d70 = 0; local_d68 = 0; local_d88 = Proud::ByteArray::vftable; FUN_14018d970(lVar4,param_3,&local_d88); FUN_14019a9e0(&local_d88); } else { local_cf8 = Proud::AddrPort::vftable; uStack_cf0 = *(undefined4 *)(*(longlong *)(param_3 + 0x748) + 0x130); uStack_cec = CONCAT22(uStack_cec._2_2_, *(undefined2 *)(*(longlong *)(param_3 + 0x748) + 0x134)); FUN_1401951f0(lVar4,&local_cf8,&local_d60); } FUN_14019a9e0(&local_d60); } else { FUN_14016b440(&local_d88); FUN_14016abe0(&local_d88); FUN_14016b5a0(&local_d88,0x800); FUN_14016b5a0(&local_d88,0); FUN_14004eef0(&local_d88,9); local_d30 = 0; local_d28 = 0; local_d20 = 0; local_d18 = 0; local_d38 = Proud::ByteArray::vftable; FUN_14016cac0(&local_d88,0); FUN_14019a9e0(&local_d38); ppuVar5 = (undefined **)(**(code **)(*(longlong *)(param_3 + 0x108) + 0x10))(); local_ce8 = ppuVar5; FUN_14016db50(ppuVar5); uStack_ce0 = CONCAT31(uStack_ce0._1_3_,1); uVar6 = FUN_14016e080(local_cd8,&local_d88); local_cf8 = (undefined **)0x0; uStack_cf0 = CONCAT31(uStack_cf0._1_3_,1); FUN_1401ba860(*(undefined8 *)(param_3 + 0x748),uVar6,&local_cf8); FUN_14016ddc0(local_cd8); FUN_14016dbe0(ppuVar5); local_cf8 = &local_d80; FUN_14016d0e0(&local_d80); if (local_d78 != 0) { if ((longlong)local_d70 < 0) { /* WARNING: Subroutine does not return */ FUN_14016d6b0(); } local_d70 = local_d70 & 0xffffffff00000000; } FUN_14019a9e0(&local_d60); } } else { FUN_1401a7880(param_1,param_3); FUN_14019a9e0(&local_d60); } } } goto LAB_1401a84ef; } } FUN_1401a7880(param_1,param_3); FUN_14019a9e0(&local_d60); goto LAB_1401a84ef; } lVar4 = *(longlong *)(lVar4 + 0x18); } while( true ); }