204 lines
8.4 KiB
C
204 lines
8.4 KiB
C
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
|
* Ghidra 12.1.2 decompiler output for 0x1400d7730 FUN_1400d7730
|
|
* Pseudocode, not original source. */
|
|
|
|
undefined8 FUN_1400d7730(undefined1 *param_1,int param_2,int param_3,uint *param_4)
|
|
|
|
{
|
|
byte bVar1;
|
|
byte bVar2;
|
|
uint3 uVar3;
|
|
uint uVar4;
|
|
uint *puVar5;
|
|
uint *puVar6;
|
|
uint *puVar7;
|
|
int iVar8;
|
|
uint uVar9;
|
|
uint *puVar10;
|
|
|
|
if ((param_1 == (undefined1 *)0x0) || (param_4 == (uint *)0x0)) {
|
|
return 0x10;
|
|
}
|
|
if (((param_2 != 0x10) && (param_2 != 0x18)) && (param_2 != 0x20)) {
|
|
return 3;
|
|
}
|
|
if ((param_3 != 0) && (param_3 != ((int)(param_2 + (param_2 >> 0x1f & 7U)) >> 3) * 2 + 6)) {
|
|
return 4;
|
|
}
|
|
puVar5 = param_4 + 1;
|
|
param_4[0x78] = ((int)(param_2 + (param_2 >> 0x1f & 7U)) >> 3) * 2 + 6;
|
|
uVar4 = CONCAT31(CONCAT21(CONCAT11(*param_1,param_1[1]),param_1[2]),param_1[3]);
|
|
*param_4 = uVar4;
|
|
*puVar5 = CONCAT31(CONCAT21(CONCAT11(param_1[4],param_1[5]),param_1[6]),param_1[7]);
|
|
param_4[2] = CONCAT31(CONCAT21(CONCAT11(param_1[8],param_1[9]),param_1[10]),param_1[0xb]);
|
|
bVar1 = param_1[0xc];
|
|
uVar3 = CONCAT21(CONCAT11(bVar1,param_1[0xd]),param_1[0xe]);
|
|
bVar2 = param_1[0xf];
|
|
uVar9 = CONCAT31(uVar3,bVar2);
|
|
param_4[3] = uVar9;
|
|
if (param_2 == 0x10) {
|
|
uVar4 = *(uint *)(&DAT_1401274d0 + (ulonglong)bVar1 * 4) ^
|
|
*(uint *)(&DAT_1401280d0 + (ulonglong)((uVar3 & 0xff00) >> 8) * 4) ^
|
|
*(uint *)(&DAT_140127cd0 + (ulonglong)(uVar3 & 0xff) * 4) ^
|
|
*(uint *)(&DAT_1401278d0 + (ulonglong)bVar2 * 4) ^ uVar4 ^ 0x1000000;
|
|
param_4[4] = uVar4;
|
|
uVar4 = uVar4 ^ *puVar5;
|
|
param_4[5] = uVar4;
|
|
uVar4 = uVar4 ^ param_4[2];
|
|
param_4[6] = uVar4;
|
|
param_4[7] = uVar4 ^ uVar9;
|
|
puVar7 = &DAT_14012a0d4;
|
|
do {
|
|
uVar4 = puVar5[6];
|
|
puVar6 = puVar7 + 1;
|
|
uVar4 = *(uint *)(&DAT_1401274d0 + (ulonglong)(uVar4 >> 0x18) * 4) ^
|
|
*(uint *)(&DAT_1401280d0 + (ulonglong)(uVar4 >> 0x10 & 0xff) * 4) ^
|
|
*(uint *)(&DAT_140127cd0 + (ulonglong)(uVar4 >> 8 & 0xff) * 4) ^
|
|
*(uint *)(&DAT_1401278d0 + (ulonglong)(uVar4 & 0xff) * 4) ^ puVar5[3] ^ *puVar7;
|
|
puVar5[7] = uVar4;
|
|
uVar4 = uVar4 ^ puVar5[4];
|
|
puVar5[8] = uVar4;
|
|
uVar4 = puVar5[5] ^ uVar4;
|
|
puVar5[9] = uVar4;
|
|
puVar5[10] = uVar4 ^ puVar5[6];
|
|
puVar7 = puVar6;
|
|
puVar5 = puVar5 + 4;
|
|
} while (puVar6 != (uint *)"sha256");
|
|
}
|
|
else if (param_2 == 0x18) {
|
|
param_4[4] = CONCAT31(CONCAT21(CONCAT11(param_1[0x10],param_1[0x11]),param_1[0x12]),
|
|
param_1[0x13]);
|
|
bVar1 = param_1[0x14];
|
|
uVar3 = CONCAT21(CONCAT11(bVar1,param_1[0x15]),param_1[0x16]);
|
|
bVar2 = param_1[0x17];
|
|
param_4[5] = CONCAT31(uVar3,bVar2);
|
|
uVar4 = *(uint *)(&DAT_1401274d0 + (ulonglong)bVar1 * 4) ^
|
|
*(uint *)(&DAT_1401280d0 + (ulonglong)((uVar3 & 0xff00) >> 8) * 4) ^
|
|
*(uint *)(&DAT_140127cd0 + (ulonglong)(uVar3 & 0xff) * 4) ^
|
|
*(uint *)(&DAT_1401278d0 + (ulonglong)bVar2 * 4) ^ uVar4 ^ 0x1000000;
|
|
param_4[6] = uVar4;
|
|
uVar4 = uVar4 ^ *puVar5;
|
|
param_4[7] = uVar4;
|
|
uVar4 = uVar4 ^ param_4[2];
|
|
param_4[8] = uVar4;
|
|
param_4[9] = uVar4 ^ param_4[3];
|
|
puVar5 = &DAT_14012a0d4;
|
|
puVar7 = param_4 + 10;
|
|
do {
|
|
puVar6 = puVar5 + 1;
|
|
*puVar7 = puVar7[-6] ^ puVar7[-1];
|
|
puVar7[1] = puVar7[-5] ^ puVar7[-6] ^ puVar7[-1];
|
|
uVar4 = param_4[((-0x28 - (longlong)param_4) + (longlong)(puVar7 + 6) >> 2) + 5];
|
|
uVar4 = *(uint *)(&DAT_1401274d0 + (ulonglong)(uVar4 >> 0x18) * 4) ^
|
|
*(uint *)(&DAT_1401280d0 + (ulonglong)(uVar4 >> 0x10 & 0xff) * 4) ^
|
|
*(uint *)(&DAT_140127cd0 + (ulonglong)(uVar4 >> 8 & 0xff) * 4) ^
|
|
*(uint *)(&DAT_1401278d0 + (ulonglong)(uVar4 & 0xff) * 4) ^ puVar7[-4] ^ *puVar5;
|
|
puVar7[2] = uVar4;
|
|
uVar4 = puVar7[-3] ^ uVar4;
|
|
puVar7[3] = uVar4;
|
|
uVar4 = puVar7[-2] ^ uVar4;
|
|
puVar7[4] = uVar4;
|
|
puVar7[5] = puVar7[-1] ^ uVar4;
|
|
puVar5 = puVar6;
|
|
puVar7 = puVar7 + 6;
|
|
} while (puVar6 != (uint *)&DAT_14012a0f0);
|
|
}
|
|
else {
|
|
if (param_2 != 0x20) {
|
|
return 1;
|
|
}
|
|
param_4[4] = CONCAT31(CONCAT21(CONCAT11(param_1[0x10],param_1[0x11]),param_1[0x12]),
|
|
param_1[0x13]);
|
|
param_4[5] = CONCAT31(CONCAT21(CONCAT11(param_1[0x14],param_1[0x15]),param_1[0x16]),
|
|
param_1[0x17]);
|
|
param_4[6] = CONCAT31(CONCAT21(CONCAT11(param_1[0x18],param_1[0x19]),param_1[0x1a]),
|
|
param_1[0x1b]);
|
|
bVar1 = param_1[0x1c];
|
|
uVar3 = CONCAT21(CONCAT11(bVar1,param_1[0x1d]),param_1[0x1e]);
|
|
bVar2 = param_1[0x1f];
|
|
param_4[7] = CONCAT31(uVar3,bVar2);
|
|
uVar4 = *(uint *)(&DAT_1401274d0 + (ulonglong)bVar1 * 4) ^
|
|
*(uint *)(&DAT_1401280d0 + (ulonglong)((uVar3 & 0xff00) >> 8) * 4) ^
|
|
*(uint *)(&DAT_140127cd0 + (ulonglong)(uVar3 & 0xff) * 4) ^
|
|
*(uint *)(&DAT_1401278d0 + (ulonglong)bVar2 * 4) ^ uVar4 ^ 0x1000000;
|
|
param_4[8] = uVar4;
|
|
uVar4 = uVar4 ^ *puVar5;
|
|
param_4[9] = uVar4;
|
|
uVar4 = uVar4 ^ param_4[2];
|
|
param_4[10] = uVar4;
|
|
param_4[0xb] = uVar4 ^ param_4[3];
|
|
puVar5 = &DAT_14012a0d4;
|
|
puVar7 = param_4 + 0xc;
|
|
do {
|
|
uVar4 = puVar7[-1];
|
|
puVar6 = puVar5 + 1;
|
|
uVar9 = *(uint *)(&DAT_1401274d0 + (ulonglong)(uVar4 & 0xff) * 4) ^
|
|
*(uint *)(&DAT_1401280d0 + (ulonglong)(uVar4 >> 0x18) * 4) ^
|
|
*(uint *)(&DAT_140127cd0 + (ulonglong)((uVar4 >> 8 & 0xff00) >> 8) * 4) ^
|
|
*(uint *)(&DAT_1401278d0 + (ulonglong)(uVar4 >> 8 & 0xff) * 4) ^ puVar7[-8];
|
|
uVar4 = puVar7[-7] ^ uVar9;
|
|
*puVar7 = uVar9;
|
|
puVar7[1] = uVar4;
|
|
uVar4 = puVar7[-6] ^ uVar4;
|
|
puVar7[2] = uVar4;
|
|
puVar7[3] = puVar7[-5] ^ uVar4;
|
|
uVar4 = param_4[((-0x30 - (longlong)param_4) + (longlong)(puVar7 + 8) >> 2) + 7];
|
|
uVar4 = *(uint *)(&DAT_1401274d0 + (ulonglong)(uVar4 >> 0x18) * 4) ^
|
|
*(uint *)(&DAT_1401280d0 + (ulonglong)(uVar4 >> 0x10 & 0xff) * 4) ^
|
|
*(uint *)(&DAT_140127cd0 + (ulonglong)(uVar4 >> 8 & 0xff) * 4) ^
|
|
*(uint *)(&DAT_1401278d0 + (ulonglong)(uVar4 & 0xff) * 4) ^ puVar7[-4] ^ *puVar5;
|
|
puVar7[4] = uVar4;
|
|
uVar4 = puVar7[-3] ^ uVar4;
|
|
puVar7[5] = uVar4;
|
|
uVar4 = puVar7[-2] ^ uVar4;
|
|
puVar7[6] = uVar4;
|
|
puVar7[7] = puVar7[-1] ^ uVar4;
|
|
puVar5 = puVar6;
|
|
puVar7 = puVar7 + 8;
|
|
} while (puVar6 != (uint *)&DAT_14012a0ec);
|
|
}
|
|
iVar8 = 1;
|
|
puVar5 = param_4 + 0x3c;
|
|
puVar7 = param_4 + (longlong)(param_2 + 0x1c) + -4;
|
|
param_4[0x3c] = param_4[(longlong)(param_2 + 0x1c) + -4];
|
|
param_4[0x3d] = puVar7[1];
|
|
param_4[0x3e] = puVar7[2];
|
|
param_4[0x3f] = puVar7[3];
|
|
puVar6 = puVar7;
|
|
puVar10 = puVar5;
|
|
if (1 < (int)param_4[0x78]) {
|
|
do {
|
|
uVar4 = puVar6[-4];
|
|
puVar7 = puVar6 + -4;
|
|
puVar5 = puVar10 + 4;
|
|
iVar8 = iVar8 + 1;
|
|
*puVar5 = *(uint *)(&DAT_1401290d0 + (ulonglong)(uVar4 >> 0x18) * 4) ^
|
|
*(uint *)(&DAT_1401294d0 + (ulonglong)(uVar4 >> 0x10 & 0xff) * 4) ^
|
|
*(uint *)(&DAT_1401298d0 + (ulonglong)(uVar4 >> 8 & 0xff) * 4) ^
|
|
*(uint *)(&DAT_140129cd0 + (ulonglong)(uVar4 & 0xff) * 4);
|
|
uVar4 = puVar6[-3];
|
|
puVar10[5] = *(uint *)(&DAT_1401290d0 + (ulonglong)(uVar4 >> 0x18) * 4) ^
|
|
*(uint *)(&DAT_1401294d0 + (ulonglong)(uVar4 >> 0x10 & 0xff) * 4) ^
|
|
*(uint *)(&DAT_1401298d0 + (ulonglong)(uVar4 >> 8 & 0xff) * 4) ^
|
|
*(uint *)(&DAT_140129cd0 + (ulonglong)(uVar4 & 0xff) * 4);
|
|
uVar4 = puVar6[-2];
|
|
puVar10[6] = *(uint *)(&DAT_1401290d0 + (ulonglong)(uVar4 >> 0x18) * 4) ^
|
|
*(uint *)(&DAT_1401294d0 + (ulonglong)(uVar4 >> 0x10 & 0xff) * 4) ^
|
|
*(uint *)(&DAT_1401298d0 + (ulonglong)(uVar4 >> 8 & 0xff) * 4) ^
|
|
*(uint *)(&DAT_140129cd0 + (ulonglong)(uVar4 & 0xff) * 4);
|
|
uVar4 = puVar6[-1];
|
|
puVar10[7] = *(uint *)(&DAT_1401290d0 + (ulonglong)(uVar4 >> 0x18) * 4) ^
|
|
*(uint *)(&DAT_1401294d0 + (ulonglong)(uVar4 >> 0x10 & 0xff) * 4) ^
|
|
*(uint *)(&DAT_1401298d0 + (ulonglong)(uVar4 >> 8 & 0xff) * 4) ^
|
|
*(uint *)(&DAT_140129cd0 + (ulonglong)(uVar4 & 0xff) * 4);
|
|
puVar6 = puVar7;
|
|
puVar10 = puVar5;
|
|
} while (iVar8 < (int)param_4[0x78]);
|
|
}
|
|
puVar5[4] = puVar7[-4];
|
|
puVar5[5] = puVar7[-3];
|
|
puVar5[6] = puVar7[-2];
|
|
puVar5[7] = puVar7[-1];
|
|
return 0;
|
|
}
|
|
|