308 lines
10 KiB
C
308 lines
10 KiB
C
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
|
* Ghidra 12.1.2 decompiler output for 0x1400a9f70 FUN_1400a9f70
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
void FUN_1400a9f70(longlong param_1,undefined8 param_2,wchar_t *param_3,undefined8 param_4)
|
|
|
|
{
|
|
undefined *puVar1;
|
|
longlong ****pppplVar2;
|
|
uint uVar3;
|
|
uint uVar4;
|
|
uint *puVar5;
|
|
int *piVar6;
|
|
int *piVar7;
|
|
__time64_t _Var8;
|
|
longlong *****ppppplVar9;
|
|
longlong *plVar10;
|
|
int *piVar11;
|
|
uint *puVar12;
|
|
longlong *****ppppplVar13;
|
|
uint uVar14;
|
|
ulonglong uVar15;
|
|
longlong ****pppplVar16;
|
|
int *_ArgList;
|
|
uint uVar17;
|
|
longlong *****ppppplVar18;
|
|
undefined8 local_res20;
|
|
undefined1 auStack_918 [32];
|
|
uint **local_8f8;
|
|
uint *local_8e8;
|
|
int local_8e0;
|
|
int local_8dc;
|
|
longlong ****local_8d8;
|
|
undefined1 local_8d0;
|
|
int *local_8c0;
|
|
undefined1 local_8b8;
|
|
int *local_8b0;
|
|
int *local_8a8;
|
|
undefined1 local_8a0;
|
|
uint *local_898;
|
|
int local_890;
|
|
__time64_t local_888;
|
|
undefined8 local_880;
|
|
wchar_t local_878 [1040];
|
|
ulonglong local_58;
|
|
|
|
local_880 = 0xfffffffffffffffe;
|
|
local_58 = DAT_14016f5a0 ^ (ulonglong)auStack_918;
|
|
local_8e0 = (int)param_2;
|
|
local_res20 = param_4;
|
|
FUN_14003e7c0(param_1,param_2,param_3,param_4);
|
|
local_8e8 = (uint *)PTR_DAT_14016f010;
|
|
_ArgList = (int *)&local_res20;
|
|
if (param_3 == (wchar_t *)0x0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_1400050d0(0x80070057);
|
|
}
|
|
uVar3 = vswprintf_s(local_878,0x400,param_3,(va_list)_ArgList);
|
|
ppppplVar18 = (longlong *****)0x0;
|
|
uVar17 = 0;
|
|
ppppplVar9 = ppppplVar18;
|
|
if ((local_8e8 != (uint *)0x0) &&
|
|
(ppppplVar9 = (longlong *****)0x0, local_8e8 != (uint *)PTR_DAT_14016f010)) {
|
|
ppppplVar9 = (longlong *****)(ulonglong)local_8e8[-2];
|
|
}
|
|
uVar4 = uVar3;
|
|
if ((((int)uVar3 <= (int)ppppplVar9) && (uVar4 = uVar17, local_8e8 != (uint *)0x0)) &&
|
|
(local_8e8 != (uint *)PTR_DAT_14016f010)) {
|
|
uVar4 = local_8e8[-2];
|
|
}
|
|
uVar14 = 1;
|
|
if (1 < (int)uVar4) {
|
|
uVar14 = uVar4;
|
|
}
|
|
uVar4 = uVar17;
|
|
if ((local_8e8 != (uint *)0x0) && (local_8e8 != (uint *)PTR_DAT_14016f010)) {
|
|
uVar4 = local_8e8[-2];
|
|
}
|
|
if ((int)uVar4 < (int)uVar14) {
|
|
if (local_8e8 == (uint *)0x0) {
|
|
local_8e8 = (uint *)PTR_DAT_14016f010;
|
|
}
|
|
if ((int)uVar14 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14003dec0();
|
|
}
|
|
if (uVar14 == 0) {
|
|
FUN_140002190((longlong *)&local_8e8,PTR_DAT_14016f010,ppppplVar9,_ArgList);
|
|
}
|
|
else {
|
|
uVar4 = uVar17;
|
|
if ((local_8e8 != (uint *)0x0) && (local_8e8 != (uint *)PTR_DAT_14016f010)) {
|
|
uVar4 = local_8e8[-2];
|
|
}
|
|
if (uVar14 != uVar4) {
|
|
puVar5 = (uint *)FUN_14003e840((longlong)(int)uVar14 * 2 + 10);
|
|
if (puVar5 != (uint *)0x0) {
|
|
*puVar5 = 0;
|
|
puVar5[1] = 1;
|
|
}
|
|
*puVar5 = uVar14;
|
|
uVar4 = uVar17;
|
|
if ((local_8e8 != (uint *)0x0) && (local_8e8 != (uint *)PTR_DAT_14016f010)) {
|
|
uVar4 = local_8e8[-2];
|
|
}
|
|
puVar12 = (uint *)PTR_DAT_14016f010;
|
|
if ((int)uVar14 < (int)uVar4) {
|
|
LAB_1400aa0d6:
|
|
if (local_8e8 != (uint *)0x0) {
|
|
puVar12 = local_8e8;
|
|
}
|
|
}
|
|
else {
|
|
uVar14 = uVar17;
|
|
if (local_8e8 != (uint *)0x0) {
|
|
if (local_8e8 != (uint *)PTR_DAT_14016f010) {
|
|
uVar14 = local_8e8[-2];
|
|
}
|
|
goto LAB_1400aa0d6;
|
|
}
|
|
}
|
|
uVar15 = (ulonglong)uVar14;
|
|
FUN_14003e650(puVar5 + 2,puVar12,uVar14);
|
|
FUN_140002190((longlong *)&local_8e8,puVar12,uVar15,_ArgList);
|
|
local_8e8 = puVar5 + 2;
|
|
}
|
|
}
|
|
}
|
|
FUN_140001df0((longlong *)&local_8e8);
|
|
puVar5 = local_8e8;
|
|
if (local_8e8 == (uint *)0x0) {
|
|
puVar5 = (uint *)PTR_DAT_14016f010;
|
|
}
|
|
pppplVar16 = (longlong ****)(ulonglong)uVar3;
|
|
FUN_14003e650(puVar5,local_878,uVar3);
|
|
puVar5 = local_8e8;
|
|
if (local_8e8 == (uint *)0x0) {
|
|
puVar5 = (uint *)PTR_DAT_14016f010;
|
|
}
|
|
uVar3 = FUN_14003e620((short *)puVar5);
|
|
ppppplVar9 = ppppplVar18;
|
|
if (0 < (int)uVar3) {
|
|
ppppplVar9 = (longlong *****)(ulonglong)uVar3;
|
|
}
|
|
ppppplVar13 = ppppplVar18;
|
|
if ((local_8e8 != (uint *)0x0) &&
|
|
(ppppplVar13 = (longlong *****)0x0, local_8e8 != (uint *)PTR_DAT_14016f010)) {
|
|
ppppplVar13 = (longlong *****)(ulonglong)local_8e8[-2];
|
|
}
|
|
if (((int)ppppplVar13 <= (int)ppppplVar9) && (ppppplVar9 = ppppplVar18, local_8e8 != (uint *)0x0))
|
|
{
|
|
if (local_8e8 == (uint *)PTR_DAT_14016f010) goto LAB_1400aa198;
|
|
ppppplVar9 = (longlong *****)(ulonglong)local_8e8[-2];
|
|
}
|
|
if (((local_8e8 != (uint *)PTR_DAT_14016f010) && (local_8e8 != (uint *)0x0)) &&
|
|
(pppplVar16 = (longlong ****)(local_8e8 + -2), pppplVar16 != (longlong ****)0x0)) {
|
|
*(uint *)pppplVar16 = (uint)ppppplVar9;
|
|
*(undefined2 *)((longlong)local_8e8 + (longlong)(int)(uint)ppppplVar9 * 2) = 0;
|
|
}
|
|
LAB_1400aa198:
|
|
if (*(char *)(param_1 + 0x1790) != '\0') {
|
|
ppppplVar9 = (longlong *****)(param_1 + 0x1818);
|
|
local_8f8 = &local_8e8;
|
|
_ArgList = &local_8e0;
|
|
pppplVar16 = (longlong ****)&DAT_140177f90;
|
|
ppppplVar13 = (longlong *****)0x1;
|
|
(*(code *)(*ppppplVar9)[0x14])();
|
|
}
|
|
if (*(int *)(param_1 + 0x6c8) != 0) {
|
|
plVar10 = (longlong *)(param_1 + 0x78);
|
|
(**(code **)(*plVar10 + 0x10))();
|
|
FUN_14003e7c0(plVar10,ppppplVar13,pppplVar16,_ArgList);
|
|
puVar1 = PTR_DAT_14016f010;
|
|
local_8dc = local_8e0;
|
|
local_890 = local_8e0;
|
|
local_898 = (uint *)PTR_DAT_14016f010;
|
|
puVar5 = (uint *)PTR_DAT_14016f010;
|
|
if (local_8e8 != (uint *)PTR_DAT_14016f010) {
|
|
piVar6 = (int *)FUN_14003e7c0(plVar10,ppppplVar13,pppplVar16,_ArgList);
|
|
piVar11 = piVar6;
|
|
local_8a8 = piVar6;
|
|
FUN_14003d040(piVar6);
|
|
local_8a0 = 1;
|
|
if (((puVar1 != (undefined *)0x0) && (puVar1 != PTR_DAT_14016f010)) &&
|
|
(puVar1 + -8 != (undefined *)0x0)) {
|
|
piVar7 = (int *)FUN_14003e7c0(piVar11,ppppplVar13,pppplVar16,_ArgList);
|
|
local_8c0 = piVar7;
|
|
FUN_14003d040(piVar7);
|
|
local_8b8 = 1;
|
|
piVar11 = (int *)(puVar1 + -4);
|
|
*piVar11 = *piVar11 + -1;
|
|
if (*piVar11 == 0) {
|
|
FUN_14003e8b0(puVar1 + -8);
|
|
}
|
|
FUN_14003d0d0((longlong)piVar7);
|
|
}
|
|
puVar5 = local_8e8;
|
|
local_898 = local_8e8;
|
|
if (((local_8e8 != (uint *)PTR_DAT_14016f010) && (local_8e8 != (uint *)0x0)) &&
|
|
(local_8e8 != (uint *)0x8)) {
|
|
local_8e8[-1] = local_8e8[-1] + 1;
|
|
}
|
|
FUN_14003d0d0((longlong)piVar6);
|
|
}
|
|
_Var8 = _time64((__time64_t *)0x0);
|
|
piVar11 = *(int **)(param_1 + 0x17c0);
|
|
ppppplVar9 = *(longlong ******)(param_1 + 0x17b0);
|
|
local_8c0 = piVar11;
|
|
local_888 = _Var8;
|
|
if (ppppplVar9 == (longlong *****)0x0) {
|
|
ppppplVar9 = (longlong *****)0x28;
|
|
piVar6 = (int *)FUN_14003e840(0x28);
|
|
}
|
|
else {
|
|
pppplVar16 = *ppppplVar9;
|
|
ppppplVar13 = (longlong *****)0x28;
|
|
piVar6 = (int *)(*(code *)pppplVar16[1])();
|
|
}
|
|
local_8b0 = piVar6;
|
|
local_8a8 = piVar6;
|
|
if (piVar6 != (int *)0x0) {
|
|
FUN_14003e7c0(ppppplVar9,ppppplVar13,pppplVar16,_ArgList);
|
|
puVar1 = PTR_DAT_14016f010;
|
|
*(undefined **)(piVar6 + 4) = PTR_DAT_14016f010;
|
|
if (puVar1 == (undefined *)0x0) {
|
|
*(undefined **)(piVar6 + 4) = PTR_DAT_14016f010;
|
|
}
|
|
if (puVar5 != *(uint **)(piVar6 + 4)) {
|
|
ppppplVar9 = (longlong *****)FUN_14003e7c0(ppppplVar9,ppppplVar13,pppplVar16,_ArgList);
|
|
local_8d8 = (longlong ****)ppppplVar9;
|
|
FUN_14003d040((int *)ppppplVar9);
|
|
local_8d0 = 1;
|
|
FUN_140002190((longlong *)(piVar6 + 4),ppppplVar13,pppplVar16,_ArgList);
|
|
*(uint **)(piVar6 + 4) = puVar5;
|
|
if (((puVar5 != (uint *)PTR_DAT_14016f010) && (puVar5 != (uint *)0x0)) &&
|
|
(puVar5 != (uint *)0x8)) {
|
|
puVar5[-1] = puVar5[-1] + 1;
|
|
}
|
|
FUN_14003d0d0((longlong)ppppplVar9);
|
|
piVar11 = local_8c0;
|
|
}
|
|
piVar6[6] = local_8dc;
|
|
*(__time64_t *)(piVar6 + 8) = _Var8;
|
|
}
|
|
*(int **)(piVar6 + 2) = piVar11;
|
|
piVar6[0] = 0;
|
|
piVar6[1] = 0;
|
|
*(longlong *)(param_1 + 0x17c8) = *(longlong *)(param_1 + 0x17c8) + 1;
|
|
if (*(undefined8 **)(param_1 + 0x17c0) == (undefined8 *)0x0) {
|
|
*(int **)(param_1 + 0x17b8) = piVar6;
|
|
}
|
|
else {
|
|
**(undefined8 **)(param_1 + 0x17c0) = piVar6;
|
|
}
|
|
*(int **)(param_1 + 0x17c0) = piVar6;
|
|
if ((ulonglong)*(uint *)(param_1 + 0x6c8) < *(ulonglong *)(param_1 + 0x17c8)) {
|
|
ppppplVar13 = &local_8d8;
|
|
ppppplVar9 = (longlong *****)(param_1 + 0x17b0);
|
|
FUN_1400a9060((longlong *)ppppplVar9,(longlong *)ppppplVar13,pppplVar16,_ArgList);
|
|
pppplVar2 = local_8d8;
|
|
if ((((longlong *****)local_8d8 != (longlong *****)0x0) &&
|
|
(local_8d8 != (longlong ****)PTR_DAT_14016f010)) &&
|
|
(ppppplVar18 = (longlong *****)(local_8d8 + -1), ppppplVar18 != (longlong *****)0x0)) {
|
|
ppppplVar9 = (longlong *****)FUN_14003e7c0(ppppplVar9,ppppplVar13,pppplVar16,_ArgList);
|
|
local_8d8 = (longlong ****)ppppplVar9;
|
|
FUN_14003d040((int *)ppppplVar9);
|
|
local_8d0 = 1;
|
|
piVar11 = (int *)((longlong)pppplVar2 + -4);
|
|
*piVar11 = *piVar11 + -1;
|
|
if (*piVar11 == 0) {
|
|
FUN_14003e8b0(ppppplVar18);
|
|
}
|
|
FUN_14003d0d0((longlong)ppppplVar9);
|
|
}
|
|
}
|
|
if (((puVar5 != (uint *)0x0) && (puVar5 != (uint *)PTR_DAT_14016f010)) &&
|
|
(puVar5 + -2 != (uint *)0x0)) {
|
|
ppppplVar9 = (longlong *****)FUN_14003e7c0(ppppplVar9,ppppplVar13,pppplVar16,_ArgList);
|
|
local_8d8 = (longlong ****)ppppplVar9;
|
|
FUN_14003d040((int *)ppppplVar9);
|
|
local_8d0 = 1;
|
|
puVar12 = puVar5 + -1;
|
|
*puVar12 = *puVar12 - 1;
|
|
if (*puVar12 == 0) {
|
|
FUN_14003e8b0(puVar5 + -2);
|
|
}
|
|
FUN_14003d0d0((longlong)ppppplVar9);
|
|
}
|
|
}
|
|
puVar5 = local_8e8;
|
|
if (((local_8e8 != (uint *)0x0) && (local_8e8 != (uint *)PTR_DAT_14016f010)) &&
|
|
(puVar12 = local_8e8 + -2, puVar12 != (uint *)0x0)) {
|
|
pppplVar16 = (longlong ****)FUN_14003e7c0(ppppplVar9,ppppplVar13,pppplVar16,_ArgList);
|
|
local_8d8 = pppplVar16;
|
|
FUN_14003d040((int *)pppplVar16);
|
|
local_8d0 = 1;
|
|
puVar5 = puVar5 + -1;
|
|
*puVar5 = *puVar5 - 1;
|
|
if (*puVar5 == 0) {
|
|
FUN_14003e8b0(puVar12);
|
|
}
|
|
FUN_14003d0d0((longlong)pppplVar16);
|
|
}
|
|
return;
|
|
}
|
|
|