143 lines
4 KiB
C
143 lines
4 KiB
C
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
|
* Ghidra 12.1.2 decompiler output for 0x1400b9530 FUN_1400b9530
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
ulonglong FUN_1400b9530(char *param_1,uint param_2,undefined4 *param_3)
|
|
|
|
{
|
|
ulonglong uVar1;
|
|
byte *_Memory;
|
|
byte bVar2;
|
|
int iVar3;
|
|
uint uVar4;
|
|
uint uVar5;
|
|
byte *pbVar6;
|
|
byte *pbVar7;
|
|
undefined1 auStackY_2a8 [32];
|
|
undefined8 local_1a0;
|
|
undefined4 *local_198;
|
|
longlong *local_190;
|
|
undefined4 *local_188;
|
|
undefined4 *local_180;
|
|
undefined4 *local_178;
|
|
undefined4 local_168 [2];
|
|
undefined4 *local_160;
|
|
undefined8 local_158;
|
|
undefined4 local_130;
|
|
byte *local_128;
|
|
undefined8 local_120;
|
|
undefined4 local_f8 [2];
|
|
undefined1 *local_f0;
|
|
undefined8 local_e8;
|
|
undefined4 local_c0;
|
|
undefined8 local_b8;
|
|
undefined8 local_b0;
|
|
undefined1 local_88 [64];
|
|
ulonglong local_48;
|
|
|
|
local_48 = DAT_14016f5a0 ^ (ulonglong)auStackY_2a8;
|
|
if (((param_1 == (char *)0x0) || (param_3 == (undefined4 *)0x0)) || (DAT_14017d480 == 0)) {
|
|
uVar1 = 0x10;
|
|
}
|
|
else {
|
|
local_180 = param_3 + 8;
|
|
local_188 = param_3 + 0xc;
|
|
local_198 = param_3 + 0xe;
|
|
local_190 = (longlong *)(param_3 + 4);
|
|
local_178 = param_3 + 0x10;
|
|
uVar1 = FUN_1400da7f0((undefined8 *)(param_3 + 2));
|
|
if ((int)uVar1 == 0) {
|
|
_Memory = calloc(1,0x8000);
|
|
if (_Memory == (byte *)0x0) {
|
|
uVar4 = 0xd;
|
|
}
|
|
else {
|
|
local_f0 = local_88;
|
|
local_b8 = 0;
|
|
local_b0 = 0;
|
|
local_160 = local_f8;
|
|
local_f8[0] = 7;
|
|
local_e8 = 0x10;
|
|
local_c0 = 6;
|
|
local_168[0] = 0xd;
|
|
local_158 = 2;
|
|
local_130 = 4;
|
|
local_120 = 0x8000;
|
|
local_128 = _Memory;
|
|
uVar1 = FUN_1400daa10(param_1,param_2,(longlong)local_168,2,1);
|
|
if ((int)uVar1 == 0) {
|
|
uVar5 = 0;
|
|
iVar3 = 0;
|
|
bVar2 = 0;
|
|
uVar4 = 0;
|
|
pbVar6 = _Memory;
|
|
pbVar7 = _Memory;
|
|
if ((uint)local_120 != 0) {
|
|
do {
|
|
iVar3 = iVar3 + 1;
|
|
bVar2 = bVar2 * '\x02' | *pbVar6;
|
|
if (iVar3 == 8) {
|
|
*pbVar7 = bVar2;
|
|
pbVar7 = pbVar7 + 1;
|
|
bVar2 = 0;
|
|
uVar4 = uVar4 + 1;
|
|
iVar3 = 0;
|
|
}
|
|
uVar5 = uVar5 + 1;
|
|
pbVar6 = pbVar6 + 1;
|
|
} while (uVar5 < (uint)local_120);
|
|
}
|
|
uVar1 = FUN_1400da8d0((char *)_Memory,uVar4,2,1,*(undefined8 *)(param_3 + 6));
|
|
uVar4 = (uint)uVar1;
|
|
if (uVar4 == 0) {
|
|
free(_Memory);
|
|
*param_3 = 0;
|
|
return 0;
|
|
}
|
|
free(_Memory);
|
|
}
|
|
else {
|
|
free(_Memory);
|
|
uVar1 = FUN_1400da8d0(param_1,param_2,2,1,*(undefined8 *)(param_3 + 6));
|
|
uVar4 = (uint)uVar1;
|
|
if (uVar4 == 0) {
|
|
iVar3 = (*DAT_14017d4e0)(*(undefined8 *)(param_3 + 6),0);
|
|
if (iVar3 == 0) {
|
|
uVar4 = (*DAT_14017d490)(&local_1a0);
|
|
if (uVar4 == 0) {
|
|
uVar1 = FUN_1400da8d0(param_1,param_2,2,1,local_1a0);
|
|
uVar4 = (uint)uVar1;
|
|
if (uVar4 == 0) {
|
|
(*DAT_14017d4a0)(local_1a0);
|
|
*param_3 = 1;
|
|
return 0;
|
|
}
|
|
(*DAT_14017d4a0)();
|
|
}
|
|
}
|
|
else {
|
|
iVar3 = (*DAT_14017d4e0)(*(undefined8 *)(param_3 + 6),1);
|
|
if (iVar3 == 0) {
|
|
uVar4 = 0x12;
|
|
}
|
|
else {
|
|
uVar1 = FUN_1400da8d0(param_1,param_2,2,1,*(undefined8 *)(param_3 + 6));
|
|
uVar4 = (uint)uVar1;
|
|
if (uVar4 == 0) {
|
|
*param_3 = 0;
|
|
return uVar1;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
FUN_1400da880(*local_190);
|
|
uVar1 = (ulonglong)uVar4;
|
|
}
|
|
}
|
|
return uVar1;
|
|
}
|
|
|