103 lines
3.7 KiB
C
103 lines
3.7 KiB
C
/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
|
|
* Ghidra 12.1.2 decompiler output for 0x1400d8bbc FUN_1400d8bbc
|
|
* Pseudocode, not original source. */
|
|
|
|
undefined8
|
|
FUN_1400d8bbc(longlong param_1,uint param_2,int param_3,int param_4,int param_5,uint param_6,
|
|
char *param_7,int param_8)
|
|
|
|
{
|
|
uint uVar1;
|
|
int iVar2;
|
|
undefined8 uVar3;
|
|
code *pcVar4;
|
|
longlong *plVar5;
|
|
longlong lVar6;
|
|
int iVar7;
|
|
undefined4 uVar8;
|
|
|
|
uVar8 = 1;
|
|
if (((param_7 == (char *)0x0) || (*param_7 != '1')) || (param_8 != 0x58)) {
|
|
uVar3 = 0xfffffffa;
|
|
}
|
|
else {
|
|
if (param_1 != 0) {
|
|
*(undefined8 *)(param_1 + 0x20) = 0;
|
|
if (*(longlong *)(param_1 + 0x30) == 0) {
|
|
*(undefined8 *)(param_1 + 0x40) = 0;
|
|
*(code **)(param_1 + 0x30) = FUN_1400d8e98;
|
|
}
|
|
pcVar4 = *(code **)(param_1 + 0x38);
|
|
if (pcVar4 == (code *)0x0) {
|
|
pcVar4 = FUN_1400d8eb8;
|
|
}
|
|
*(code **)(param_1 + 0x38) = pcVar4;
|
|
if (param_2 == 0xffffffff) {
|
|
param_2 = 6;
|
|
}
|
|
if (param_4 < 0) {
|
|
param_4 = -param_4;
|
|
uVar8 = 0;
|
|
}
|
|
else if (0xf < param_4) {
|
|
uVar8 = 2;
|
|
param_4 = param_4 + -0x10;
|
|
}
|
|
if (((param_5 - 1U < 9) && (param_3 == 8)) &&
|
|
((param_4 - 8U < 8 && ((param_2 < 10 && (param_6 < 5)))))) {
|
|
if (param_4 == 8) {
|
|
param_4 = 9;
|
|
}
|
|
plVar5 = (longlong *)(**(code **)(param_1 + 0x30))(*(undefined8 *)(param_1 + 0x40),1,0x1718)
|
|
;
|
|
if (plVar5 != (longlong *)0x0) {
|
|
*(longlong **)(param_1 + 0x28) = plVar5;
|
|
*(undefined4 *)((longlong)plVar5 + 0x2c) = uVar8;
|
|
*(int *)(plVar5 + 9) = param_4;
|
|
*plVar5 = param_1;
|
|
plVar5[6] = 0;
|
|
iVar7 = 1 << ((byte)param_4 & 0x1f);
|
|
*(int *)((longlong)plVar5 + 0x44) = iVar7;
|
|
*(int *)(plVar5 + 0xf) = param_5 + 7;
|
|
*(int *)((longlong)plVar5 + 0x4c) = iVar7 + -1;
|
|
iVar2 = 1 << ((byte)(param_5 + 7) & 0x1f);
|
|
*(int *)((longlong)plVar5 + 0x74) = iVar2;
|
|
*(int *)((longlong)plVar5 + 0x7c) = iVar2 + -1;
|
|
*(uint *)(plVar5 + 0x10) = (param_5 + 9U) / 3;
|
|
lVar6 = (**(code **)(param_1 + 0x30))(*(undefined8 *)(param_1 + 0x40),iVar7,2);
|
|
plVar5[10] = lVar6;
|
|
lVar6 = (**(code **)(param_1 + 0x30))
|
|
(*(undefined8 *)(param_1 + 0x40),
|
|
*(undefined4 *)((longlong)plVar5 + 0x44),2);
|
|
plVar5[0xc] = lVar6;
|
|
lVar6 = (**(code **)(param_1 + 0x30))
|
|
(*(undefined8 *)(param_1 + 0x40),
|
|
*(undefined4 *)((longlong)plVar5 + 0x74),2);
|
|
iVar2 = 1 << ((char)param_5 + 6U & 0x1f);
|
|
plVar5[0xd] = lVar6;
|
|
*(int *)(plVar5 + 0x2de) = iVar2;
|
|
lVar6 = (**(code **)(param_1 + 0x30))(*(undefined8 *)(param_1 + 0x40),iVar2,4);
|
|
plVar5[2] = lVar6;
|
|
uVar1 = *(uint *)(plVar5 + 0x2de);
|
|
*(uint *)(plVar5 + 3) = uVar1 << 2;
|
|
if ((((plVar5[10] != 0) && (plVar5[0xc] != 0)) && (plVar5[0xd] != 0)) && (lVar6 != 0)) {
|
|
*(uint *)((longlong)plVar5 + 0xac) = param_2;
|
|
*(uint *)(plVar5 + 0x16) = param_6;
|
|
*(undefined1 *)((longlong)plVar5 + 0x3c) = 8;
|
|
plVar5[0x2df] = lVar6 + (ulonglong)(uVar1 >> 1) * 2;
|
|
plVar5[0x2dd] = lVar6 + (ulonglong)uVar1 * 3;
|
|
uVar3 = FUN_1400d89fc(param_1);
|
|
return uVar3;
|
|
}
|
|
*(undefined4 *)(plVar5 + 1) = 0x29a;
|
|
*(char **)(param_1 + 0x20) = "insufficient memory";
|
|
FUN_1400d772c(param_1);
|
|
}
|
|
return 0xfffffffc;
|
|
}
|
|
}
|
|
uVar3 = 0xfffffffe;
|
|
}
|
|
return uVar3;
|
|
}
|
|
|