/* DBCServer_Release_x64.exe sha256 d9e4fccdf3482e50247686d4452c0b13c75a53efc4bd7320668eece8d1ce828c * Ghidra 12.1.2 decompiler output for 0x14019e1d0 FUN_14019e1d0 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ int FUN_14019e1d0(longlong param_1,longlong *param_2,longlong param_3,int param_4) { longlong lVar1; char cVar2; undefined4 uVar3; int iVar4; undefined8 uVar5; longlong *plVar6; ulonglong uVar7; uint uVar8; ulonglong uVar9; uint uVar10; ulonglong uVar11; undefined1 auStack_b8 [32]; undefined4 local_98; undefined1 *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; undefined1 local_48 [16]; ulonglong local_38; local_38 = DAT_1403463c0 ^ (ulonglong)auStack_b8; if (*(char *)(param_1 + 0x280) != '\0') { FUN_14016d8c0(); local_68 = PTR_DAT_1403440a0; uVar3 = FUN_14016d740(L"WARNING: IssueSendTo is duplicated!"); uVar5 = FUN_14004e940(&local_68,uVar3); FUN_14016d770(uVar5,L"WARNING: IssueSendTo is duplicated!",uVar3); FUN_14004e560(&local_68); (**(code **)(**(longlong **)(param_1 + 0x18) + 8)) (*(longlong **)(param_1 + 0x18),param_1,&local_68); } lVar1 = param_2[1]; uVar7 = 0; uVar9 = uVar7; uVar11 = uVar7; if (0 < lVar1) { do { if (((longlong)uVar7 < 0) || (lVar1 <= (longlong)uVar7)) { /* WARNING: Subroutine does not return */ FUN_14016d6b0(); } if ((ulonglong)param_2[2] < 0x65) { plVar6 = param_2 + (uVar7 + 2) * 2; } else { plVar6 = (longlong *)(uVar7 * 0x10 + *param_2); } uVar10 = (int)uVar11 + (int)*plVar6; uVar8 = (int)uVar9 + 1; uVar7 = (ulonglong)(int)uVar8; uVar9 = (ulonglong)uVar8; uVar11 = (ulonglong)uVar10; } while ((longlong)uVar7 < lVar1); if (0 < (int)uVar10) { FUN_14016f800(param_3,local_48); local_58 = Proud::AddrPort::vftable; local_50 = *(undefined4 *)(param_3 + 8); local_4c = *(undefined2 *)(param_3 + 0xc); local_5c = 0; cVar2 = FUN_14019ded0(param_1,&local_58); if (cVar2 == '\0') { return 0x271d; } if (((-1 < param_4) && (iVar4 = FUN_14019dfe0(param_1,&local_60), iVar4 == 0)) && (iVar4 = FUN_14019ddd0(param_1,param_4), iVar4 == 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) { plVar6 = param_2 + 4; if (100 < (ulonglong)param_2[2]) { plVar6 = (longlong *)*param_2; } local_78 = 0; local_80 = param_1 + 0x240; local_90 = local_48; local_88 = 0x10; local_98 = 0; iVar4 = WSASendTo(*(undefined8 *)(param_1 + 0x3d0),plVar6,param_2[1] & 0xffffffff,&local_5c) ; if ((iVar4 != 0) && (iVar4 = Ordinal_111(), iVar4 != 0x3e5)) { *(undefined1 *)(param_1 + 0x280) = 0; FUN_14019ce80(param_1,iVar4,L"Proud::CFastSocket::IssueSendTo_NoCopy_TempTtl"); return iVar4; } return 0; } /* WARNING: Subroutine does not return */ FUN_14016d710(L"Proud::CFastSocket::IssueSendTo_NoCopy_TempTtl"); } } return 0x2726; }