/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400c4f80 FUN_1400c4f80 * Pseudocode, not original source. */ /* WARNING: Function: __chkstk replaced with injection: alloca_probe */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ void FUN_1400c4f80(longlong param_1,uint *param_2,wchar_t *param_3,undefined8 param_4) { int iVar1; uint uVar2; undefined8 uVar3; ulonglong uVar4; int *piVar5; longlong lVar6; uint uVar7; undefined1 *puVar8; wchar_t *pwVar9; undefined8 uVar10; SIZE_T SVar11; longlong **pplVar12; undefined1 auStack_1aa8 [32]; longlong *local_1a88; undefined1 local_1a80; uint local_1a78; uint local_1a74; int local_1a70 [2]; longlong local_1a68; longlong local_1a60; int local_1a54; int *local_1a48; undefined1 local_1a40; int *local_1a38; undefined1 local_1a30; longlong local_1a28 [2]; undefined8 local_1a18; undefined4 local_1a08 [2]; longlong local_1a00; longlong local_19f8; undefined4 local_19f0; int local_19ec; undefined1 local_19e0 [136]; undefined1 local_1958 [3200]; undefined1 *local_cd8; undefined4 local_cd0; undefined4 local_ccc; undefined1 local_cc8 [3216]; ulonglong local_38; undefined8 uStack_30; uStack_30 = 0x1400c4f9a; local_1a18 = 0xfffffffffffffffe; local_38 = DAT_1401ac5a0 ^ (ulonglong)auStack_1aa8; pwVar9 = param_3; FUN_1400cf890(); uVar3 = FUN_1400bd3c0(param_2,&local_1a78,pwVar9,param_4); if ((char)uVar3 != '\0') { uVar10 = 4; uVar3 = FUN_1400bc930(param_2,(undefined8 *)&local_1a74,4); if ((char)uVar3 != '\0') { uVar4 = FUN_1400bcfd0(param_2,&local_1a88,uVar10,param_4); if ((char)uVar4 != '\0') { if (((int)(uint)local_1a88 < 0) || (DAT_1401ac140 <= (int)(uint)local_1a88)) { FUN_14009b0d0(*(longlong **)(param_1 + 0x148),param_3, "Proud::CNetThreads_S::NetWorkerThread_ProcessMessage_LingerDataFrame1",2); } else { uVar2 = *param_2; uVar7 = (int)uVar2 >> 0x1f & 7; iVar1 = FUN_14007c120((longlong)param_2,(ulonglong)uVar7,uVar10,param_4); if (((int)(uVar7 + uVar2) >> 3) + (uint)local_1a88 != iVar1) { param_4 = 2; FUN_14009b0d0(*(longlong **)(param_1 + 0x148),param_3, "msg.GetReadOffset() + frameLength == msg.GetLength()",2); } FUN_1400bca00(local_1a70); uVar3 = FUN_1400bcc60(param_2,local_1a70,(uint)local_1a88,param_4); if ((char)uVar3 == '\0') { FUN_14009b0d0(*(longlong **)(param_1 + 0x148),param_3, "Proud::CNetThreads_S::NetWorkerThread_ProcessMessage_LingerDataFrame1",2) ; local_1a88 = &local_1a68; FUN_1400d1800(&local_1a68); if ((local_1a60 != 0) && (local_1a54 < 0)) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } } else { piVar5 = (int *)(**(code **)(**(longlong **)(param_1 + 0x148) + 0x58))(); local_1a48 = piVar5; FUN_14006b350(piVar5); local_1a40 = 1; if (DAT_1401b42cf != '\0') { (**(code **)(**(longlong **)(param_1 + 0x148) + 200)) (*(longlong **)(param_1 + 0x148), L"Proud::CNetThreads_S::NetWorkerThread_ProcessMessage_LingerDataFrame1"); } uVar2 = (**(code **)(*(longlong *)param_3 + 0x10))(param_3); lVar6 = FUN_14007dea0(*(longlong *)(param_1 + 0x148),local_1a78); if (lVar6 == 0) { FUN_14006b3e0((longlong)piVar5); local_1a88 = &local_1a68; FUN_1400d1800(&local_1a68); if ((local_1a60 != 0) && (local_1a54 < 0)) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } } else { FUN_14006b3e0((longlong)piVar5); local_1a40 = 0; FUN_1400bca00(local_1a08); SVar11 = 0x80; puVar8 = local_19e0; FUN_1400bc680((longlong)local_1a08,(longlong)puVar8,0x80,param_4); FUN_140054a10((longlong)local_1a08,CONCAT71((int7)((ulonglong)puVar8 >> 8),0x19), SVar11,param_4); FUN_140014500((longlong)local_1a08,(ulonglong)uVar2,SVar11,param_4); FUN_140014500((longlong)local_1a08,(ulonglong)local_1a74,SVar11,param_4); FUN_1400bc450(local_1a28,(longlong)local_1a08); FUN_1400bddd0((longlong)local_1a08,(longlong)(int)(uint)local_1a88,SVar11,param_4); local_ccc = 200; local_cd0 = 0; local_cd8 = local_1958; FUN_14007db50((longlong)local_cc8,(longlong)local_1a08,SVar11); puVar8 = local_cc8; FUN_14007cb60((longlong)local_1958,(longlong)puVar8,SVar11,param_4); FUN_14007ca50((longlong)local_cc8,puVar8,SVar11,param_4); FUN_14007db50((longlong)local_cc8,(longlong)local_1a70,SVar11); puVar8 = local_cc8; FUN_14007cb60((longlong)local_1958,(longlong)puVar8,SVar11,param_4); FUN_14007ca50((longlong)local_cc8,puVar8,SVar11,param_4); piVar5 = (int *)(**(code **)(*(longlong *)(lVar6 + 0x108) + 0x10))(); local_1a38 = piVar5; FUN_14006b350(piVar5); local_1a30 = 1; local_1a88 = (longlong *)0x0; local_1a80 = 1; pplVar12 = &local_1a88; puVar8 = local_1958; FUN_1400d87b0(*(char **)(lVar6 + 0x748),(longlong)puVar8,(SIZE_T *)pplVar12,param_4); FUN_14006b3e0((longlong)piVar5); FUN_14007ca50((longlong)local_1958,puVar8,pplVar12,param_4); FUN_1400bc470(local_1a28); local_1a88 = &local_1a00; FUN_1400d1800(&local_1a00); if (local_19f8 != 0) { if (local_19ec < 0) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } local_19f0 = 0; } local_1a88 = &local_1a68; FUN_1400d1800(&local_1a68); if ((local_1a60 != 0) && (local_1a54 < 0)) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } } } } } } } return; }