/* MessageServer_Release_x64.exe sha256 7911b15c4379625eaa12ff227708aa3a033bc6ac2cf6b34283136e3a62df25f1 * Ghidra 12.1.2 decompiler output for 0x140073bc0 FUN_140073bc0 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ uint FUN_140073bc0(longlong param_1,longlong *param_2,longlong param_3,undefined8 param_4) { longlong lVar1; int iVar2; undefined *puVar3; longlong *plVar4; ulonglong uVar5; ulonglong uVar6; uint uVar7; uint uVar8; undefined8 uVar10; undefined4 *puVar11; undefined1 auStack_b8 [32]; undefined4 local_98; undefined2 *local_90; undefined4 local_88; longlong local_80; undefined8 local_78; undefined *local_68; undefined4 local_60; undefined4 local_5c; undefined **local_58; undefined4 local_50; undefined2 local_4c; undefined2 local_48 [8]; ulonglong local_38; ulonglong uVar9; local_38 = DAT_1401ac5a0 ^ (ulonglong)auStack_b8; uVar10 = param_4; if (*(char *)(param_1 + 0x280) != '\0') { FUN_14006cb70(param_1,param_2,param_3,param_4); local_68 = PTR_DAT_1401ac010; iVar2 = FUN_14006c9f0(L"WARNING: IssueSendTo is duplicated!"); puVar3 = FUN_140002f30((longlong *)&local_68,iVar2); FUN_14006ca20(puVar3,L"WARNING: IssueSendTo is duplicated!",iVar2); FUN_140003010((longlong *)&local_68); (**(code **)(**(longlong **)(param_1 + 0x18) + 8)) (*(longlong **)(param_1 + 0x18),param_1,&local_68); } lVar1 = param_2[1]; uVar5 = 0; uVar6 = uVar5; uVar9 = uVar5; if (0 < lVar1) { do { if (((longlong)uVar5 < 0) || (lVar1 <= (longlong)uVar5)) { /* WARNING: Subroutine does not return */ FUN_14006be00(); } if ((ulonglong)param_2[2] < 0x65) { plVar4 = param_2 + (uVar5 + 2) * 2; } else { plVar4 = (longlong *)(uVar5 * 0x10 + *param_2); } uVar8 = (int)uVar9 + (int)*plVar4; uVar9 = (ulonglong)uVar8; uVar7 = (int)uVar6 + 1; uVar5 = (ulonglong)(int)uVar7; uVar6 = (ulonglong)uVar7; } while ((longlong)uVar5 < lVar1); if (0 < (int)uVar8) { FUN_14006fb70(param_3,local_48); local_58 = Proud::AddrPort::vftable; local_50 = *(undefined4 *)(param_3 + 8); local_4c = *(undefined2 *)(param_3 + 0xc); local_5c = 0; uVar6 = FUN_1400738c0(param_1,(longlong)&local_58,uVar9,uVar10); if ((char)uVar6 == '\0') { return 0x271d; } if (((-1 < (int)param_4) && (uVar6 = FUN_1400739d0(param_1,&local_60), (int)uVar6 == 0)) && (iVar2 = FUN_1400737c0(param_1,(int)param_4), iVar2 == 0)) { *(undefined1 *)(param_1 + 0x30c) = 1; *(undefined4 *)(param_1 + 0x308) = local_60; } *(undefined1 *)(param_1 + 0x280) = 0; *(undefined1 *)(param_1 + 0x280) = 1; if (param_2[1] + 0x80000000U < 0x100000000) { plVar4 = param_2 + 4; if (100 < (ulonglong)param_2[2]) { plVar4 = (longlong *)*param_2; } local_78 = 0; local_80 = param_1 + 0x240; local_90 = local_48; local_88 = 0x10; puVar11 = &local_5c; local_98 = 0; iVar2 = WSASendTo(*(undefined8 *)(param_1 + 0x3d0),plVar4,param_2[1] & 0xffffffff); if ((iVar2 != 0) && (uVar7 = Ordinal_111(), uVar7 != 0x3e5)) { *(undefined1 *)(param_1 + 0x280) = 0; FUN_140072870(param_1,(ulonglong)uVar7,L"Proud::CFastSocket::IssueSendTo_NoCopy_TempTtl", puVar11); return uVar7; } return 0; } /* WARNING: Subroutine does not return */ FUN_14006be60(L"Proud::CFastSocket::IssueSendTo_NoCopy_TempTtl",0xffffffff,uVar9,uVar10); } } return 0x2726; }