/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x14007bed0 FUN_14007bed0 * Pseudocode, not original source. */ void FUN_14007bed0(longlong *param_1,uint *param_2,uint *param_3,longlong param_4,undefined8 param_5 ,uint *param_6,uint *param_7,longlong param_8,longlong param_9,char *param_10, ushort *param_11) { uint uVar1; int iVar2; longlong lVar3; void *pvVar4; undefined8 *puVar5; longlong *plVar6; undefined8 uVar7; uint *puVar8; uint *puVar9; uint *puVar10; undefined4 *puVar11; size_t sVar12; ulonglong uVar13; uint **ppuVar14; longlong **pplVar15; undefined *puVar16; longlong lVar17; uint *puVar18; undefined1 local_res8 [8]; uint *local_168; uint *local_160; uint *local_158; undefined8 *local_150; longlong *local_148; longlong *local_140; longlong *local_138 [2]; undefined4 local_128 [2]; undefined8 local_120; undefined8 local_110; undefined8 local_108; undefined **local_100; undefined8 local_f8; undefined8 local_f0; undefined8 local_e8; undefined8 local_e0; undefined8 local_d8; undefined8 local_d0; undefined8 local_c8; uint local_c0; uint local_bc; uint local_b8; undefined **local_b0; undefined8 local_a8; uint *local_a0; undefined8 local_98; undefined8 local_90; undefined4 local_88; undefined **local_80; undefined4 local_78; undefined2 local_74; undefined **local_68; undefined8 local_60; undefined8 local_58; undefined8 local_50; undefined8 local_48; undefined8 local_38; local_38 = 0xfffffffffffffffe; lVar17 = param_4; (**(code **)(param_1[0xf] + 0x10))(); if ((((longlong *)param_1[0xba] != (longlong *)0x0) && (lVar3 = *(longlong *)param_1[0xba], lVar3 != 0)) && (*(int *)(lVar3 + 0x100) == 3)) { FUN_140077110(param_1,(longlong *)&local_160,*param_2); puVar18 = (uint *)0x0; if ((local_160 == (uint *)0x0) || (*(longlong *)local_160 == 0)) { plVar6 = FUN_140079a80(param_1,(longlong *)&local_150,*param_2); puVar9 = (uint *)*plVar6; if (puVar9 != local_160) { if (puVar9 != (uint *)0x0) { *(longlong *)(*plVar6 + 8) = *(longlong *)(puVar9 + 2) + 1; } puVar9 = puVar18; if ((local_160 != (uint *)0x0) && (*(longlong *)(local_160 + 2) = *(longlong *)(local_160 + 2) + -1, *(longlong *)(local_160 + 2) == 0)) { puVar9 = local_160; } local_160 = (uint *)*plVar6; if (puVar9 != (uint *)0x0) { pvVar4 = *(void **)puVar9; if (pvVar4 != (void *)0x0) { FUN_140043ca0((char *)((longlong)pvVar4 + 8)); operator_delete(pvVar4); } FUN_1400302f0(puVar9); } } if ((local_150 != (undefined8 *)0x0) && (local_150[1] = local_150[1] + -1, local_150[1] == 0)) { pvVar4 = (void *)*local_150; if (pvVar4 != (void *)0x0) { FUN_140043ca0((char *)((longlong)pvVar4 + 8)); operator_delete(pvVar4); } FUN_1400302f0(local_150); } } local_res8[0] = 0; uVar1 = *param_3; uVar13 = (ulonglong)uVar1; if (uVar1 == 1) { if (param_1 == (longlong *)0xffffffffffffeab0) { local_140 = (longlong *)0x0; } else { local_140 = param_1 + 0x2ab; } puVar9 = puVar18; if (local_160 != (uint *)0x0) { puVar9 = *(uint **)local_160; } FUN_140071ea0((char *)(puVar9 + 2),param_3,&local_140); } else { FUN_140070860(param_1,(longlong *)&local_168,uVar1); puVar9 = puVar18; if (*(uint *)(param_1 + 0x2af) == *param_3) { local_138[0] = param_1 + 0xd; if (local_160 != (uint *)0x0) { puVar9 = *(uint **)local_160; } pplVar15 = local_138; } else { if ((local_168 == (uint *)0x0) || (lVar3 = *(longlong *)local_168, lVar3 == 0)) { local_158 = operator_new(0x6c0); puVar8 = puVar18; if (local_158 != (uint *)0x0) { puVar8 = (uint *)FUN_1400b6b20((undefined8 *)local_158,(longlong)param_1); } if (puVar8 == (uint *)0x0) { local_158 = (uint *)0x0; } else { local_158 = (uint *)FUN_140030280(0x10); local_158[2] = 1; local_158[3] = 0; *(uint **)local_158 = puVar8; } puVar8 = local_158; if (local_158 != local_168) { if (local_158 != (uint *)0x0) { *(longlong *)(local_158 + 2) = *(longlong *)(local_158 + 2) + 1; } puVar10 = puVar18; if ((local_168 != (uint *)0x0) && (*(longlong *)(local_168 + 2) = *(longlong *)(local_168 + 2) + -1, *(longlong *)(local_168 + 2) == 0)) { puVar10 = local_168; } local_168 = local_158; if (puVar10 != (uint *)0x0) { puVar5 = *(undefined8 **)puVar10; if (puVar5 != (undefined8 *)0x0) { (**(code **)*puVar5)(puVar5,1); } FUN_1400302f0(puVar10); } } puVar10 = local_158; if (puVar8 != (uint *)0x0) { puVar8 = puVar8 + 2; *(longlong *)puVar8 = *(longlong *)puVar8 + -1; if (*(longlong *)puVar8 == 0) { puVar5 = *(undefined8 **)local_158; if (puVar5 != (undefined8 *)0x0) { (**(code **)*puVar5)(puVar5,1); } FUN_1400302f0(puVar10); } } puVar8 = puVar18; if (local_168 != (uint *)0x0) { puVar8 = *(uint **)local_168; } puVar8[0x15b] = *param_3; puVar8 = puVar18; if (local_168 != (uint *)0x0) { puVar8 = *(uint **)local_168; } puVar8[0xc] = *param_7; puVar8[0xd] = param_7[1]; puVar8[0xe] = param_7[2]; puVar8[0xf] = param_7[3]; puVar8 = puVar18; if (local_168 != (uint *)0x0) { puVar8 = *(uint **)local_168; } *(char *)((longlong)puVar8 + 0x25) = *param_10; puVar8 = puVar18; if (local_168 != (uint *)0x0) { puVar8 = *(uint **)local_168; } ppuVar14 = &local_168; FUN_140076a20((char *)(param_1 + 0x2ca),puVar8 + 0x15b,(longlong *)ppuVar14); FUN_14003d560((char *)(param_1 + 0x2ca)); puVar8 = puVar18; if (local_168 != (uint *)0x0) { puVar8 = *(uint **)local_168; } FUN_1400b3320((longlong)puVar8,'\x01'); if (*(int *)(param_8 + 0x18) == 0) { puVar8 = puVar18; if (local_168 != (uint *)0x0) { puVar8 = *(uint **)local_168; } FUN_140090fa0((longlong)(puVar8 + 0x5a)); } else { puVar8 = puVar18; if (local_168 != (uint *)0x0) { puVar8 = *(uint **)local_168; } ppuVar14 = (uint **)(ulonglong)(*(uint *)((longlong)param_1 + 0x6bc) >> 3); lVar17 = 0x10; FUN_140090ac0(puVar8 + 0x5a,*(byte **)(param_8 + 0x10),ppuVar14,0x10); } if (*(int *)(param_9 + 0x18) == 0) { puVar8 = puVar18; if (local_168 != (uint *)0x0) { puVar8 = *(uint **)local_168; } *(undefined1 *)(puVar8 + 0x158) = 1; } else { puVar8 = puVar18; if (local_168 != (uint *)0x0) { puVar8 = *(uint **)local_168; } ppuVar14 = (uint **)(ulonglong)(*(uint *)(param_1 + 0xd8) >> 3); FUN_1400a0660((ulonglong)(puVar8 + 0x14e),*(longlong *)(param_9 + 0x10),(SIZE_T)ppuVar14 ,lVar17); } puVar8 = puVar18; if (local_168 != (uint *)0x0) { puVar8 = *(uint **)local_168; } FUN_1400b8b80((longlong *)(puVar8 + 0x18e),(ulonglong)*param_6,ppuVar14,lVar17); if ((*param_11 != 0) && (*param_10 != '\0')) { puVar8 = puVar18; if (local_168 != (uint *)0x0) { puVar8 = *(uint **)local_168; } uVar7 = FUN_1400b6360((longlong *)puVar8,*param_11); local_res8[0] = (undefined1)uVar7; } } else if (*(char *)(lVar3 + 0x684) != '\0') { FUN_1400b5380(lVar3,(longlong)param_1); puVar8 = puVar18; if (local_168 != (uint *)0x0) { puVar8 = *(uint **)local_168; } puVar8[0x15b] = *param_3; puVar8 = puVar18; if (local_168 != (uint *)0x0) { puVar8 = *(uint **)local_168; } puVar8[0xc] = *param_7; puVar8[0xd] = param_7[1]; puVar8[0xe] = param_7[2]; puVar8[0xf] = param_7[3]; puVar8 = puVar18; if (local_168 != (uint *)0x0) { puVar8 = *(uint **)local_168; } *(char *)((longlong)puVar8 + 0x25) = *param_10; puVar8 = puVar18; if (local_168 != (uint *)0x0) { puVar8 = *(uint **)local_168; } FUN_1400b3320((longlong)puVar8,'\x01'); if (*(int *)(param_8 + 0x18) == 0) { puVar8 = puVar18; if (local_168 != (uint *)0x0) { puVar8 = *(uint **)local_168; } FUN_140090fa0((longlong)(puVar8 + 0x5a)); FUN_14001bc70((longlong)(puVar8 + 0x14e),0,uVar13); } else { puVar8 = puVar18; if (local_168 != (uint *)0x0) { puVar8 = *(uint **)local_168; } uVar13 = (ulonglong)(*(uint *)((longlong)param_1 + 0x6bc) >> 3); lVar17 = 0x10; FUN_140090ac0(puVar8 + 0x5a,*(byte **)(param_8 + 0x10),uVar13,0x10); } if (*(int *)(param_9 + 0x18) == 0) { puVar8 = puVar18; if (local_168 != (uint *)0x0) { puVar8 = *(uint **)local_168; } *(undefined1 *)(puVar8 + 0x158) = 1; } else { puVar8 = puVar18; if (local_168 != (uint *)0x0) { puVar8 = *(uint **)local_168; } uVar13 = (ulonglong)(*(uint *)(param_1 + 0xd8) >> 3); FUN_1400a0660((ulonglong)(puVar8 + 0x14e),*(longlong *)(param_9 + 0x10),uVar13,lVar17); } puVar8 = puVar18; if (local_168 != (uint *)0x0) { puVar8 = *(uint **)local_168; } FUN_1400b8b80((longlong *)(puVar8 + 0x18e),(ulonglong)*param_6,uVar13,lVar17); if ((*param_11 != 0) && (*param_10 != '\0')) { puVar8 = puVar18; if (local_168 != (uint *)0x0) { puVar8 = *(uint **)local_168; } uVar7 = FUN_1400b6360((longlong *)puVar8,*param_11); local_res8[0] = (undefined1)uVar7; } puVar8 = puVar18; if (local_168 != (uint *)0x0) { puVar8 = *(uint **)local_168; } *(undefined1 *)(puVar8 + 0x1a1) = 0; FUN_140075780((char *)(param_1 + 0x2d5),param_3,'\0'); } puVar8 = puVar18; if (local_160 != (uint *)0x0) { puVar8 = *(uint **)local_160; } puVar10 = puVar18; if (local_168 != (uint *)0x0) { puVar10 = *(uint **)local_168; } FUN_140079980((char *)(puVar10 + 0x16c),puVar8,(longlong *)&local_160); if ((local_168 == (uint *)0x0) || (*(longlong *)local_168 == 0)) { local_148 = (longlong *)0x0; } else { local_148 = (longlong *)(*(longlong *)local_168 + 8); } if (local_160 != (uint *)0x0) { puVar9 = *(uint **)local_160; } pplVar15 = &local_148; } FUN_140071ea0((char *)(puVar9 + 2),param_3,pplVar15); puVar9 = local_168; if ((local_168 != (uint *)0x0) && (*(longlong *)(local_168 + 2) = *(longlong *)(local_168 + 2) + -1, *(longlong *)(local_168 + 2) == 0)) { puVar5 = *(undefined8 **)local_168; if (puVar5 != (undefined8 *)0x0) { (**(code **)*puVar5)(puVar5,1); } FUN_1400302f0(puVar9); } } puVar16 = &DAT_14015de10; puVar8 = param_2; (**(code **)(param_1[0x303] + 0x60)) (param_1 + 0x303,1,&DAT_14015de10,param_2,param_3,param_5,local_res8); local_120 = 0; local_110 = 0; local_108 = 0; local_f8 = 0; local_f0 = 0; local_e8 = 0; local_e0 = 0; local_100 = Proud::ByteArray::vftable; local_c8 = 0; local_d0 = 0; local_d8 = 0; local_a8 = 0; local_a0 = (uint *)0x0; local_98 = 0; local_90 = 0; local_b0 = Proud::ByteArray::vftable; local_80 = Proud::AddrPort::vftable; local_78 = 0; local_74 = 0; local_60 = 0; local_58 = 0; local_50 = 0; local_48 = 0; local_68 = Proud::ByteArray::vftable; local_128[0] = 8; local_c0 = *param_2; local_bc = *param_3; puVar9 = puVar18; if (local_160 != (uint *)0x0) { puVar9 = *(uint **)local_160; } local_88 = (undefined4)*(longlong *)(puVar9 + 10); iVar2 = *(int *)(param_4 + 0x18); sVar12 = (size_t)iVar2; local_b8 = local_bc; if (iVar2 < 0) { /* WARNING: Subroutine does not return */ FUN_14002f590(); } FUN_14001bc70((longlong)&local_b0,iVar2,(SIZE_T)puVar16); puVar9 = puVar18; if (*(int *)(param_4 + 0x18) != 0) { puVar9 = *(uint **)(param_4 + 0x10); } puVar10 = local_a0; if ((int)local_98 == 0) { puVar10 = puVar18; } FUN_14001bd30((undefined8 *)puVar10,(undefined8 *)puVar9,sVar12); puVar11 = local_128; FUN_14007af60(param_1,puVar11,sVar12,puVar8); FUN_140056f10((longlong)local_128,puVar11,sVar12,puVar8); puVar18 = local_160; if ((local_160 != (uint *)0x0) && (*(longlong *)(local_160 + 2) = *(longlong *)(local_160 + 2) + -1, *(longlong *)(local_160 + 2) == 0)) { pvVar4 = *(void **)local_160; if (pvVar4 != (void *)0x0) { FUN_140043ca0((char *)((longlong)pvVar4 + 8)); operator_delete(pvVar4); } FUN_1400302f0(puVar18); } } return; }