/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x14007dfc0 FUN_14007dfc0 * Pseudocode, not original source. */ void FUN_14007dfc0(longlong *param_1,undefined4 *param_2,longlong *param_3,undefined8 param_4) { int *piVar1; longlong *plVar2; longlong *plVar3; ulonglong uVar4; undefined8 *puVar5; longlong *plVar6; undefined4 *puVar7; longlong **pplVar8; longlong *plVar9; longlong *local_res8; longlong *local_158; undefined1 local_150; undefined4 local_148 [2]; ulonglong local_140 [2]; longlong local_130 [2]; undefined **local_120; undefined8 local_118; undefined8 local_110; undefined8 local_108; undefined8 local_100; longlong local_f8; longlong local_f0; ulonglong local_e8; undefined4 local_d8; undefined **local_d0; undefined8 local_c8; undefined8 local_c0; undefined8 local_b8; undefined8 local_b0; undefined **local_a0; undefined4 local_98; undefined2 local_94; undefined4 local_90; undefined **local_88; undefined8 local_80; undefined8 local_78; undefined8 local_70; undefined8 local_68; int *local_58; undefined1 local_50; undefined8 local_48; local_48 = 0xfffffffffffffffe; puVar7 = param_2; plVar9 = param_3; piVar1 = (int *)(**(code **)(*param_1 + 0x58))(); local_58 = piVar1; FUN_14002e6e0(piVar1); local_50 = 1; if ((char)param_1[0x9d] == '\0') { plVar6 = (longlong *)0x0; local_140[0] = 0; local_130[0] = 0; local_130[1] = 0; local_118 = 0; local_110 = 0; local_108 = 0; local_100 = 0; local_120 = Proud::ByteArray::vftable; local_e8 = 0; local_f0 = 0; local_f8 = 0; local_c8 = 0; local_c0 = 0; local_b8 = 0; local_b0 = 0; local_d0 = Proud::ByteArray::vftable; local_a0 = Proud::AddrPort::vftable; local_98 = 0; local_94 = 0; local_80 = 0; local_78 = 0; local_70 = 0; local_68 = 0; local_88 = Proud::ByteArray::vftable; local_res8 = (longlong *)FUN_140030280(0x60); plVar2 = plVar6; if (local_res8 != (longlong *)0x0) { plVar2 = FUN_14003bef0(local_res8,puVar7,plVar9,param_4); } if (plVar2 == (longlong *)0x0) { local_res8 = (longlong *)0x0; plVar3 = plVar6; } else { plVar3 = (longlong *)FUN_140030280(0x48); if (plVar3 != (longlong *)0x0) { local_res8 = plVar3; uVar4 = FUN_14002e790(); plVar9 = (longlong *)CONCAT71((int7)((ulonglong)plVar9 >> 8),1); FUN_14002e600((undefined4 *)plVar3,uVar4 & 0xffffffff,plVar9,param_4); } local_res8 = plVar3; FUN_14002e6e0((int *)plVar3); plVar3[8] = 1; plVar3[7] = (longlong)plVar2; FUN_14002e770((longlong)plVar3); } pplVar8 = &local_res8; FUN_14003bff0(local_140,(ulonglong *)pplVar8,plVar9,param_4); if (plVar3 != (longlong *)0x0) { local_158 = plVar3; FUN_14002e6e0((int *)plVar3); local_150 = 1; plVar2 = plVar3 + 8; *plVar2 = *plVar2 + -1; if (*plVar2 == 0) { FUN_14002e770((longlong)plVar3); local_150 = 0; FUN_14002b500((undefined4 *)plVar3,pplVar8,plVar9,param_4); } else { FUN_14002e770((longlong)plVar3); } } local_148[0] = 2; plVar2 = plVar6; if (local_140[0] != 0) { plVar2 = *(longlong **)(local_140[0] + 0x38); } *(int *)plVar2 = (int)param_2; plVar2 = plVar6; if (*param_3 != 0) { plVar2 = *(longlong **)(*param_3 + 0x38); } if (local_140[0] != 0) { plVar6 = *(longlong **)(local_140[0] + 0x38); } plVar6 = plVar6 + 2; plVar2 = plVar2 + 2; FUN_140003170(plVar6,plVar2,plVar9,param_4); local_d8 = 1; FUN_140030200(plVar6,plVar2,plVar9,param_4); local_res8 = (longlong *)PTR_DAT_140155010; FUN_140003170((longlong *)&local_res8,param_1 + 0x2b1,plVar9,param_4); plVar9 = (longlong *)(ulonglong)*(ushort *)(param_1 + 0x2b2); puVar5 = FUN_140033450(&local_158,(longlong *)&local_res8,*(ushort *)(param_1 + 0x2b2),param_4); local_98 = *(undefined4 *)(puVar5 + 1); local_94 = *(undefined2 *)((longlong)puVar5 + 0xc); local_90 = 0; puVar7 = local_148; FUN_14007af60(param_1,puVar7,(SIZE_T)plVar9,param_4); *(undefined1 *)(param_1 + 0x9d) = 1; FUN_14003b870(&local_88); FUN_14003b870(&local_d0); local_res8 = &local_f8; FUN_140095270(&local_f8); if (local_f0 != 0) { if ((longlong)local_e8 < 0) { /* WARNING: Subroutine does not return */ FUN_14002f590(); } local_e8 = local_e8 & 0xffffffff00000000; } FUN_14003b870(&local_120); FUN_140056b00(local_130 + 1,puVar7,plVar9,param_4); FUN_140056a80(local_130,puVar7,plVar9,param_4); FUN_14002b570((longlong *)local_140,puVar7,plVar9,param_4); } FUN_14002e770((longlong)piVar1); FUN_14002b570(param_3,puVar7,plVar9,param_4); return; }