/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x1400ab050 FUN_1400ab050 * Pseudocode, not original source. */ void FUN_1400ab050(undefined ***param_1,longlong param_2,undefined8 param_3,longlong param_4, uint *param_5,uint *param_6) { int iVar1; uint uVar2; uint uVar3; uint uVar4; undefined8 *puVar5; uint *puVar6; longlong *plVar7; int *piVar8; undefined ***pppuVar9; undefined ***pppuVar10; undefined ***pppuVar11; uint *puVar12; undefined ****ppppuVar13; longlong lVar14; longlong lVar15; uint uVar16; longlong lVar17; undefined **ppuVar18; uint **ppuVar19; uint uVar20; ulonglong uVar21; ulonglong uVar22; double dVar23; undefined8 uVar24; undefined ***local_res10; undefined **local_c8; undefined4 local_c0; undefined2 local_bc; undefined **local_b8; undefined8 local_b0; undefined8 local_a8; undefined8 local_a0; undefined8 local_98; longlong local_90; undefined4 local_88; uint *local_80; undefined4 local_78; undefined4 local_74; longlong local_68 [2]; int *local_58; undefined1 local_50; puVar6 = param_5; local_68[1] = 0xfffffffffffffffe; uVar24 = param_3; lVar15 = param_4; FUN_14007e740((longlong)param_5,0,param_3,param_4); uVar21 = (ulonglong)(int)puVar6[6]; FUN_140093730(&local_90); local_88 = (undefined4)param_3; local_80 = puVar6; lVar17 = 0; local_78 = 0; local_74 = *(undefined4 *)((longlong)param_1 + 0x6a4); plVar7 = &local_90; puVar12 = param_6; local_90 = param_2; puVar5 = FUN_1400941c0(plVar7,param_6,uVar24,lVar15); iVar1 = (int)puVar5; if (-1 < iVar1) { local_c8 = Proud::AddrPort::vftable; local_c0 = *(undefined4 *)(param_4 + 8); local_bc = *(undefined2 *)(param_4 + 0xc); pppuVar9 = &local_c8; ppppuVar13 = &local_res10; pppuVar10 = param_1; plVar7 = FUN_1400a5f70((longlong)param_1,ppppuVar13,(longlong)pppuVar9); lVar15 = lVar17; if ((longlong *)*plVar7 != (longlong *)0x0) { lVar15 = *(longlong *)*plVar7; } if (local_res10 != (undefined ***)0x0) { local_res10[1] = (undefined **)((longlong)local_res10[1] + -1); pppuVar10 = (undefined ***)local_res10[1]; if ((undefined ***)local_res10[1] == (undefined ***)0x0) { if (*local_res10 != (undefined **)0x0) { ppppuVar13 = (undefined ****)0x1; (**(code **)**local_res10)(); } FUN_14003e8b0(local_res10); pppuVar10 = local_res10; } } if (iVar1 < 1) { return; } lVar14 = uVar21 * 0x48; uVar22 = uVar21; do { pppuVar11 = (undefined ***)0x0; if (((longlong)(uVar21 + lVar17) < 0) || ((int)puVar6[6] <= (int)uVar22)) { /* WARNING: Subroutine does not return */ FUN_14003def0(pppuVar10,ppppuVar13,pppuVar9,0); } ppppuVar13 = *(undefined *****)(puVar6 + 4); *(undefined4 *)(lVar14 + 0x38 + (longlong)ppppuVar13) = *(undefined4 *)(param_4 + 8); *(undefined2 *)(lVar14 + 0x3c + (longlong)ppppuVar13) = *(undefined2 *)(param_4 + 0xc); if (lVar15 == 0) { if (param_1[0x2ae] != (undefined **)0x0) { pppuVar11 = (undefined ***)*param_1[0x2ae]; } pppuVar9 = param_1; if ((*(int *)(param_4 + 8) == *(int *)(pppuVar11 + 0x1a)) && (*(short *)(param_4 + 0xc) == *(short *)((longlong)pppuVar11 + 0xd4))) { *(undefined4 *)(lVar14 + 0x28 + (longlong)ppppuVar13) = 1; pppuVar11 = param_1; FUN_14009c110((longlong)param_1); } else { *(undefined4 *)(lVar14 + 0x28 + (longlong)ppppuVar13) = 0; } } else { *(undefined4 *)(lVar14 + 0x28 + (longlong)ppppuVar13) = *(undefined4 *)(lVar15 + 0x56c); dVar23 = (double)(*(code *)param_1[0xe][0x38])(param_1 + 0xe); dVar23 = dVar23 - *(double *)(lVar15 + 0xc0); if (0.0 < dVar23) { *(double *)(lVar15 + 0x140) = dVar23; } pppuVar11 = param_1 + 0xe; uVar24 = (*(code *)param_1[0xe][0x38])(); *(undefined8 *)(lVar15 + 0xc0) = uVar24; *(int *)(lVar15 + 0x100) = *(int *)(lVar15 + 0x100) + 1; } uVar22 = (ulonglong)((int)uVar22 + 1); lVar17 = lVar17 + 1; lVar14 = lVar14 + 0x48; pppuVar10 = pppuVar11; } while (lVar17 < iVar1); return; } FUN_14003e7c0(plVar7,puVar12,uVar24,lVar15); param_5 = (uint *)PTR_DAT_14016f010; uVar2 = FUN_14003e620(L"ExtractMessageFromUdpRecvQueue : addedCount < 0"); uVar20 = 0; uVar4 = 0; uVar21 = 0; if ((param_5 != (uint *)0x0) && (uVar21 = 0, param_5 != (uint *)PTR_DAT_14016f010)) { uVar21 = (ulonglong)param_5[-2]; } uVar3 = uVar2; if ((((int)uVar2 <= (int)uVar21) && (uVar3 = uVar4, param_5 != (uint *)0x0)) && (param_5 != (uint *)PTR_DAT_14016f010)) { uVar3 = param_5[-2]; } uVar16 = 1; if (1 < (int)uVar3) { uVar16 = uVar3; } uVar3 = uVar4; if ((param_5 != (uint *)0x0) && (param_5 != (uint *)PTR_DAT_14016f010)) { uVar3 = param_5[-2]; } if ((int)uVar3 < (int)uVar16) { if (param_5 == (uint *)0x0) { param_5 = (uint *)PTR_DAT_14016f010; } if ((int)uVar16 < 0) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } if (uVar16 == 0) { FUN_140002190((longlong *)¶m_5,PTR_DAT_14016f010,uVar21,lVar15); } else { uVar3 = uVar4; if ((param_5 != (uint *)0x0) && (param_5 != (uint *)PTR_DAT_14016f010)) { uVar3 = param_5[-2]; } if (uVar16 != uVar3) { puVar6 = (uint *)FUN_14003e840((longlong)(int)uVar16 * 2 + 10); if (puVar6 != (uint *)0x0) { *puVar6 = 0; puVar6[1] = 1; } *puVar6 = uVar16; uVar3 = uVar4; if ((param_5 != (uint *)0x0) && (param_5 != (uint *)PTR_DAT_14016f010)) { uVar3 = param_5[-2]; } puVar12 = (uint *)PTR_DAT_14016f010; if ((int)uVar16 < (int)uVar3) { LAB_1400ab1d2: if (param_5 != (uint *)0x0) { puVar12 = param_5; } } else { uVar16 = uVar4; if (param_5 != (uint *)0x0) { if (param_5 != (uint *)PTR_DAT_14016f010) { uVar16 = param_5[-2]; } goto LAB_1400ab1d2; } } uVar21 = (ulonglong)uVar16; FUN_14003e650(puVar6 + 2,puVar12,uVar16); FUN_140002190((longlong *)¶m_5,puVar12,uVar21,lVar15); param_5 = puVar6 + 2; } } } FUN_140001df0((longlong *)¶m_5); puVar6 = param_5; if (param_5 == (uint *)0x0) { puVar6 = (uint *)PTR_DAT_14016f010; } FUN_14003e650(puVar6,L"ExtractMessageFromUdpRecvQueue : addedCount < 0",uVar2); puVar6 = param_5; if (param_5 == (uint *)0x0) { puVar6 = (uint *)PTR_DAT_14016f010; } uVar4 = FUN_14003e620((short *)puVar6); uVar2 = uVar20; if (0 < (int)uVar4) { uVar2 = uVar4; } uVar4 = uVar20; if ((param_5 != (uint *)0x0) && (param_5 != (uint *)PTR_DAT_14016f010)) { uVar4 = param_5[-2]; } if (((int)uVar4 <= (int)uVar2) && (uVar2 = uVar20, param_5 != (uint *)0x0)) { if (param_5 == (uint *)PTR_DAT_14016f010) goto LAB_1400ab28a; uVar2 = param_5[-2]; } if (((param_5 != (uint *)PTR_DAT_14016f010) && (param_5 != (uint *)0x0)) && (param_5 + -2 != (uint *)0x0)) { param_5[-2] = uVar2; *(undefined2 *)((longlong)param_5 + (longlong)(int)uVar2 * 2) = 0; } LAB_1400ab28a: local_b0 = 0; local_a8 = 0; local_a0 = 0; local_98 = 0; local_b8 = Proud::ByteArray::vftable; ppuVar19 = ¶m_5; plVar7 = FUN_140071c20(local_68,(ulonglong)*param_6,(ulonglong)*(uint *)(param_1 + 0x2af), (longlong *)ppuVar19,(longlong)&local_b8); ppuVar18 = *param_1; (*(code *)ppuVar18[0x11])(param_1); pppuVar9 = &local_b8; FUN_140049e40(pppuVar9); puVar6 = param_5; if (((param_5 != (uint *)0x0) && (param_5 != (uint *)PTR_DAT_14016f010)) && (puVar12 = param_5 + -2, puVar12 != (uint *)0x0)) { piVar8 = (int *)FUN_14003e7c0(pppuVar9,plVar7,ppuVar18,ppuVar19); local_58 = piVar8; FUN_14003d040(piVar8); local_50 = 1; puVar6 = puVar6 + -1; *puVar6 = *puVar6 - 1; if (*puVar6 == 0) { FUN_14003e8b0(puVar12); } FUN_14003d0d0((longlong)piVar8); } return; }