/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x1400c8d00 FUN_1400c8d00 * Pseudocode, not original source. */ void FUN_1400c8d00(longlong param_1,int *param_2,SIZE_T param_3,longlong param_4,char param_5) { uint uVar1; longlong lVar2; int iVar3; int *piVar4; undefined4 *puVar5; longlong lVar6; longlong lVar7; undefined4 local_58 [2]; longlong local_50; longlong local_48; int local_3c; int local_30; undefined **local_28; int local_20; undefined2 local_1c; undefined1 local_18; piVar4 = param_2; lVar7 = param_4; FUN_1400bca00(local_58); local_28 = Proud::AddrPort::vftable; local_18 = 0; local_30 = 0; local_20 = DAT_1401ac3d0; local_1c = DAT_1401ac3d4; puVar5 = local_58; FUN_1400bc4d0((longlong)puVar5,piVar4,param_3,lVar7); if (*(longlong *)(param_2 + 2) == 0) { if (*(longlong *)(param_2 + 4) == 0) { /* WARNING: Subroutine does not return */ FUN_1400d1900(puVar5,piVar4,param_3,lVar7); } uVar1 = param_2[6]; } else { uVar1 = *(uint *)(*(longlong *)(param_2 + 2) + 0x18); } iVar3 = (int)(*param_2 + (*param_2 >> 0x1f & 7U)) >> 3; lVar6 = *(longlong *)(param_2 + 4); if (lVar6 == 0) { lVar2 = *(longlong *)(param_2 + 2); if (lVar2 == 0) { /* WARNING: Subroutine does not return */ FUN_1400d1900(0,(longlong)iVar3,(ulonglong)uVar1,lVar7); } if (*(int *)(lVar2 + 0x18) != 0) { lVar6 = *(longlong *)(lVar2 + 0x10); } } FUN_1400bcfa0((longlong)local_58,(undefined8 *)(iVar3 + lVar6),(ulonglong)(uVar1 - iVar3),lVar7); local_18 = (undefined1)param_2[0x10]; local_20 = param_2[0xe]; local_1c = (undefined2)param_2[0xf]; local_30 = param_2[10]; FUN_1400cf890(); piVar4 = (int *)(**(code **)(**(longlong **)(param_1 + 0x148) + 0x58))(); FUN_14006b350(piVar4); if (DAT_1401b42cf != '\0') { (**(code **)(**(longlong **)(param_1 + 0x148) + 200)) (*(longlong **)(param_1 + 0x148), L"Proud::CNetThreads_S::NetWorkerThread_ProcessMessage_UserMessage"); } FUN_1400c89b0(param_1,param_4,local_58,2,param_5); FUN_14006b3e0((longlong)piVar4); FUN_1400d1800(&local_50); if ((local_48 != 0) && (local_3c < 0)) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } return; }