264 lines
9.4 KiB
C
264 lines
9.4 KiB
C
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
|
* Ghidra 12.1.2 decompiler output for 0x14001f920 FUN_14001f920
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Type propagation algorithm not settling */
|
|
|
|
ulonglong FUN_14001f920(longlong *param_1,FILE *param_2)
|
|
|
|
{
|
|
char cVar1;
|
|
ulonglong uVar2;
|
|
ulonglong uVar3;
|
|
undefined1 auVar4 [16];
|
|
undefined1 auVar5 [16];
|
|
undefined1 auVar6 [16];
|
|
ulonglong *puVar7;
|
|
long lVar8;
|
|
int iVar9;
|
|
longlong *in_RAX;
|
|
undefined4 extraout_var;
|
|
char *pcVar10;
|
|
size_t sVar11;
|
|
longlong *extraout_RAX;
|
|
longlong *extraout_RAX_00;
|
|
__uint64 _Var12;
|
|
ulonglong *puVar13;
|
|
ulonglong *puVar14;
|
|
longlong *extraout_RAX_01;
|
|
ulonglong uVar15;
|
|
ulonglong uVar16;
|
|
char *pcVar17;
|
|
char *_Src;
|
|
char *pcVar18;
|
|
ulonglong *local_res10;
|
|
ulonglong *local_res18;
|
|
ulonglong *local_res20;
|
|
ulonglong *local_a8;
|
|
ulonglong *local_88;
|
|
ulonglong *local_80;
|
|
ulonglong *local_78;
|
|
ulonglong *local_70;
|
|
ulonglong *local_68;
|
|
ulonglong *local_60;
|
|
ulonglong *local_58;
|
|
ulonglong *local_50;
|
|
|
|
if (param_2 == (FILE *)0x0) {
|
|
if ((char)param_1[0xb] != '\0') goto LAB_14001f98a;
|
|
*(undefined1 *)(param_1 + 0xb) = 1;
|
|
*(undefined4 *)((longlong)param_1 + 0x5c) = 2;
|
|
pcVar10 = PTR_s_Failed_to_open_file_140174c40;
|
|
}
|
|
else {
|
|
FUN_14001eca0((longlong)param_1);
|
|
param_1[1] = -1;
|
|
fseek(param_2,0,2);
|
|
lVar8 = ftell(param_2);
|
|
uVar15 = (ulonglong)lVar8;
|
|
iVar9 = fseek(param_2,0,0);
|
|
in_RAX = (longlong *)CONCAT44(extraout_var,iVar9);
|
|
if (0 < lVar8) {
|
|
local_88 = &DAT_14017ce88;
|
|
if (DAT_14017ce90 < uVar15) {
|
|
FUN_14001e1f0((longlong *)&local_88,uVar15);
|
|
}
|
|
puVar14 = local_88;
|
|
pcVar10 = operator_new((longlong)(lVar8 + 1));
|
|
*pcVar10 = '\0';
|
|
sVar11 = fread(pcVar10,uVar15,1,param_2);
|
|
if (sVar11 == 1) {
|
|
pcVar10[uVar15] = '\0';
|
|
pcVar18 = pcVar10;
|
|
_Src = pcVar10;
|
|
if (*pcVar10 != '\0') {
|
|
local_res18 = local_70;
|
|
local_res20 = local_60;
|
|
local_a8 = local_50;
|
|
pcVar17 = pcVar10;
|
|
do {
|
|
puVar13 = &DAT_14017ce88;
|
|
if (*pcVar17 == '\n') {
|
|
pcVar18 = pcVar17 + (1 - (longlong)_Src) + *puVar14;
|
|
puVar7 = puVar14;
|
|
if (((char *)puVar14[1] < pcVar18) &&
|
|
(uVar15 = puVar14[1] + (longlong)pcVar18, puVar14[1] < uVar15)) {
|
|
local_78 = &DAT_14017ce88;
|
|
local_res10 = (ulonglong *)*puVar14;
|
|
if (uVar15 != 0) {
|
|
auVar4._8_8_ = 0;
|
|
auVar4._0_8_ = uVar15 + 0x1b >> 2;
|
|
_Var12 = SUB168(ZEXT816(4) * auVar4,0);
|
|
if (SUB168(ZEXT816(4) * auVar4,8) != 0) {
|
|
_Var12 = 0xffffffffffffffff;
|
|
}
|
|
puVar13 = operator_new(_Var12);
|
|
*puVar13 = (ulonglong)local_res10;
|
|
*(undefined1 *)((longlong)(puVar13 + 2) + (longlong)local_res10) = 0;
|
|
puVar13[1] = uVar15;
|
|
local_res18 = puVar13;
|
|
}
|
|
memcpy(puVar13 + 2,puVar14 + 2,*puVar14);
|
|
local_70 = local_80;
|
|
local_80 = local_res18;
|
|
local_res18 = local_70;
|
|
puVar7 = puVar13;
|
|
local_88 = puVar13;
|
|
local_78 = puVar14;
|
|
if (puVar14 != &DAT_14017ce88) {
|
|
operator_delete__(local_70);
|
|
}
|
|
}
|
|
puVar14 = puVar7;
|
|
memmove((void *)(*puVar14 + 0x10 + (longlong)puVar14),_Src,
|
|
(size_t)(pcVar17 + (1 - (longlong)_Src)));
|
|
*puVar14 = (ulonglong)pcVar18;
|
|
*(char *)((longlong)puVar14 + (longlong)(pcVar18 + 0x10)) = '\0';
|
|
pcVar18 = pcVar17 + 1;
|
|
_Src = pcVar18;
|
|
}
|
|
else if (*pcVar17 == '\r') {
|
|
sVar11 = (longlong)pcVar17 - (longlong)_Src;
|
|
puVar13 = puVar14;
|
|
if (0 < (longlong)sVar11) {
|
|
uVar15 = sVar11 + *puVar14;
|
|
if ((puVar14[1] < uVar15) && (uVar16 = puVar14[1] + uVar15, puVar14[1] < uVar16)) {
|
|
local_68 = &DAT_14017ce88;
|
|
uVar2 = *puVar14;
|
|
if (uVar16 == 0) {
|
|
local_res10 = &DAT_14017ce88;
|
|
}
|
|
else {
|
|
auVar5._8_8_ = 0;
|
|
auVar5._0_8_ = uVar16 + 0x1b >> 2;
|
|
_Var12 = SUB168(ZEXT816(4) * auVar5,0);
|
|
if (SUB168(ZEXT816(4) * auVar5,8) != 0) {
|
|
_Var12 = 0xffffffffffffffff;
|
|
}
|
|
local_res10 = operator_new(_Var12);
|
|
*local_res10 = uVar2;
|
|
*(undefined1 *)((longlong)local_res10 + uVar2 + 0x10) = 0;
|
|
local_res10[1] = uVar16;
|
|
local_res20 = local_res10;
|
|
}
|
|
memcpy(local_res10 + 2,puVar14 + 2,*puVar14);
|
|
local_60 = local_80;
|
|
puVar13 = local_res10;
|
|
local_88 = local_res10;
|
|
local_80 = local_res20;
|
|
local_res20 = local_60;
|
|
local_68 = puVar14;
|
|
if (puVar14 != &DAT_14017ce88) {
|
|
operator_delete__(local_60);
|
|
}
|
|
}
|
|
memmove((void *)(*puVar13 + 0x10 + (longlong)puVar13),_Src,sVar11);
|
|
*puVar13 = uVar15;
|
|
*(undefined1 *)(uVar15 + 0x10 + (longlong)puVar13) = 0;
|
|
}
|
|
local_res10 = (ulonglong *)CONCAT71(local_res10._1_7_,10);
|
|
uVar15 = *puVar13;
|
|
uVar16 = uVar15 + 1;
|
|
puVar14 = puVar13;
|
|
if ((puVar13[1] < uVar16) && (uVar2 = puVar13[1] + uVar16, puVar13[1] < uVar2)) {
|
|
local_58 = &DAT_14017ce88;
|
|
uVar3 = *puVar13;
|
|
if (uVar2 == 0) {
|
|
puVar14 = &DAT_14017ce88;
|
|
}
|
|
else {
|
|
auVar6._8_8_ = 0;
|
|
auVar6._0_8_ = uVar2 + 0x1b >> 2;
|
|
_Var12 = SUB168(ZEXT816(4) * auVar6,0);
|
|
if (SUB168(ZEXT816(4) * auVar6,8) != 0) {
|
|
_Var12 = 0xffffffffffffffff;
|
|
}
|
|
puVar14 = operator_new(_Var12);
|
|
*puVar14 = uVar3;
|
|
*(undefined1 *)((longlong)puVar14 + uVar3 + 0x10) = 0;
|
|
puVar14[1] = uVar2;
|
|
local_a8 = puVar14;
|
|
}
|
|
memcpy(puVar14 + 2,puVar13 + 2,*puVar13);
|
|
local_50 = local_80;
|
|
local_80 = local_a8;
|
|
local_a8 = local_50;
|
|
local_88 = puVar14;
|
|
local_58 = puVar13;
|
|
if (puVar13 != &DAT_14017ce88) {
|
|
operator_delete__(local_50);
|
|
}
|
|
}
|
|
memmove((void *)(*puVar14 + 0x10 + (longlong)puVar14),&local_res10,1);
|
|
*puVar14 = uVar16;
|
|
*(undefined1 *)(uVar15 + 0x11 + (longlong)puVar14) = 0;
|
|
pcVar18 = pcVar17 + 1;
|
|
_Src = pcVar18;
|
|
if (*pcVar18 == '\n') {
|
|
pcVar18 = pcVar17 + 2;
|
|
_Src = pcVar18;
|
|
}
|
|
}
|
|
else {
|
|
pcVar18 = pcVar17 + 1;
|
|
}
|
|
pcVar17 = pcVar18;
|
|
} while (*pcVar18 != '\0');
|
|
}
|
|
if ((longlong)pcVar18 - (longlong)_Src != 0) {
|
|
FUN_14001e3c0((longlong *)&local_88,_Src,(longlong)pcVar18 - (longlong)_Src);
|
|
puVar14 = local_88;
|
|
}
|
|
operator_delete(pcVar10);
|
|
in_RAX = (longlong *)(**(code **)(*param_1 + 0x10))(param_1,puVar14 + 2,0,0);
|
|
if ((char)param_1[0xb] == '\0') {
|
|
if (puVar14 != &DAT_14017ce88) {
|
|
operator_delete__(local_80);
|
|
in_RAX = extraout_RAX_01;
|
|
}
|
|
return CONCAT71((int7)((ulonglong)in_RAX >> 8),1);
|
|
}
|
|
}
|
|
else {
|
|
operator_delete(pcVar10);
|
|
in_RAX = extraout_RAX;
|
|
if ((char)param_1[0xb] == '\0') {
|
|
*(undefined1 *)(param_1 + 0xb) = 1;
|
|
*(undefined4 *)((longlong)param_1 + 0x5c) = 2;
|
|
uVar15 = 0xffffffffffffffff;
|
|
pcVar10 = PTR_s_Failed_to_open_file_140174c40;
|
|
do {
|
|
if (uVar15 == 0) break;
|
|
uVar15 = uVar15 - 1;
|
|
cVar1 = *pcVar10;
|
|
pcVar10 = pcVar10 + 1;
|
|
} while (cVar1 != '\0');
|
|
in_RAX = FUN_14001e2c0(param_1 + 0xc,PTR_s_Failed_to_open_file_140174c40,~uVar15 - 1);
|
|
*(undefined8 *)((longlong)param_1 + 0x74) = 0xffffffffffffffff;
|
|
}
|
|
}
|
|
if (puVar14 != &DAT_14017ce88) {
|
|
operator_delete__(local_80);
|
|
in_RAX = extraout_RAX_00;
|
|
}
|
|
goto LAB_14001f98a;
|
|
}
|
|
if ((char)param_1[0xb] != '\0') goto LAB_14001f98a;
|
|
*(undefined1 *)(param_1 + 0xb) = 1;
|
|
*(undefined4 *)((longlong)param_1 + 0x5c) = 0xd;
|
|
pcVar10 = PTR_s_Error_document_empty__140174c98;
|
|
}
|
|
uVar15 = 0xffffffffffffffff;
|
|
pcVar18 = pcVar10;
|
|
do {
|
|
if (uVar15 == 0) break;
|
|
uVar15 = uVar15 - 1;
|
|
cVar1 = *pcVar18;
|
|
pcVar18 = pcVar18 + 1;
|
|
} while (cVar1 != '\0');
|
|
in_RAX = FUN_14001e2c0(param_1 + 0xc,pcVar10,~uVar15 - 1);
|
|
*(undefined8 *)((longlong)param_1 + 0x74) = 0xffffffffffffffff;
|
|
LAB_14001f98a:
|
|
return (ulonglong)in_RAX & 0xffffffffffffff00;
|
|
}
|
|
|