/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14006f780 FUN_14006f780 * Pseudocode, not original source. */ /* WARNING: Removing unreachable block (ram,0x00014006f8e1) */ /* WARNING: Removing unreachable block (ram,0x00014006f8ed) */ /* WARNING: Removing unreachable block (ram,0x00014006f8e5) */ /* WARNING: Removing unreachable block (ram,0x00014006f8f3) */ /* WARNING: Removing unreachable block (ram,0x00014006f883) */ /* WARNING: Removing unreachable block (ram,0x00014006f88f) */ /* WARNING: Removing unreachable block (ram,0x00014006f887) */ /* WARNING: Removing unreachable block (ram,0x00014006f895) */ /* WARNING: Removing unreachable block (ram,0x00014006f941) */ /* WARNING: Removing unreachable block (ram,0x00014006f94d) */ /* WARNING: Removing unreachable block (ram,0x00014006f946) */ /* WARNING: Removing unreachable block (ram,0x00014006f953) */ void FUN_14006f780(SIZE_T *param_1,undefined8 param_2,SIZE_T param_3,undefined ***param_4) { undefined **ppuVar1; undefined8 *puVar2; longlong *plVar3; uint uVar4; int iVar5; int iVar6; int iVar7; longlong *plVar8; undefined ***pppuVar9; undefined *puVar10; longlong *plVar11; undefined ***pppuVar12; undefined ***pppuVar13; undefined8 uVar14; undefined **ppuVar15; undefined **ppuVar16; undefined ***pppuVar17; longlong lVar18; longlong lVar19; longlong *plVar20; undefined ***pppuVar21; size_t _Size; undefined ***pppuVar22; undefined ***pppuVar23; int iVar24; undefined ***local_res10; undefined ***local_res18; undefined **local_168; undefined ***local_160; undefined **local_158; undefined ***local_150; undefined ***local_148; undefined8 local_140; undefined8 local_138; undefined8 local_130; longlong local_128; longlong local_120; ulonglong local_118; longlong *local_110; undefined ***local_108; undefined4 local_fc; undefined8 local_f8; longlong local_f0; longlong local_e8; ulonglong local_e0; undefined ***local_d8; undefined ***local_d0; undefined4 local_c4; undefined **local_c0; undefined ***local_b8; undefined ***local_b0; undefined8 local_a8; undefined8 local_a0; uint local_98 [2]; longlong local_90; longlong local_88; undefined4 local_80; int local_7c; int *local_70; undefined1 local_68; undefined8 local_60; undefined8 local_58 [4]; local_60 = 0xfffffffffffffffe; local_70 = (int *)(**(code **)(*param_1 + 0x58))(); FUN_14003d040(local_70); local_68 = 1; if (DAT_14017614f != '\0') { param_3 = *param_1; (**(code **)(param_3 + 200))(param_1,L"Proud::CNetServerImpl::TestReliableUdpFrame"); } plVar8 = FUN_1400417c0(local_58); pppuVar9 = (undefined ***)FUN_14003e910(0x800,plVar8,param_3,param_4); pppuVar23 = (undefined ***)0x0; local_150 = (undefined ***)0x0; local_148 = (undefined ***)0x0; local_140 = 0; local_138 = 0; local_158 = Proud::CUncompressedFrameNumberArray::vftable; local_res18 = pppuVar9; if (pppuVar9 == (undefined ***)0x0) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } local_150 = pppuVar9; FUN_14004cce0((longlong)&local_158,1,param_3); lVar18 = (longlong)(int)local_140; pppuVar12 = local_148; if ((int)local_140 == 0) { pppuVar12 = pppuVar23; } *(uint *)pppuVar12 = 5; if ((int)local_140 < 0) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } FUN_14004cce0((longlong)&local_158,(int)local_140 + 1,param_3); lVar19 = (longlong)(int)local_140; pppuVar12 = local_148; if ((int)local_140 == 0) { pppuVar12 = pppuVar23; } *(uint *)((longlong)pppuVar12 + lVar18 * 4) = 1; if ((int)local_140 < 0) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } FUN_14004cce0((longlong)&local_158,(int)local_140 + 1,param_3); lVar18 = (longlong)(int)local_140; pppuVar12 = local_148; if ((int)local_140 == 0) { pppuVar12 = pppuVar23; } *(uint *)((longlong)pppuVar12 + lVar19 * 4) = 2; if ((int)local_140 < 0) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } FUN_14004cce0((longlong)&local_158,(int)local_140 + 1,param_3); pppuVar23 = local_148; iVar5 = (int)local_140; lVar19 = (longlong)(int)local_140; pppuVar12 = local_148; if ((int)local_140 == 0) { pppuVar12 = (undefined ***)0x0; } *(uint *)((longlong)pppuVar12 + lVar18 * 4) = 4; pppuVar12 = local_148; if ((int)local_140 == 0) { pppuVar12 = (undefined ***)0x0; } _Size = 0; uVar14 = 4; FUN_14004d0b0((longlong)pppuVar12,4,0); if (iVar5 < 1) { /* WARNING: Subroutine does not return */ FUN_14003def0(pppuVar12,uVar14,_Size,param_4); } if (*(uint *)pppuVar23 == 1) { if (iVar5 < 2) { /* WARNING: Subroutine does not return */ FUN_14003def0(pppuVar12,uVar14,_Size,param_4); } if (*(uint *)((longlong)pppuVar23 + 4) != 2) goto LAB_14006f9d7; if (iVar5 < 3) { /* WARNING: Subroutine does not return */ FUN_14003def0(pppuVar12,uVar14,_Size,param_4); } if (*(uint *)(pppuVar23 + 1) != 4) goto LAB_14006f9d7; if (iVar5 < 4) { /* WARNING: Subroutine does not return */ FUN_14003def0(pppuVar12,uVar14,_Size,param_4); } if (*(uint *)((longlong)pppuVar23 + 0xc) != 5) goto LAB_14006f9d7; } else { LAB_14006f9d7: FUN_14003e7c0(pppuVar12,uVar14,_Size,param_4); local_res10 = (undefined ***)PTR_DAT_14016f010; uVar4 = FUN_14003e620(L"Proud.QuickSort() failed!"); puVar10 = FUN_140001ee0((longlong *)&local_res10,uVar4); _Size = (size_t)uVar4; FUN_14003e650(puVar10,L"Proud.QuickSort() failed!",uVar4); FUN_140001fc0((longlong *)&local_res10); FUN_14006c890(param_1,(wchar_t *)&local_res10,_Size,param_4); } plVar20 = (longlong *)0x0; local_118 = 0; local_120 = 0; local_128 = 0; local_110 = (longlong *)0x0; local_130 = 0; local_fc = 0; pppuVar12 = &local_168; local_108 = pppuVar9; plVar11 = FUN_14005b3e0((longlong *)pppuVar12,(longlong *)pppuVar9,_Size,param_4); plVar3 = local_110; plVar8 = (longlong *)*plVar11; if (plVar8 != (longlong *)0x0) { plVar8[1] = plVar8[1] + 1; plVar20 = plVar8; } if (local_110 != (longlong *)0x0) { plVar8 = local_110 + 1; *plVar8 = *plVar8 + -1; if (*plVar8 == 0) { puVar2 = (undefined8 *)*local_110; local_res10 = local_108; *puVar2 = Proud::CFastArray::vftable; if ((LPVOID)puVar2[2] != (LPVOID)0x0) { if ((longlong *)puVar2[1] == (longlong *)0x0) { FUN_14003e8b0((LPVOID)puVar2[2]); } else { (**(code **)(*(longlong *)puVar2[1] + 0x18))(); } } (*(code *)(*local_res10)[3])(local_res10,puVar2); (*(code *)(*local_108)[3])(local_108,plVar3); pppuVar12 = local_108; } } pppuVar13 = local_160; ppuVar15 = local_168; pppuVar21 = (undefined ***)0x0; local_108 = (undefined ***)plVar11[1]; ppuVar16 = Proud::CFastArray::vftable; pppuVar17 = pppuVar21; pppuVar22 = pppuVar21; local_110 = plVar20; if (local_168 != (undefined **)0x0) { ppuVar1 = local_168 + 1; *ppuVar1 = *ppuVar1 + -1; if (*ppuVar1 == (undefined *)0x0) { puVar2 = (undefined8 *)*local_168; *puVar2 = Proud::CFastArray::vftable; if ((LPVOID)puVar2[2] != (LPVOID)0x0) { if ((longlong *)puVar2[1] == (longlong *)0x0) { FUN_14003e8b0((LPVOID)puVar2[2]); } else { (**(code **)(*(longlong *)puVar2[1] + 0x18))(); } } (*(code *)(*pppuVar13)[3])(pppuVar13,puVar2); pppuVar12 = local_160; (*(code *)(*local_160)[3])(); ppuVar16 = ppuVar15; } } do { if (((longlong)pppuVar22 < 0) || (iVar5 <= (int)pppuVar17)) { /* WARNING: Subroutine does not return */ FUN_14003def0(pppuVar12,ppuVar16,_Size,param_4); } pppuVar12 = pppuVar21; if (local_110 != (longlong *)0x0) { pppuVar12 = (undefined ***)*local_110; } ppuVar16 = (undefined **)(ulonglong)*(uint *)((longlong)pppuVar23 + (longlong)pppuVar22 * 4); FUN_140098080((longlong)pppuVar12,ppuVar16,_Size,param_4); uVar4 = (int)pppuVar17 + 1; pppuVar17 = (undefined ***)(ulonglong)uVar4; pppuVar22 = (undefined ***)((longlong)pppuVar22 + 1); } while ((int)uVar4 < iVar5); FUN_140074fb0(local_98); FUN_140074a40((longlong)local_98,ppuVar16,_Size,param_4); pppuVar12 = pppuVar21; if (local_110 != (longlong *)0x0) { pppuVar12 = (undefined ***)*local_110; } FUN_1400982f0((longlong)pppuVar12,(longlong)local_98,_Size,param_4); FUN_140074bb0((int *)local_98,0,_Size,param_4); local_e0 = 0; local_e8 = 0; local_f0 = 0; local_d8 = (undefined ***)0x0; local_f8 = 0; local_c4 = 0; local_d0 = pppuVar9; local_res10 = (undefined ***) FUN_14005b3e0((longlong *)&local_168,(longlong *)pppuVar9,_Size,param_4); pppuVar17 = local_d0; pppuVar13 = local_d8; pppuVar12 = (undefined ***)*local_res10; if (pppuVar12 != (undefined ***)0x0) { pppuVar12[1] = (undefined **)((longlong)pppuVar12[1] + 1); pppuVar21 = pppuVar12; } if (local_d8 != (undefined ***)0x0) { pppuVar12 = local_d8 + 1; *pppuVar12 = (undefined **)((longlong)*pppuVar12 + -1); if (*pppuVar12 == (undefined **)0x0) { ppuVar15 = *local_d8; *ppuVar15 = (undefined *)Proud::CFastArray::vftable; if (ppuVar15[2] != (undefined *)0x0) { if ((longlong *)ppuVar15[1] == (longlong *)0x0) { FUN_14003e8b0(ppuVar15[2]); } else { (**(code **)(*(longlong *)ppuVar15[1] + 0x18))(); } } (*(code *)(*pppuVar17)[3])(pppuVar17,ppuVar15); (*(code *)(*local_d0)[3])(local_d0,pppuVar13); } } pppuVar12 = local_160; pppuVar13 = (undefined ***)0x0; local_d0 = (undefined ***)local_res10[1]; local_d8 = pppuVar21; if (local_168 != (undefined **)0x0) { ppuVar15 = local_168 + 1; *ppuVar15 = *ppuVar15 + -1; if (*ppuVar15 == (undefined *)0x0) { puVar2 = (undefined8 *)*local_168; *puVar2 = Proud::CFastArray::vftable; if ((LPVOID)puVar2[2] != (LPVOID)0x0) { if ((longlong *)puVar2[1] == (longlong *)0x0) { FUN_14003e8b0((LPVOID)puVar2[2]); } else { (**(code **)(*(longlong *)puVar2[1] + 0x18))(); } } (*(code *)(*pppuVar12)[3])(pppuVar12,puVar2); (*(code *)(*local_160)[3])(local_160,local_168); } } pppuVar12 = pppuVar13; if (local_d8 != (undefined ***)0x0) { pppuVar12 = (undefined ***)*local_d8; } FUN_140097e40((uint *)pppuVar12,local_98,_Size,param_4); local_b0 = (undefined ***)0x0; local_a8 = 0; local_a0 = 0; local_c0 = Proud::CUncompressedFrameNumberArray::vftable; pppuVar12 = pppuVar13; if (local_d8 != (undefined ***)0x0) { pppuVar12 = (undefined ***)*local_d8; } pppuVar17 = &local_c0; local_b8 = pppuVar9; FUN_1400981d0((longlong)pppuVar12,(longlong)pppuVar17,_Size,param_4); pppuVar21 = local_b0; iVar24 = 0; if (iVar5 == (int)local_a8) { pppuVar12 = pppuVar23; if (iVar5 == 0) { pppuVar12 = pppuVar13; } pppuVar17 = local_b0; if ((int)local_a8 == 0) { pppuVar17 = pppuVar13; } _Size = lVar19 << 2; iVar5 = memcmp(pppuVar12,pppuVar17,_Size); if (iVar5 == 0) goto LAB_14006feba; } FUN_14003e7c0(pppuVar12,pppuVar17,_Size,param_4); local_res10 = (undefined ***)PTR_DAT_14016f010; iVar6 = FUN_14003e620(L"FrameNumberList pack/unpack failed!"); iVar5 = iVar24; if ((local_res10 != (undefined ***)0x0) && (local_res10 != (undefined ***)PTR_DAT_14016f010)) { iVar5 = *(int *)(local_res10 + -1); } iVar7 = iVar6; if (((iVar6 <= iVar5) && (iVar7 = iVar24, local_res10 != (undefined ***)0x0)) && (local_res10 != (undefined ***)PTR_DAT_14016f010)) { iVar7 = *(int *)(local_res10 + -1); } iVar5 = 1; if (1 < iVar7) { iVar5 = iVar7; } iVar7 = iVar24; if ((local_res10 != (undefined ***)0x0) && (local_res10 != (undefined ***)PTR_DAT_14016f010)) { iVar7 = *(int *)(local_res10 + -1); } if (iVar7 < iVar5) { FUN_140001d10((longlong *)&local_res10,iVar5); } FUN_140001df0((longlong *)&local_res10); pppuVar12 = local_res10; if (local_res10 == (undefined ***)0x0) { pppuVar12 = (undefined ***)PTR_DAT_14016f010; } FUN_14003e650(pppuVar12,L"FrameNumberList pack/unpack failed!",iVar6); pppuVar12 = local_res10; if (local_res10 == (undefined ***)0x0) { pppuVar12 = (undefined ***)PTR_DAT_14016f010; } uVar4 = FUN_14003e620((short *)pppuVar12); puVar10 = PTR_DAT_14016f010; if (0 < (int)uVar4) { pppuVar13 = (undefined ***)(ulonglong)uVar4; } iVar5 = (int)pppuVar13; if ((local_res10 != (undefined ***)0x0) && (local_res10 != (undefined ***)PTR_DAT_14016f010)) { iVar24 = *(int *)(local_res10 + -1); } if ((iVar5 < iVar24) || (iVar5 = 0, local_res10 == (undefined ***)0x0)) { LAB_14006fe85: if (((local_res10 != (undefined ***)PTR_DAT_14016f010) && (local_res10 != (undefined ***)0x0)) && (local_res10 + -1 != (undefined ***)0x0)) { *(int *)(local_res10 + -1) = iVar5; *(undefined2 *)((longlong)local_res10 + (longlong)iVar5 * 2) = 0; } } else if (local_res10 != (undefined ***)PTR_DAT_14016f010) { iVar5 = *(int *)(local_res10 + -1); goto LAB_14006fe85; } FUN_14006c890(param_1,(wchar_t *)&local_res10,(SIZE_T)puVar10,param_4); pppuVar21 = local_b0; LAB_14006feba: local_c0 = Proud::CFastArray::vftable; if (pppuVar21 != (undefined ***)0x0) { if (local_b8 == (undefined ***)0x0) { FUN_14003e8b0(pppuVar21); } else { (*(code *)(*local_b8)[3])(local_b8,pppuVar21); } } if (local_d8 != (undefined ***)0x0) { pppuVar12 = local_d8 + 1; *pppuVar12 = (undefined **)((longlong)*pppuVar12 + -1); if (*pppuVar12 == (undefined **)0x0) { FUN_1400512a0((longlong)&local_d8,(longlong *)local_d8); } } FUN_14008a320(&local_f0); if (local_e8 != 0) { if ((longlong)local_e0 < 0) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } local_e0 = local_e0 & 0xffffffff00000000; } FUN_14008a320(&local_90); if (local_88 != 0) { if (local_7c < 0) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } local_80 = 0; } if (local_110 != (longlong *)0x0) { plVar8 = local_110 + 1; *plVar8 = *plVar8 + -1; if (*plVar8 == 0) { FUN_1400512a0((longlong)&local_110,local_110); } } FUN_14008a320(&local_128); if (local_120 != 0) { if ((longlong)local_118 < 0) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } local_118 = local_118 & 0xffffffff00000000; } if (local_150 == (undefined ***)0x0) { FUN_14003e8b0(pppuVar23); } else { (*(code *)(*local_150)[3])(local_150,pppuVar23); } (*(code *)**pppuVar9)(pppuVar9,1); FUN_14003d0d0((longlong)local_70); return; }