/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x1400cbe90 FUN_1400cbe90 * Pseudocode, not original source. */ /* WARNING: Removing unreachable block (ram,0x0001400cbf30) */ /* WARNING: Removing unreachable block (ram,0x0001400cbf34) */ /* WARNING: Removing unreachable block (ram,0x0001400cbf50) */ /* WARNING: Removing unreachable block (ram,0x0001400cbf5e) */ /* WARNING: Removing unreachable block (ram,0x0001400cbf56) */ /* WARNING: Removing unreachable block (ram,0x0001400cbf65) */ /* WARNING: Removing unreachable block (ram,0x0001400cbf7d) */ void FUN_1400cbe90(longlong param_1,undefined **param_2,ulonglong param_3,undefined8 param_4) { int *piVar1; int iVar2; int *piVar3; undefined8 *puVar4; undefined *puVar5; int *piVar6; longlong lVar7; undefined ***pppuVar8; longlong *plVar9; undefined8 uVar10; undefined8 *puVar11; int iVar12; undefined8 *puVar13; ulonglong uVar14; uint uVar15; longlong lVar16; longlong lVar17; longlong lVar18; longlong lVar19; int local_res10; longlong *local_res18; longlong local_res20; undefined **local_b8; longlong *local_b0; longlong *local_a8; undefined8 local_a0; undefined8 local_98; undefined *local_90; int *local_88; undefined1 local_80; int *local_78; undefined1 local_70; int *local_68; undefined1 local_60; undefined8 local_58; undefined8 *local_50; local_58 = 0xfffffffffffffffe; piVar6 = (int *)(param_1 + 0x10); local_88 = piVar6; FUN_14003d040(piVar6); local_80 = 1; local_b8 = Proud::CFastArray,0>::vftable; local_b0 = (longlong *)0x0; local_a8 = (longlong *)0x0; local_a0 = 0; local_98 = 0; pppuVar8 = &local_b8; FUN_140042ca0((longlong)pppuVar8,param_2,param_3,param_4); if ((uint)local_a0 == 0) { FUN_14003e7c0(pppuVar8,param_2,param_3,param_4); puVar5 = PTR_DAT_14016f008; local_90 = PTR_DAT_14016f008; lVar17 = (longlong)(int)(uint)local_a0; if ((int)(uint)local_a0 < 0) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } FUN_140041f00((longlong)&local_b8,(uint)local_a0 + 1,param_3,param_4); plVar9 = local_a8; if ((uint)local_a0 == 0) { plVar9 = (longlong *)0x0; } plVar9 = plVar9 + lVar17; param_2 = &local_90; FUN_140006de0(plVar9,(longlong *)param_2,param_3,param_4); if (((puVar5 != (undefined *)0x0) && (puVar5 != PTR_DAT_14016f008)) && (puVar5 + -8 != (undefined *)0x0)) { piVar3 = (int *)FUN_14003e7c0(plVar9,param_2,param_3,param_4); local_78 = piVar3; FUN_14003d040(piVar3); local_70 = 1; piVar1 = (int *)(puVar5 + -4); *piVar1 = *piVar1 + -1; if (*piVar1 == 0) { FUN_14003e8b0(puVar5 + -8); } FUN_14003d0d0((longlong)piVar3); local_70 = 0; } local_90 = PTR_DAT_14016f008; } local_res10 = 0; local_res20 = 0; uVar15 = (uint)local_a0; if (0 < (int)(uint)local_a0) { do { puVar11 = (undefined8 *)0x0; uVar10 = 0x100; puVar4 = operator_new(0x100); puVar13 = puVar11; local_50 = puVar4; if (puVar4 != (undefined8 *)0x0) { *puVar4 = Proud::CSsdpContext::vftable; FUN_14003e7c0(uVar10,param_2,param_3,param_4); puVar4[1] = PTR_DAT_14016f008; puVar4[2] = 0; puVar4[5] = 0; puVar4[6] = 0; puVar4[7] = 0; puVar4[8] = 0; puVar4[4] = Proud::ByteArray::vftable; *(undefined1 *)(puVar4 + 0x10) = 0; *(undefined1 *)(puVar4 + 0x18) = 0; puVar4[0x19] = 0; puVar4[3] = 0; puVar13 = puVar4; } if (puVar13 == (undefined8 *)0x0) { local_res18 = (longlong *)0x0; } else { uVar10 = 0x10; local_res18 = (longlong *)FUN_14003e840(0x10); local_res18[1] = 1; *local_res18 = (longlong)puVar13; } plVar9 = local_a8; if ((local_res20 < 0) || ((int)(uint)local_a0 <= local_res10)) { /* WARNING: Subroutine does not return */ FUN_14003def0(uVar10,param_2,param_3,param_4); } if (local_res18 != (longlong *)0x0) { puVar11 = (undefined8 *)*local_res18; } puVar5 = (undefined *)puVar11[1]; if ((undefined *)puVar11[1] == (undefined *)0x0) { puVar5 = PTR_DAT_14016f008; } puVar11[1] = puVar5; if ((undefined *)local_a8[local_res20] != puVar5) { piVar6 = (int *)FUN_14003e7c0(uVar10,param_2,param_3,param_4); local_68 = piVar6; FUN_14003d040(piVar6); local_60 = 1; FUN_140006e80(puVar11 + 1); puVar5 = (undefined *)plVar9[local_res20]; puVar11[1] = puVar5; if (((puVar5 != PTR_DAT_14016f008) && (puVar5 != (undefined *)0x0)) && (puVar5 != (undefined *)0x8)) { *(int *)(puVar5 + -4) = *(int *)(puVar5 + -4) + 1; } FUN_14003d0d0((longlong)piVar6); local_60 = 0; } lVar16 = param_1 + 0x100; iVar2 = *(int *)(param_1 + 0x118); lVar17 = (longlong)iVar2; if (iVar2 < 0) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } iVar12 = *(int *)(param_1 + 0x118); uVar15 = iVar12 + 1; param_2 = (undefined **)(ulonglong)uVar15; FUN_1400cafc0(lVar16,uVar15); iVar12 = iVar12 - iVar2; if ((0 < iVar12) && (iVar12 = iVar12 + -1, -1 < iVar12)) { lVar18 = (longlong)(iVar12 + iVar2 + 1) << 3; lVar19 = (longlong)(iVar12 + iVar2) << 3; do { lVar7 = FUN_140074a30(lVar16); param_2 = (undefined **)(lVar19 + lVar7); lVar7 = FUN_140074a30(lVar16); FUN_14009d860((longlong *)(lVar18 + lVar7),(longlong *)param_2); lVar19 = lVar19 + -8; lVar18 = lVar18 + -8; iVar12 = iVar12 + -1; } while (-1 < iVar12); } lVar16 = FUN_140074a30(lVar16); if (local_res18 != *(longlong **)(lVar16 + lVar17 * 8)) { if (local_res18 != (longlong *)0x0) { local_res18[1] = local_res18[1] + 1; } plVar9 = (longlong *)0x0; lVar18 = *(longlong *)(lVar16 + lVar17 * 8); if ((lVar18 != 0) && (*(longlong *)(*(longlong *)(lVar16 + lVar17 * 8) + 8) = *(longlong *)(lVar18 + 8) + -1, *(longlong *)(*(longlong *)(lVar16 + lVar17 * 8) + 8) == 0)) { plVar9 = *(longlong **)(lVar16 + lVar17 * 8); } *(longlong **)(lVar16 + lVar17 * 8) = local_res18; if (plVar9 != (longlong *)0x0) { if ((undefined8 *)*plVar9 != (undefined8 *)0x0) { param_2 = (undefined **)0x1; (*(code *)**(undefined8 **)*plVar9)(); } FUN_14003e8b0(plVar9); } } if (local_res18 != (longlong *)0x0) { plVar9 = local_res18 + 1; *plVar9 = *plVar9 + -1; if (*plVar9 == 0) { if ((undefined8 *)*local_res18 != (undefined8 *)0x0) { param_2 = (undefined **)0x1; (*(code *)**(undefined8 **)*local_res18)(); } FUN_14003e8b0(local_res18); } } local_res10 = local_res10 + 1; local_res20 = local_res20 + 1; piVar6 = local_88; uVar15 = (uint)local_a0; } while (local_res10 < (int)(uint)local_a0); } local_b8 = Proud::CFastArray,0>::vftable; if (0 < (int)uVar15) { uVar14 = (ulonglong)uVar15; plVar9 = local_a8; do { FUN_140006e80(plVar9); plVar9 = plVar9 + 1; uVar14 = uVar14 - 1; } while (uVar14 != 0); } if (local_a8 != (longlong *)0x0) { if (local_b0 == (longlong *)0x0) { FUN_14003e8b0(local_a8); } else { (**(code **)(*local_b0 + 0x18))(local_b0,local_a8); } } FUN_14003d0d0((longlong)piVar6); return; }