/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469 * Ghidra 12.1.2 decompiler output for 0x14000d780 FUN_14000d780 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ /* WARNING: Removing unreachable block (ram,0x00014000dd22) */ /* WARNING: Type propagation algorithm not settling */ undefined8 FUN_14000d780(longlong param_1,int param_2,undefined8 param_3,longlong *param_4,longlong *param_5, longlong *param_6) { longlong lVar1; ulonglong *puVar2; ulonglong *puVar3; undefined4 *puVar4; int iVar5; longlong *plVar6; undefined2 *puVar7; undefined4 extraout_var; undefined8 extraout_RAX; ulonglong *puVar9; undefined2 *_Dst; ulonglong *puVar10; ulonglong *puVar11; undefined4 *puVar12; ulonglong *puVar13; undefined8 *puVar14; undefined8 *_Size; undefined1 auStack_268 [32]; ulonglong **local_248; int local_238 [2]; ulonglong *local_230; ulonglong *local_228; ulonglong *local_220; longlong *local_210; ulonglong *local_208; ulonglong *puStack_200; ulonglong local_1f8; ulonglong *local_1f0; longlong *local_1e8; longlong *local_1e0; undefined8 local_1d8; undefined8 local_1d0 [5]; undefined4 local_1a8; int local_1a4; undefined4 local_1a0; undefined1 local_19c; undefined4 local_198; undefined4 local_194; undefined4 local_190; undefined4 local_18c; undefined1 local_188; longlong local_180 [2]; longlong *local_170; ulonglong local_168; undefined2 local_158; undefined6 uStack_156; undefined8 local_148; ulonglong local_140; undefined2 local_130; undefined6 uStack_12e; undefined8 local_120; ulonglong local_118; ulonglong *local_108; ulonglong *puStack_100; ulonglong local_f8; ulonglong local_f0; ulonglong local_e8; ulonglong local_e0; ulonglong local_d8; void *local_d0; undefined8 local_c8; undefined8 local_c0; undefined4 local_a8; undefined4 local_a4; undefined2 local_a0; undefined6 uStack_9e; undefined8 local_90; ulonglong local_88; undefined8 local_78 [2]; longlong *local_68; ulonglong local_60; ulonglong local_48; undefined8 uVar8; local_1d8 = 0xfffffffffffffffe; local_48 = DAT_1401555a0 ^ (ulonglong)auStack_268; local_1e8 = param_5; local_210 = param_6; local_238[0] = param_2; local_1e0 = param_4; plVar6 = FUN_14000e5b0(local_1d0,param_4); FUN_14002a840(DAT_140162d58,plVar6); puVar9 = (ulonglong *)0x0; local_230 = (ulonglong *)0x0; local_228 = (ulonglong *)0x0; local_220 = (ulonglong *)0x0; puVar10 = puVar9; if (*(longlong *)(DAT_140162d60 + 0x58) == 0) { local_208 = (ulonglong *)0x0; } else { local_208 = *(ulonglong **)(DAT_140162d60 + 0x68); if (local_208 != (ulonglong *)0x0) { puStack_200 = (ulonglong *)*local_208; puVar13 = local_208; puVar3 = puStack_200; goto joined_r0x00014000d84f; } } puStack_200 = (ulonglong *)0x0; puVar13 = local_208; puVar3 = puStack_200; joined_r0x00014000d84f: while (puVar3 != (ulonglong *)0x0) { puVar2 = (ulonglong *)puVar3[2]; if (puVar2 != (ulonglong *)0x0) { if ((puVar2 < puVar10) && (puVar9 <= puVar2)) { lVar1 = ((longlong)puVar2 - (longlong)puVar9) + SUB168(SEXT816(-0x7bdef7bdef7bdef7) * SEXT816((longlong)puVar2 - (longlong)puVar9),8 ); if (puVar10 == local_220) { FUN_14002d140((longlong *)&local_230); puVar9 = local_230; puVar10 = local_228; } puVar11 = (ulonglong *)0x0; local_208 = puVar10; local_1f0 = puVar10; if (puVar10 != (ulonglong *)0x0) { FUN_140004950((undefined4 *)puVar10, (undefined4 *)(puVar9 + ((lVar1 >> 7) - (lVar1 >> 0x3f)) * 0x1f)); puVar9 = local_230; puVar11 = local_228; } } else { if (puVar10 == local_220) { FUN_14002d140((longlong *)&local_230); puVar9 = local_230; puVar10 = local_228; } puVar11 = (ulonglong *)0x0; local_208 = puVar10; local_1f0 = puVar10; if (puVar10 != (ulonglong *)0x0) { FUN_140004950((undefined4 *)puVar10,(undefined4 *)puVar2); puVar9 = local_230; puVar11 = local_228; } } puVar10 = puVar11 + 0x1f; local_228 = puVar10; } puVar3 = (ulonglong *)*puVar3; while (puVar3 == (ulonglong *)0x0) { puVar13 = puVar13 + 1; puVar3 = (ulonglong *)*puVar13; } param_2 = local_238[0]; param_5 = local_1e8; param_6 = local_210; if (puVar13 == puVar3) { puVar3 = (ulonglong *)0x0; } } if (puVar9 != puVar10) { puVar9 = puVar9 + 0x17; do { FUN_140004ea0(&local_1a8,(undefined4 *)(puVar9 + -0x17)); local_108 = (ulonglong *)puVar9[-3]; puStack_100 = (ulonglong *)puVar9[-2]; local_f8 = puVar9[-1]; local_f0 = *puVar9; local_e8 = puVar9[1]; local_e0 = puVar9[2]; local_d8 = puVar9[3]; FUN_140004d60(&local_d0,(longlong *)(puVar9 + 4)); local_238[0] = local_1a4; local_208 = local_108; puStack_200 = puStack_100; local_1f8 = local_f8; local_248 = &local_208; (**(code **)(*(longlong *)(param_1 + 0x20) + 0x30)) (param_1 + 0x20,param_2,&DAT_1401555d0,local_238); if (local_d0 != (void *)0x0) { operator_delete(local_d0); } local_d0 = (void *)0x0; local_c8 = 0; local_c0 = 0; if (7 < local_118) { operator_delete((void *)CONCAT62(uStack_12e,local_130)); } local_118 = 7; local_120 = 0; local_130 = 0; if (7 < local_140) { operator_delete((void *)CONCAT62(uStack_156,local_158)); } local_140 = 7; local_148 = 0; local_158 = 0; if (7 < local_168) { operator_delete((void *)CONCAT62(local_180[0]._2_6_,(undefined2)local_180[0])); } local_168 = 7; local_170 = (longlong *)0x0; local_180[0]._0_2_ = 0; puVar3 = puVar9 + 8; puVar9 = puVar9 + 0x1f; param_6 = local_210; } while (puVar3 != puVar10); } FUN_14002c400(DAT_140162d60); puVar4 = (undefined4 *)param_5[1]; for (puVar12 = (undefined4 *)*param_5; puVar12 != puVar4; puVar12 = puVar12 + 0x28) { local_1a8 = *puVar12; local_1a4 = puVar12[1]; local_1a0 = puVar12[2]; local_19c = *(undefined1 *)(puVar12 + 3); local_198 = puVar12[4]; local_194 = puVar12[5]; local_190 = puVar12[6]; local_18c = puVar12[7]; local_188 = *(undefined1 *)(puVar12 + 8); local_168 = 7; local_170 = (longlong *)0x0; local_180[0]._0_2_ = 0; FUN_140001600(local_180,(longlong *)(puVar12 + 10),0,0xffffffffffffffff); local_140 = 7; local_148 = 0; local_158 = 0; FUN_140001600((longlong *)&local_158,(longlong *)(puVar12 + 0x14),0,0xffffffffffffffff); local_118 = 7; local_120 = 0; local_130 = 0; FUN_140001600((longlong *)&local_130,(longlong *)(puVar12 + 0x1e),0,0xffffffffffffffff); if (*(int *)(DAT_140162d68 + 0x154) == local_1a4) { FUN_140022a20(DAT_140162d68,&local_1a8); } else { FUN_14002c820(DAT_140162d60,&local_1a8); } if (7 < local_118) { operator_delete((void *)CONCAT62(uStack_12e,local_130)); } local_118 = 7; local_120 = 0; local_130 = 0; if (7 < local_140) { operator_delete((void *)CONCAT62(uStack_156,local_158)); } local_140 = 7; local_148 = 0; local_158 = 0; if (7 < local_168) { operator_delete((void *)CONCAT62(local_180[0]._2_6_,(undefined2)local_180[0])); } } puVar4 = (undefined4 *)param_6[1]; puVar12 = (undefined4 *)*param_6; do { if (puVar12 == puVar4) { LAB_14000dea2: printf("ServerFile Count: %d !!! \n",(local_1e0[1] - *local_1e0) / 0x30); printf("ServerOption Count: %d !!! \n",(param_5[1] - *param_5) / 0xa0); iVar5 = printf("AgentManager Count: %d !!! \n",(param_6[1] - *param_6) / 0xa0); uVar8 = CONCAT44(extraout_var,iVar5); *(undefined1 *)(param_1 + 0x40) = 1; if (local_230 != (ulonglong *)0x0) { std::_Container_base0::_Orphan_all((_Container_base0 *)&local_230); FUN_140004b30(local_230,local_228); operator_delete(local_230); uVar8 = extraout_RAX; } return CONCAT71((int7)((ulonglong)uVar8 >> 8),1); } puVar14 = (undefined8 *)0xffffffffffffffff; local_1a8 = *puVar12; local_1a4 = puVar12[1]; local_1a0 = puVar12[2]; local_19c = *(undefined1 *)(puVar12 + 3); local_198 = puVar12[4]; local_194 = puVar12[5]; local_190 = puVar12[6]; local_18c = puVar12[7]; local_188 = *(undefined1 *)(puVar12 + 8); local_168 = 7; local_170 = (longlong *)0x0; local_180[0]._0_2_ = 0; FUN_140001600(local_180,(longlong *)(puVar12 + 10),0,0xffffffffffffffff); local_140 = 7; local_148 = 0; local_158 = 0; FUN_140001600((longlong *)&local_158,(longlong *)(puVar12 + 0x14),0,0xffffffffffffffff); local_118 = 7; local_120 = 0; local_130 = 0; _Size = (undefined8 *)0x0; FUN_140001600((longlong *)&local_130,(longlong *)(puVar12 + 0x1e),0,0xffffffffffffffff); param_6 = local_170; local_a8 = 0; local_88 = 7; local_90 = 0; local_a0 = 0; local_60 = 7; local_68 = (longlong *)0x0; local_78[0]._0_2_ = 0; local_a4 = local_198; if ((longlong *)0x7ffffffffffffffe < local_170) { std::_Xlength_error("string too long"); goto LAB_14000dea2; } if (local_170 < (longlong *)0x8) { if (local_170 == (longlong *)0x0) { local_68 = (longlong *)0x0; local_78[0]._0_2_ = 0; } } else { _Size = (undefined8 *)0x0; FUN_1400018f0(local_78,(ulonglong)local_170,0); } if (param_6 != (longlong *)0x0) { puVar7 = (undefined2 *)local_180; if (7 < local_168) { puVar7 = (undefined2 *)CONCAT62(local_180[0]._2_6_,(undefined2)local_180[0]); } _Dst = (undefined2 *)local_78; if (7 < local_60) { _Dst = (undefined2 *)CONCAT62(local_78[0]._2_6_,(undefined2)local_78[0]); } _Size = (undefined8 *)((longlong)param_6 * 2); memcpy(_Dst,puVar7,(size_t)_Size); local_68 = param_6; puVar7 = (undefined2 *)local_78; if (7 < local_60) { puVar7 = (undefined2 *)CONCAT62(local_78[0]._2_6_,(undefined2)local_78[0]); } puVar7[(longlong)param_6] = 0; } if (*(undefined8 **)(param_1 + 0x50) != (undefined8 *)0x0) { FUN_140007a80(*(undefined8 **)(param_1 + 0x50),(undefined8 **)&local_a8,_Size,puVar14); } if (7 < local_60) { operator_delete((void *)CONCAT62(local_78[0]._2_6_,(undefined2)local_78[0])); } local_60 = 7; local_68 = (longlong *)0x0; local_78[0]._0_2_ = 0; if (7 < local_88) { operator_delete((void *)CONCAT62(uStack_9e,local_a0)); } if (7 < local_118) { operator_delete((void *)CONCAT62(uStack_12e,local_130)); } local_118 = 7; local_120 = 0; local_130 = 0; if (7 < local_140) { operator_delete((void *)CONCAT62(uStack_156,local_158)); } local_140 = 7; local_148 = 0; local_158 = 0; if (7 < local_168) { operator_delete((void *)CONCAT62(local_180[0]._2_6_,(undefined2)local_180[0])); } puVar12 = puVar12 + 0x28; param_6 = local_210; } while( true ); }