server-re/decomp/AgentManager_Release_x64/full/functions/0x14000e610.c
2026-10-15 09:58:24 -04:00

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;
}