486 lines
16 KiB
C
486 lines
16 KiB
C
/* 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;
|
|
}
|
|
|