/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186 * Ghidra 12.1.2 decompiler output for 0x14000e610 FUN_14000e610 * Pseudocode, not original source. */ /* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */ /* WARNING: Type propagation algorithm not settling */ ulonglong FUN_14000e610(char *param_1,longlong *param_2) { char cVar1; ulonglong uVar2; int iVar3; uint uVar4; uint uVar5; undefined4 extraout_var; ulonglong *puVar6; longlong *plVar7; ulonglong *puVar8; undefined1 *puVar9; undefined4 extraout_var_00; ulonglong extraout_RAX; ulonglong extraout_RAX_00; ulonglong extraout_RAX_01; undefined4 extraout_var_01; longlong extraout_RAX_02; longlong extraout_RAX_03; ulonglong extraout_RAX_04; ulonglong uVar10; longlong lVar11; ulonglong *puVar12; char *pcVar13; undefined8 **_Buf2; undefined8 *puVar14; ulonglong *puVar15; ulonglong uVar16; longlong lVar17; ulonglong _Size; char *pcVar18; undefined1 auStack_278 [32]; ulonglong *local_258; ulonglong *local_250; ulonglong *local_248; longlong local_238; ulonglong local_230; ulonglong *local_228; ulonglong *local_220; longlong *local_218; undefined8 local_210; ulonglong local_208 [2]; ulonglong local_1f8; ulonglong local_1f0; char local_1e0; undefined7 uStack_1df; undefined8 local_1d0; ulonglong local_1c8; void *local_1b8 [2]; longlong local_1a8; ulonglong local_1a0; undefined1 local_190; undefined7 uStack_18f; undefined8 local_180; ulonglong local_178; char local_168; undefined7 uStack_167; undefined8 local_158; ulonglong local_150; longlong local_140 [2]; undefined8 local_130; ulonglong local_128; ulonglong local_118 [2]; undefined8 local_108; ulonglong local_100; void *local_e8 [2]; longlong local_d8; ulonglong local_d0; undefined1 local_c0; undefined7 uStack_bf; undefined8 local_b0; ulonglong local_a8; undefined1 local_98; undefined7 uStack_97; undefined8 local_88; ulonglong local_80; undefined1 local_70; undefined7 uStack_6f; undefined8 local_60; ulonglong local_58; ulonglong local_48; local_210 = 0xfffffffffffffffe; local_48 = DAT_14016f5a0 ^ (ulonglong)auStack_278; local_218 = param_2; if (*(char *)(DAT_14017cf10 + 0x46) != '\0') { printf("API SERVER - XML FORMAT EXPORT START-----------------------------------------\n"); } local_1f0 = 0xf; local_1f8 = 0; local_208[0]._0_1_ = 0; uVar10 = 0xffffffffffffffff; pcVar18 = param_1; do { if (uVar10 == 0) break; uVar10 = uVar10 - 1; cVar1 = *pcVar18; pcVar18 = pcVar18 + 1; } while (cVar1 != '\0'); FUN_14000c9e0(local_208,param_1,~uVar10 - 1); uVar5 = (uint)local_1f8; if ((int)(uint)local_1f8 < 1) { iVar3 = printf("XML EXPORT ERROR - SIZE(%d) \n",local_1f8 & 0xffffffff); uVar10 = CONCAT44(extraout_var,iVar3); } else { puVar8 = (ulonglong *)0x0; local_258 = (ulonglong *)0x0; local_250 = (ulonglong *)0x0; local_248 = (ulonglong *)0x0; uVar10 = 1; puVar12 = puVar8; if ((uint)local_1f8 - 1 != 0) { lVar11 = -(longlong)param_1; uVar16 = (ulonglong)((uint)local_1f8 - 1); pcVar18 = param_1; local_238 = lVar11; do { if ((*pcVar18 == '<') && (pcVar13 = pcVar18, uVar2 = uVar10, uVar4 = (uint)uVar10, (pcVar18 + lVar11 + 1)[(longlong)param_1] != '/')) { while (uVar4 < uVar5) { if (pcVar13[1] == '>') { pcVar13 = param_1 + uVar10; local_100 = 0xf; local_108 = 0; local_118[0]._0_1_ = 0; local_230 = uVar16; if (pcVar13 != param_1 + uVar2) { FUN_14000c9e0(local_118,pcVar13,(longlong)(param_1 + uVar2) - (longlong)pcVar13); puVar8 = local_258; puVar12 = local_250; } if ((local_118 < puVar12) && (puVar8 <= local_118)) { puVar15 = puVar8; if (puVar12 == local_248) { FUN_14000ff00((longlong *)&local_258); puVar15 = local_258; puVar12 = local_250; } uVar16 = local_230; puVar6 = (ulonglong *)0x0; local_228 = puVar12; local_220 = puVar12; if (puVar12 != (ulonglong *)0x0) { puVar12[3] = 0xf; puVar12[2] = 0; puVar6 = puVar12; if (0xf < puVar12[3]) { puVar6 = (ulonglong *)*puVar12; } *(undefined1 *)puVar6 = 0; FUN_14000c660((longlong *)puVar12, (longlong *) (puVar15 + (((longlong)local_118 - (longlong)puVar8) / 0x28) * 5),0, 0xffffffffffffffff); puVar15 = local_258; uVar16 = local_230; puVar6 = local_250; } } else { if (puVar12 == local_248) { FUN_14000ff00((longlong *)&local_258); puVar8 = local_258; puVar12 = local_250; } puVar15 = puVar8; puVar6 = (ulonglong *)0x0; local_228 = puVar12; local_220 = puVar12; if (puVar12 != (ulonglong *)0x0) { puVar12[3] = 0xf; puVar12[2] = 0; puVar8 = puVar12; if (0xf < puVar12[3]) { puVar8 = (ulonglong *)*puVar12; } *(undefined1 *)puVar8 = 0; FUN_14000c660((longlong *)puVar12,(longlong *)local_118,0,0xffffffffffffffff); puVar15 = local_258; puVar6 = local_250; } } local_250 = puVar6 + 5; puVar8 = puVar15; if (0xf < local_100) { operator_delete((void *)CONCAT71(local_118[0]._1_7_,(undefined1)local_118[0])); puVar8 = local_258; } local_100 = 0xf; local_108 = 0; local_118[0]._0_1_ = 0; lVar11 = local_238; puVar12 = local_250; break; } uVar4 = (int)uVar2 + 1; lVar11 = local_238; pcVar13 = pcVar13 + 1; uVar2 = (ulonglong)uVar4; } } uVar10 = (ulonglong)((uint)uVar10 + 1); pcVar18 = pcVar18 + 1; uVar16 = uVar16 - 1; } while (uVar16 != 0); local_230 = 0; param_2 = local_218; } uVar10 = DAT_140175058; uVar16 = 1; lVar11 = (longlong)puVar12 - (longlong)puVar8 >> 0x3f; lVar17 = ((longlong)puVar12 - (longlong)puVar8) / 0x28 + lVar11; if (lVar17 != lVar11) { _Buf2 = &DAT_140175048; if (0xf < DAT_140175060) { _Buf2 = (undefined8 **)DAT_140175048; } uVar2 = puVar8[2]; puVar12 = puVar8; if (0xf < puVar8[3]) { puVar12 = (ulonglong *)*puVar8; } _Size = DAT_140175058; if (uVar2 < DAT_140175058) { _Size = uVar2; } uVar5 = memcmp(puVar12,_Buf2,_Size); if (uVar5 == 0) { if (uVar2 < uVar10) { uVar5 = 0xffffffff; } else { uVar5 = (uint)(uVar2 != uVar10); } } if ((uVar5 == 0) && (1 < (ulonglong)(lVar17 - lVar11))) { lVar11 = 0x28; do { plVar7 = FUN_140010200((longlong *)&local_98,puVar8 + uVar16 * 5); FUN_1400102b0((undefined8 *)&local_1e0,plVar7); if (0xf < local_80) { operator_delete((void *)CONCAT71(uStack_97,local_98)); } local_80 = 0xf; local_88 = 0; local_98 = 0; puVar8 = FUN_140010300((ulonglong *)&local_70,local_258 + uVar16 * 5); FUN_1400102b0((undefined8 *)&local_168,(longlong *)puVar8); if (0xf < local_58) { operator_delete((void *)CONCAT71(uStack_6f,local_70)); } local_58 = 0xf; local_60 = 0; local_70 = 0; pcVar18 = &local_1e0; if (0xf < local_1c8) { pcVar18 = (char *)CONCAT71(uStack_1df,local_1e0); } uVar10 = 0xffffffffffffffff; pcVar13 = pcVar18; do { if (uVar10 == 0) break; uVar10 = uVar10 - 1; cVar1 = *pcVar13; pcVar13 = pcVar13 + 1; } while (cVar1 != '\0'); lVar17 = FUN_14000fcf0(local_208,pcVar18,~uVar10 - 1); iVar3 = (int)local_1d0 + (int)lVar17; pcVar18 = &local_168; if (0xf < local_150) { pcVar18 = (char *)CONCAT71(uStack_167,local_168); } uVar10 = 0xffffffffffffffff; pcVar13 = pcVar18; do { if (uVar10 == 0) break; uVar10 = uVar10 - 1; cVar1 = *pcVar13; pcVar13 = pcVar13 + 1; } while (cVar1 != '\0'); lVar17 = FUN_14000fcf0(local_208,pcVar18,~uVar10 - 1); if ((iVar3 == -1) || ((int)lVar17 == -1)) { iVar3 = printf("XML EXPORT ERROR - DATA ERROR \n"); uVar10 = CONCAT44(extraout_var_00,iVar3); if (0xf < local_150) { operator_delete((void *)CONCAT71(uStack_167,local_168)); uVar10 = extraout_RAX; } local_150 = 0xf; local_158 = 0; local_168 = '\0'; if (0xf < local_1c8) { operator_delete((void *)CONCAT71(uStack_1df,local_1e0)); uVar10 = extraout_RAX_00; } puVar12 = local_250; local_1c8 = 0xf; local_1d0 = 0; local_1e0 = '\0'; puVar8 = local_258; if (local_258 != (ulonglong *)0x0) { for (; puVar8 != puVar12; puVar8 = puVar8 + 5) { if (0xf < puVar8[3]) { operator_delete((void *)*puVar8); } puVar8[3] = 0xf; puVar8[2] = 0; *(undefined1 *)puVar8 = 0; } operator_delete(local_258); uVar10 = extraout_RAX_01; } local_258 = (ulonglong *)0x0; local_250 = (ulonglong *)0x0; local_248 = (ulonglong *)0x0; goto LAB_14000ef81; } puVar9 = (undefined1 *)local_208; if (0xf < local_1f0) { puVar9 = (undefined1 *)CONCAT71(local_208[0]._1_7_,(undefined1)local_208[0]); } local_128 = 0xf; local_130 = 0; local_140[0]._0_1_ = 0; FUN_1400104e0(local_140,puVar9 + iVar3,puVar9 + (int)lVar17); local_1a0 = 0xf; local_1a8 = 0; local_1b8[0] = (void *)((ulonglong)local_1b8[0] & 0xffffffffffffff00); FUN_14000c660((longlong *)local_1b8,(longlong *)(local_258 + uVar16 * 5),0, 0xffffffffffffffff); local_178 = 0xf; local_180 = 0; local_190 = 0; FUN_14000c660((longlong *)&local_190,local_140,0,0xffffffffffffffff); local_d0 = 0xf; local_d8 = 0; local_e8[0] = (void *)((ulonglong)local_e8[0] & 0xffffffffffffff00); if (local_1a0 < 0x10) { memmove(local_e8,local_1b8,local_1a8 + 1); local_d0 = local_1a0; } else { local_e8[0] = local_1b8[0]; local_1b8[0] = (void *)0x0; local_d0 = local_1a0; } local_d8 = local_1a8; local_1a0 = 0xf; local_1a8 = 0; local_1b8[0] = (void *)((ulonglong)local_1b8[0] & 0xffffffffffffff00); local_a8 = 0xf; local_b0 = 0; local_c0 = 0; FUN_140011730((undefined8 *)&local_c0,(undefined8 *)&local_190); if (param_2[4] == 0) { FUN_1400108a0(param_2,(longlong *)&local_98,(longlong *)local_e8); } else { FUN_140010710(param_2,(undefined8 *)&local_70,(char *)local_e8,(longlong *)local_e8); } if (0xf < local_a8) { operator_delete((void *)CONCAT71(uStack_bf,local_c0)); } local_a8 = 0xf; local_b0 = 0; local_c0 = 0; if (0xf < local_d0) { operator_delete(local_e8[0]); } local_d0 = 0xf; local_d8 = 0; local_e8[0] = (void *)((ulonglong)local_e8[0] & 0xffffffffffffff00); if (0xf < local_178) { operator_delete((void *)CONCAT71(uStack_18f,local_190)); } local_178 = 0xf; local_180 = 0; local_190 = 0; if (0xf < local_1a0) { operator_delete(local_1b8[0]); } local_1a0 = 0xf; local_1a8 = 0; local_1b8[0] = (void *)((ulonglong)local_1b8[0] & 0xffffffffffffff00); if (*(char *)(DAT_14017cf10 + 0x46) != '\0') { puVar9 = (undefined1 *)local_140; if (0xf < local_128) { puVar9 = (undefined1 *)CONCAT71(local_140[0]._1_7_,(undefined1)local_140[0]); } puVar14 = (undefined8 *)(lVar11 + (longlong)local_258); if (0xf < (ulonglong)puVar14[3]) { puVar14 = (undefined8 *)*puVar14; } printf("[%s]\n%s\n",puVar14,puVar9); } if (0xf < local_128) { operator_delete((void *)CONCAT71(local_140[0]._1_7_,(undefined1)local_140[0])); } local_128 = 0xf; local_130 = 0; local_140[0]._0_1_ = 0; if (0xf < local_150) { operator_delete((void *)CONCAT71(uStack_167,local_168)); } local_150 = 0xf; local_158 = 0; local_168 = '\0'; if (0xf < local_1c8) { operator_delete((void *)CONCAT71(uStack_1df,local_1e0)); } local_1c8 = 0xf; local_1d0 = 0; local_1e0 = '\0'; uVar16 = (ulonglong)((int)uVar16 + 1); lVar11 = lVar11 + 0x28; puVar8 = local_258; } while (uVar16 < (ulonglong)(((longlong)local_250 - (longlong)local_258) / 0x28)); } lVar11 = DAT_14017cf10; if (*(char *)(DAT_14017cf10 + 0x46) != '\0') { iVar3 = printf( "---------------------------------------------------------------------------\n" ); lVar11 = CONCAT44(extraout_var_01,iVar3); puVar8 = local_258; } if (puVar8 != (ulonglong *)0x0) { std::_Container_base0::_Orphan_all((_Container_base0 *)&local_258); puVar12 = local_250; for (puVar8 = local_258; puVar8 != puVar12; puVar8 = puVar8 + 5) { if (0xf < puVar8[3]) { operator_delete((void *)*puVar8); } puVar8[3] = 0xf; puVar8[2] = 0; *(undefined1 *)puVar8 = 0; } operator_delete(local_258); lVar11 = extraout_RAX_02; } local_258 = (ulonglong *)0x0; local_250 = (ulonglong *)0x0; local_248 = (ulonglong *)0x0; if (0xf < local_1f0) { operator_delete((void *)CONCAT71(local_208[0]._1_7_,(undefined1)local_208[0])); lVar11 = extraout_RAX_03; } return CONCAT71((int7)((ulonglong)lVar11 >> 8),1); } printf("XML EXPORT ERROR - ELEMENT(0) \n"); if (local_258 != (ulonglong *)0x0) { std::_Container_base0::_Orphan_all((_Container_base0 *)&local_258); puVar12 = local_250; for (puVar8 = local_258; puVar8 != puVar12; puVar8 = puVar8 + 5) { if (0xf < puVar8[3]) { operator_delete((void *)*puVar8); } puVar8[3] = 0xf; puVar8[2] = 0; *(undefined1 *)puVar8 = 0; } operator_delete(local_258); } uVar10 = 0; local_258 = (ulonglong *)0x0; local_250 = (ulonglong *)0x0; local_248 = (ulonglong *)0x0; } LAB_14000ef81: if (0xf < local_1f0) { operator_delete((void *)CONCAT71(local_208[0]._1_7_,(undefined1)local_208[0])); uVar10 = extraout_RAX_04; } return uVar10 & 0xffffffffffffff00; }