73 lines
1.9 KiB
C
73 lines
1.9 KiB
C
/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
|
|
* Ghidra 12.1.2 decompiler output for 0x1400d44c0 FUN_1400d44c0
|
|
* Pseudocode, not original source. */
|
|
|
|
undefined8 FUN_1400d44c0(char *param_1,uint param_2,undefined1 *param_3,uint *param_4)
|
|
|
|
{
|
|
undefined8 uVar1;
|
|
undefined1 uVar2;
|
|
uint uVar3;
|
|
byte bVar4;
|
|
uint uVar5;
|
|
ulonglong uVar6;
|
|
uint uVar7;
|
|
byte *pbVar8;
|
|
uint local_res8 [2];
|
|
|
|
if (((param_1 != (char *)0x0) && (param_3 != (undefined1 *)0x0)) && (param_4 != (uint *)0x0)) {
|
|
uVar1 = FUN_1400d1fc0((ulonglong)param_2,(int *)local_res8);
|
|
if ((int)uVar1 == 0) {
|
|
if (*param_4 < local_res8[0]) {
|
|
*param_4 = local_res8[0];
|
|
return 6;
|
|
}
|
|
uVar7 = 0;
|
|
*param_3 = 3;
|
|
uVar5 = 1;
|
|
uVar3 = ((param_2 & 7) != 0) + 1 + (param_2 >> 3);
|
|
uVar2 = (undefined1)uVar3;
|
|
if (uVar3 < 0x80) {
|
|
param_3[1] = uVar2;
|
|
uVar5 = 2;
|
|
}
|
|
else if (uVar3 < 0x100) {
|
|
param_3[1] = 0x81;
|
|
uVar5 = 3;
|
|
param_3[2] = uVar2;
|
|
}
|
|
else if (uVar3 < 0x10000) {
|
|
param_3[1] = 0x82;
|
|
uVar5 = 4;
|
|
param_3[2] = (char)(uVar3 >> 8);
|
|
param_3[3] = uVar2;
|
|
}
|
|
uVar6 = (ulonglong)(uVar5 + 1);
|
|
bVar4 = 0;
|
|
param_3[uVar5] = -(char)param_2 & 7;
|
|
if (param_2 != 0) {
|
|
pbVar8 = param_3 + (int)(uVar5 + 1);
|
|
do {
|
|
bVar4 = bVar4 | (*param_1 != '\0') << (7U - (char)(uVar7 & 7) & 0x1f);
|
|
if ((uVar7 & 7) == 7) {
|
|
*pbVar8 = bVar4;
|
|
pbVar8 = pbVar8 + 1;
|
|
uVar6 = (ulonglong)((int)uVar6 + 1);
|
|
bVar4 = 0;
|
|
}
|
|
uVar7 = uVar7 + 1;
|
|
param_1 = param_1 + 1;
|
|
} while (uVar7 < param_2);
|
|
}
|
|
if ((param_2 & 7) != 0) {
|
|
param_3[uVar6] = bVar4;
|
|
uVar6 = (ulonglong)((int)uVar6 + 1);
|
|
}
|
|
*param_4 = (uint)uVar6;
|
|
uVar1 = 0;
|
|
}
|
|
return uVar1;
|
|
}
|
|
return 0x10;
|
|
}
|
|
|