/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x1401aa1d0 FUN_1401aa1d0 * Pseudocode, not original source. */ void FUN_1401aa1d0(longlong param_1,longlong param_2,undefined8 param_3) { longlong *plVar1; char cVar2; int iVar3; undefined4 uVar4; longlong lVar5; undefined4 *puVar6; undefined4 *puVar7; undefined4 *puVar8; int iVar9; undefined4 *local_res20; undefined4 *local_198; undefined1 local_190; undefined8 local_120; undefined1 local_118 [4]; undefined4 local_114; undefined8 local_e0; undefined1 local_70 [72]; local_120 = 0xfffffffffffffffe; if ((int)(*(int *)(param_2 + 8) + (*(int *)(param_2 + 8) >> 0x1f & 7U)) >> 3 != 0) { FUN_140193740(*(undefined8 *)(param_1 + 0x148),0, "Proud::CNetThreads_S::UserWorkerThread_FinalReceiveUserMessage",2); } if (*(longlong *)(*(longlong *)(param_1 + 0x148) + 0x758) != 0) { FUN_14016ec40(local_118); local_114 = *(undefined4 *)(param_2 + 0x30); local_118[0] = *(undefined1 *)(param_2 + 0x48); local_e0 = param_3; cVar2 = FUN_14016ba10(param_2 + 8,&local_res20); if (cVar2 != '\0') { lVar5 = *(longlong *)(param_2 + 0x10); if (lVar5 == 0) { if (*(longlong *)(param_2 + 0x18) == 0) { /* WARNING: Subroutine does not return */ FUN_14016d1e0(); } iVar9 = *(int *)(param_2 + 0x20); } else { iVar9 = *(int *)(lVar5 + 0x18); } iVar3 = (int)(*(int *)(param_2 + 8) + (*(int *)(param_2 + 8) >> 0x1f & 7U)) >> 3; if ((int)local_res20 == iVar9 - iVar3) { if (*(longlong *)(param_2 + 0x18) == 0) { if (lVar5 == 0) { /* WARNING: Subroutine does not return */ FUN_14016d1e0(); } if (*(int *)(lVar5 + 0x18) == 0) { lVar5 = 0; } else { lVar5 = *(longlong *)(lVar5 + 0x10); } } else { lVar5 = *(longlong *)(param_2 + 0x18); if (lVar5 == 0) { FUN_14016d300(local_70,PTR_u_ArrayWithExternalBuffer_is_unini_1403440d0); /* WARNING: Subroutine does not return */ _CxxThrowException(local_70,(ThrowInfo *)&DAT_1403417f8); } } plVar1 = *(longlong **)(*(longlong *)(param_1 + 0x148) + 0x758); (**(code **)(*plVar1 + 0x30)) (plVar1,*(undefined4 *)(param_2 + 0x30),local_118,lVar5 + iVar3,(int)local_res20); goto LAB_1401aa497; } } local_res20 = (undefined4 *)FUN_14016d940(0x60); if (local_res20 == (undefined4 *)0x0) { lVar5 = 0; } else { lVar5 = FUN_140198ee0(local_res20); } puVar8 = (undefined4 *)0x0; if (lVar5 == 0) { local_res20 = (undefined4 *)0x0; puVar6 = puVar8; } else { puVar6 = (undefined4 *)FUN_14016d940(0x48); local_198 = puVar6; if (puVar6 != (undefined4 *)0x0) { local_res20 = puVar6; uVar4 = FUN_140171510(); FUN_14016da70(puVar6,uVar4,1); } local_res20 = puVar6; FUN_14016db50(puVar6); *(undefined8 *)(puVar6 + 0x10) = 1; *(longlong *)(puVar6 + 0xe) = lVar5; FUN_14016dbe0(puVar6); } puVar7 = puVar8; if (puVar6 != (undefined4 *)0x0) { puVar7 = *(undefined4 **)(puVar6 + 0xe); } *puVar7 = 0x1f; if (puVar6 != (undefined4 *)0x0) { puVar8 = *(undefined4 **)(puVar6 + 0xe); } FUN_14004c050(puVar8 + 4,L"Invalid payload size in User Message!"); local_198 = (undefined4 *)0x0; FUN_140184b90(&local_198,&local_res20); (**(code **)(**(longlong **)(param_1 + 0x148) + 0x80)) (*(longlong **)(param_1 + 0x148),&local_198); if (puVar6 != (undefined4 *)0x0) { local_190 = 0; local_198 = puVar6; FUN_14016db50(puVar6); local_190 = 1; plVar1 = (longlong *)(puVar6 + 0x10); *plVar1 = *plVar1 + -1; if (*plVar1 == 0) { FUN_14016dbe0(puVar6); local_190 = 0; FUN_140154a90(puVar6); } else { FUN_14016dbe0(puVar6); } } } LAB_1401aa497: FUN_1401c2880(param_1 + 0x160,*(undefined4 *)(param_2 + 0x30),0); return; }