128 lines
3.4 KiB
C
128 lines
3.4 KiB
C
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
|
* Ghidra 12.1.2 decompiler output for 0x1400e5460 FUN_1400e5460
|
|
* Pseudocode, not original source. */
|
|
|
|
ulonglong FUN_1400e5460(longlong param_1,undefined1 *param_2,uint *param_3)
|
|
|
|
{
|
|
bool bVar1;
|
|
undefined1 uVar2;
|
|
int iVar3;
|
|
uint uVar4;
|
|
int iVar5;
|
|
ulonglong uVar6;
|
|
undefined1 uVar7;
|
|
int iVar8;
|
|
undefined1 *puVar9;
|
|
uint local_res8 [2];
|
|
undefined8 local_res20;
|
|
|
|
if (((param_1 == 0) || (param_2 == (undefined1 *)0x0)) || (param_3 == (uint *)0x0)) {
|
|
return 0x10;
|
|
}
|
|
uVar6 = FUN_1400e2f30(param_1,(int *)local_res8);
|
|
if ((int)uVar6 == 0) {
|
|
if (*param_3 < local_res8[0]) {
|
|
*param_3 = local_res8[0];
|
|
return 6;
|
|
}
|
|
iVar3 = (*DAT_14017d4e0)(param_1,0);
|
|
if (iVar3 == -1) {
|
|
uVar4 = (*DAT_14017d4e8)(param_1);
|
|
uVar4 = (uVar4 - (uVar4 & 7)) + 8 >> 3;
|
|
iVar3 = (*DAT_14017d4f0)(param_1);
|
|
iVar5 = (*DAT_14017d4e8)(param_1);
|
|
bVar1 = false;
|
|
if ((iVar3 + 1 == iVar5) &&
|
|
(uVar6 = (*DAT_14017d4e8)(param_1), bVar1 = false, (uVar6 & 7) == 0)) {
|
|
uVar4 = uVar4 - 1;
|
|
}
|
|
}
|
|
else {
|
|
uVar6 = (*DAT_14017d4e8)();
|
|
if (((uVar6 & 7) == 0) || (iVar3 = (*DAT_14017d4e0)(param_1,0), iVar3 == 0)) {
|
|
iVar3 = (*DAT_14017d510)(param_1);
|
|
uVar4 = iVar3 + 1;
|
|
bVar1 = true;
|
|
}
|
|
else {
|
|
uVar4 = (*DAT_14017d510)(param_1);
|
|
bVar1 = false;
|
|
}
|
|
}
|
|
*param_2 = 2;
|
|
uVar7 = (undefined1)uVar4;
|
|
if (uVar4 < 0x80) {
|
|
param_2[1] = uVar7;
|
|
puVar9 = param_2 + 2;
|
|
}
|
|
else if (uVar4 < 0x100) {
|
|
param_2[1] = 0x81;
|
|
param_2[2] = uVar7;
|
|
puVar9 = param_2 + 3;
|
|
}
|
|
else {
|
|
uVar2 = (undefined1)(uVar4 >> 8);
|
|
if (uVar4 < 0x10000) {
|
|
param_2[1] = 0x82;
|
|
puVar9 = param_2 + 4;
|
|
param_2[2] = uVar2;
|
|
param_2[3] = uVar7;
|
|
}
|
|
else {
|
|
if (0xffffff < uVar4) {
|
|
return 0x10;
|
|
}
|
|
param_2[1] = 0x83;
|
|
param_2[2] = (char)(uVar4 >> 0x10);
|
|
puVar9 = param_2 + 5;
|
|
param_2[3] = uVar2;
|
|
param_2[4] = uVar7;
|
|
}
|
|
}
|
|
if (bVar1) {
|
|
*puVar9 = 0;
|
|
puVar9 = puVar9 + 1;
|
|
}
|
|
iVar3 = (*DAT_14017d4e0)(param_1,0);
|
|
if (iVar3 == 1) {
|
|
uVar6 = (*DAT_14017d518)(param_1,puVar9);
|
|
if ((int)uVar6 != 0) {
|
|
return uVar6;
|
|
}
|
|
}
|
|
else {
|
|
iVar3 = (*DAT_14017d4e0)(param_1,0);
|
|
if (iVar3 != 0) {
|
|
iVar3 = (*DAT_14017d490)(&local_res20);
|
|
if (iVar3 == 0) {
|
|
uVar4 = (*DAT_14017d4e8)(param_1);
|
|
iVar8 = (8 - (uVar4 & 7)) + uVar4;
|
|
iVar3 = (*DAT_14017d4f0)(param_1);
|
|
iVar5 = (*DAT_14017d4e8)(param_1);
|
|
if ((iVar3 + 1 == iVar5) && (uVar6 = (*DAT_14017d4e8)(param_1), (uVar6 & 7) == 0)) {
|
|
iVar8 = iVar8 + -8;
|
|
}
|
|
iVar3 = (*DAT_14017d4f8)(local_res20,iVar8);
|
|
if ((iVar3 == 0) &&
|
|
(iVar3 = (*DAT_14017d528)(local_res20,param_1,local_res20), iVar3 == 0)) {
|
|
uVar4 = (*DAT_14017d518)(local_res20,puVar9);
|
|
if (uVar4 != 0) {
|
|
(*DAT_14017d4a0)();
|
|
return (ulonglong)uVar4;
|
|
}
|
|
(*DAT_14017d4a0)(local_res20);
|
|
*param_3 = local_res8[0];
|
|
return 0;
|
|
}
|
|
(*DAT_14017d4a0)(local_res20);
|
|
}
|
|
return 0xd;
|
|
}
|
|
}
|
|
*param_3 = local_res8[0];
|
|
uVar6 = 0;
|
|
}
|
|
return uVar6;
|
|
}
|
|
|