/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x1400c2230 FUN_1400c2230 * Pseudocode, not original source. */ ulonglong FUN_1400c2230(longlong param_1,IMAGE_DOS_HEADER *param_2,uint *param_3, undefined ***param_4) { undefined1 uVar1; ushort uVar2; ulonglong in_RAX; ulonglong uVar3; undefined8 uVar4; longlong *plVar5; longlong *plVar6; longlong *plVar7; undefined1 *puVar8; longlong **pplVar9; longlong **pplVar10; longlong **pplVar11; longlong **pplVar12; uint *puVar13; SIZE_T SVar14; int iVar15; longlong **pplVar16; int iVar17; uint uVar18; longlong **pplVar20; double dVar21; uint local_res18 [2]; longlong *local_res20; undefined8 local_178; longlong local_170; longlong local_168; undefined4 local_160; int local_15c; undefined **local_150; undefined8 local_148; longlong **local_140; ulonglong local_138; undefined8 local_130; undefined **local_128; longlong **local_120; longlong **local_118; undefined8 local_110; undefined8 local_108; longlong **local_100; undefined1 local_f8 [56]; word local_c0 [2]; undefined2 local_bc; byte local_b8; undefined **local_a8; uint local_a0; byte local_9c [4]; byte local_98 [8]; int local_90 [2]; ulonglong local_88; uint local_80 [2]; byte local_78 [8]; undefined1 local_70; undefined4 local_6c; undefined1 local_68; undefined1 local_67; undefined8 local_60; longlong **pplVar19; local_60 = 0xfffffffffffffffe; if (((param_3[10] != 1) || (puVar13 = param_3, in_RAX = FUN_140075710(param_3,local_res18,param_3,param_4), (char)in_RAX == '\0')) || (in_RAX = FUN_140075580(param_3,(undefined8 *)local_98,puVar13,param_4), (char)in_RAX == '\0')) goto LAB_1400c279b; pplVar11 = (longlong **)0x0; local_120 = (longlong **)0x0; local_118 = (longlong **)0x0; local_110 = 0; local_108 = 0; local_128 = Proud::HostIDArray::vftable; in_RAX = FUN_140075580(param_3,(undefined8 *)local_90,puVar13,param_4); pplVar12 = pplVar11; pplVar9 = pplVar11; if ((((char)in_RAX == '\0') || (pplVar12 = (longlong **)0x0, local_90[0] < 0)) || (DAT_14016f140 < local_90[0])) { LAB_1400c277b: if (pplVar12 == (longlong **)0x0) goto LAB_1400c279b; if (pplVar9 == (longlong **)0x0) { LAB_1400c2793: in_RAX = FUN_14003e8b0(pplVar12); goto LAB_1400c279b; } plVar6 = *pplVar9; } else { FUN_14004cce0((longlong)&local_128,local_90[0],(longlong)puVar13); pplVar12 = local_118; iVar17 = (int)local_110; pplVar9 = local_118; if ((int)local_110 == 0) { pplVar9 = pplVar11; } SVar14 = (SIZE_T)(uint)(local_90[0] * 4); in_RAX = FUN_140074ee0(param_3,pplVar9,SVar14); pplVar9 = local_120; if ((char)in_RAX == '\0') goto LAB_1400c277b; local_148 = 0; local_140 = (longlong **)0x0; local_138 = 0; local_130 = 0; local_150 = Proud::ByteArray::vftable; uVar3 = FUN_140075580(param_3,&local_88,SVar14,param_4); if ((((char)uVar3 != '\0') && (iVar15 = (int)local_88, -1 < iVar15)) && (iVar15 <= DAT_14016f140)) { FUN_14002a050((longlong)&local_150,iVar15,SVar14); pplVar9 = local_140; if ((int)local_138 == 0) { pplVar9 = pplVar11; } SVar14 = local_88 & 0xffffffff; uVar4 = FUN_140074ee0(param_3,pplVar9,SVar14); if ((char)uVar4 != '\0') { FUN_140074fb0((undefined4 *)&local_178); FUN_140074a40((longlong)&local_178,pplVar9,SVar14,param_4); FUN_140075110((int *)&local_178,0x800,SVar14,param_4); uVar4 = 0; FUN_140075110((int *)&local_178,0,SVar14,param_4); FUN_140029d80((longlong)&local_178,CONCAT71((int7)((ulonglong)uVar4 >> 8),0x23),SVar14, param_4); uVar3 = local_138; iVar15 = (int)local_138; plVar6 = &local_178; FUN_140076380((longlong)plVar6,(longlong)(int)local_138,SVar14,param_4); pplVar9 = local_140; if ((int)local_138 == 0) { pplVar9 = pplVar11; } if (iVar15 != 0) { local_178._4_4_ = 0; if (local_170 == 0) { if (local_168 == 0) { /* WARNING: Subroutine does not return */ FUN_14008a420(0,pplVar9,SVar14,param_4); } LAB_1400c241e: SVar14 = uVar3 & 0xffffffff; FUN_140029f40(&local_168,pplVar9,SVar14,param_4); } else { if (local_168 != 0) goto LAB_1400c241e; if (local_170 == 0) { /* WARNING: Subroutine does not return */ FUN_14008a420(0,pplVar9,SVar14,param_4); } SVar14 = uVar3 & 0xffffffff; FUN_14002a110(local_170,pplVar9,SVar14); } plVar6 = &local_178; FUN_14002a180((longlong)plVar6,pplVar9,SVar14,param_4); } local_70 = DAT_140178020; local_6c = 0xffffffff; local_68 = DAT_140178040; local_80[0] = local_res18[0]; local_78[0] = local_98[0]; local_78[1] = local_98[1]; local_78[2] = local_98[2]; local_78[3] = local_98[3]; local_78[4] = local_98[4]; local_78[5] = local_98[5]; local_78[6] = local_98[6]; local_78[7] = local_98[7]; local_67 = 0; pplVar19 = pplVar11; pplVar20 = pplVar11; if (0 < iVar17) { do { if (((longlong)pplVar20 < 0) || (iVar17 <= (int)pplVar19)) { /* WARNING: Subroutine does not return */ FUN_14003def0(plVar6,pplVar9,SVar14,param_4); } plVar6 = *(longlong **)(param_1 + 0x108); pplVar9 = (longlong **)((longlong)pplVar12 + (longlong)pplVar20 * 4); local_100 = pplVar9; if (*(uint *)pplVar9 != *(uint *)(plVar6 + 0x2af)) { SVar14 = (SIZE_T)*(uint *)pplVar9; pplVar10 = &local_res20; plVar5 = FUN_1400a7920(plVar6,(longlong *)pplVar10,*(uint *)pplVar9); plVar7 = local_res20; pplVar16 = pplVar11; if ((undefined8 *)*plVar5 != (undefined8 *)0x0) { pplVar16 = *(longlong ***)*plVar5; } pplVar9 = pplVar10; if (local_res20 != (longlong *)0x0) { local_res20[1] = local_res20[1] + -1; plVar6 = (longlong *)local_res20[1]; if ((longlong *)local_res20[1] == (longlong *)0x0) { if ((undefined8 *)*local_res20 != (undefined8 *)0x0) { pplVar10 = (longlong **)0x1; (*(code *)**(undefined8 **)*local_res20)(); } FUN_14003e8b0(plVar7); plVar6 = plVar7; } pplVar9 = pplVar10; pplVar12 = local_118; iVar17 = (int)local_110; } if ((((pplVar16 != (longlong **)0x0) && (*(char *)((longlong)pplVar16 + 0x684) == '\0')) && (*(char *)(pplVar16 + 0xc1) != '\x01')) && ((pplVar16[3] != (longlong *)0x0 && (*pplVar16[3] != 0)))) { local_a8 = Proud::AddrPort::vftable; local_a0 = *(uint *)(pplVar16 + 0xb3); local_9c._0_2_ = *(undefined2 *)((longlong)pplVar16 + 0x59c); plVar6 = *(longlong **)(param_1 + 0x108); dVar21 = (double)(**(code **)(*(longlong *)(*(longlong *)(param_1 + 0x108) + 0x70) + 0x1c0))(); uVar1 = (**(code **)(*plVar6 + 0x30))(plVar6); uVar2 = FUN_14008be40(uVar1,(char)*(uint *)local_100); plVar6 = (longlong *)FUN_1400cf2a0((longlong)pplVar16); param_4 = &local_a8; SVar14 = (SIZE_T)uVar2; pplVar9 = (longlong **)(ulonglong)*(uint *)local_100; FUN_1400d31e0((longlong)plVar6,*(uint *)local_100,SVar14,(longlong)param_4, (longlong)&local_178,dVar21,(undefined8 *)local_80); } } uVar18 = (int)pplVar19 + 1; pplVar19 = (longlong **)(ulonglong)uVar18; pplVar20 = (longlong **)((longlong)pplVar20 + 1); } while ((int)uVar18 < iVar17); } FUN_140074fb0((undefined4 *)local_f8); local_f8._48_8_ = Proud::AddrPort::vftable; local_b8 = 0; local_c0[0] = (word)DAT_14016f3d0; local_c0[1] = DAT_14016f3d0._2_2_; local_bc = DAT_14016f3d4; local_f8._40_2_ = 1; local_f8._42_2_ = 0; puVar8 = local_f8; FUN_140074a40((longlong)puVar8,pplVar9,SVar14,param_4); SVar14 = local_138 & 0xffffffff; if ((int)local_138 < 1) { /* WARNING: Subroutine does not return */ FUN_14003def0(puVar8,pplVar9,SVar14,param_4); } local_f8._4_2_ = 0; local_f8._6_2_ = 0; pplVar11 = local_140; if (local_f8._8_8_ == 0) { if (local_f8._16_8_ == 0) { /* WARNING: Subroutine does not return */ FUN_14008a420(0,pplVar9,SVar14,param_4); } } else if (local_f8._16_8_ == 0) { if (local_f8._8_8_ == 0) { /* WARNING: Subroutine does not return */ FUN_14008a420(0,pplVar9,SVar14,param_4); } FUN_14002a110(local_f8._8_8_,local_140,SVar14); goto LAB_1400c26a9; } FUN_140029f40((longlong *)(local_f8 + 0x10),local_140,SVar14,param_4); LAB_1400c26a9: FUN_14002a180((longlong)local_f8,pplVar11,SVar14,param_4); FUN_1400c6270((IMAGE_DOS_HEADER *)param_1,param_2,(IMAGE_DOS_HEADER *)local_f8,param_4); local_res20 = (longlong *)(local_f8 + 8); FUN_14008a320((longlong *)(local_f8 + 8)); if (local_f8._16_8_ != 0) { if ((int)local_f8._28_4_ < 0) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } local_f8._24_2_ = 0; local_f8._26_2_ = 0; } local_res20 = &local_170; FUN_14008a320(&local_170); if (local_168 != 0) { if (local_15c < 0) { /* WARNING: Subroutine does not return */ FUN_14003dec0(); } local_160 = 0; } uVar4 = FUN_140049e40(&local_150); if (pplVar12 != (longlong **)0x0) { if (local_120 == (longlong **)0x0) { uVar4 = FUN_14003e8b0(pplVar12); } else { uVar4 = (*(code *)(*local_120)[3])(local_120,pplVar12); } } return CONCAT71((int7)((ulonglong)uVar4 >> 8),1); } } in_RAX = FUN_140049e40(&local_150); if (pplVar12 == (longlong **)0x0) goto LAB_1400c279b; if (local_120 == (longlong **)0x0) goto LAB_1400c2793; plVar6 = *local_120; pplVar9 = local_120; } in_RAX = (*(code *)plVar6[3])(pplVar9,pplVar12); LAB_1400c279b: return in_RAX & 0xffffffffffffff00; }