96 lines
2.7 KiB
C
96 lines
2.7 KiB
C
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
|
* Ghidra 12.1.2 decompiler output for 0x1400e58a0 FUN_1400e58a0
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
|
|
undefined8 FUN_1400e58a0(int *param_1,int *param_2,int *param_3,int param_4)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
int iVar3;
|
|
longlong lVar4;
|
|
longlong lVar5;
|
|
uint uVar6;
|
|
uint uVar7;
|
|
undefined8 uVar8;
|
|
int iVar9;
|
|
ulonglong uVar10;
|
|
longlong lVar11;
|
|
void *_Dst;
|
|
int iVar12;
|
|
uint *puVar13;
|
|
uint *puVar14;
|
|
ulonglong uVar15;
|
|
longlong lVar16;
|
|
longlong lVar17;
|
|
undefined1 auStack_888 [40];
|
|
undefined8 local_860;
|
|
undefined1 auStack_858 [2048];
|
|
ulonglong local_58;
|
|
|
|
local_58 = DAT_14016f5a0 ^ (ulonglong)auStack_888;
|
|
lVar17 = (longlong)param_4;
|
|
local_860 = param_3;
|
|
if ((*param_2 + *param_1 <= param_3[1]) ||
|
|
(uVar8 = FUN_1400ddb60((longlong)param_3,*param_2 + *param_1), (int)uVar8 == 0)) {
|
|
iVar3 = *param_1;
|
|
iVar2 = iVar3 + *param_2;
|
|
uVar15 = 0;
|
|
lVar11 = (longlong)iVar2;
|
|
if (lVar17 < lVar11) {
|
|
lVar4 = *(longlong *)(param_1 + 4);
|
|
lVar5 = *(longlong *)(param_2 + 4);
|
|
iVar1 = *param_2 + -1;
|
|
lVar16 = lVar17;
|
|
iVar12 = param_4;
|
|
do {
|
|
iVar9 = iVar12;
|
|
if (iVar1 < iVar12) {
|
|
iVar9 = iVar1;
|
|
}
|
|
puVar13 = (uint *)(lVar4 + (longlong)(iVar12 - iVar9) * 4);
|
|
puVar14 = (uint *)(lVar5 + (longlong)iVar9 * 4);
|
|
uVar6 = iVar3 - (iVar12 - iVar9);
|
|
uVar7 = iVar9 + 1U;
|
|
if ((int)uVar6 < (int)(iVar9 + 1U)) {
|
|
uVar7 = uVar6;
|
|
}
|
|
uVar10 = (ulonglong)uVar7;
|
|
if (0 < (int)uVar7) {
|
|
do {
|
|
uVar7 = *puVar14;
|
|
uVar6 = *puVar13;
|
|
puVar14 = puVar14 + -1;
|
|
puVar13 = puVar13 + 1;
|
|
uVar15 = uVar15 + (ulonglong)uVar7 * (ulonglong)uVar6;
|
|
uVar10 = uVar10 - 1;
|
|
} while (uVar10 != 0);
|
|
}
|
|
lVar16 = lVar16 + 1;
|
|
iVar12 = iVar12 + 1;
|
|
uVar7 = (uint)uVar15;
|
|
uVar15 = uVar15 >> 0x1c;
|
|
*(uint *)(auStack_858 + lVar16 * 4 + -4) = uVar7 & 0xfffffff;
|
|
param_3 = local_860;
|
|
} while (lVar16 < lVar11);
|
|
}
|
|
iVar3 = *param_3;
|
|
*param_3 = iVar2;
|
|
_Dst = (void *)(*(longlong *)(param_3 + 4) + lVar17 * 4);
|
|
if (lVar17 < lVar11) {
|
|
lVar11 = lVar11 - lVar17;
|
|
memcpy(_Dst,auStack_858 + lVar17 * 4,lVar11 * 4);
|
|
param_4 = param_4 + (int)lVar11;
|
|
_Dst = (void *)((longlong)_Dst + lVar11 * 4);
|
|
}
|
|
if (param_4 < iVar3) {
|
|
memset(_Dst,0,(ulonglong)(uint)(iVar3 - param_4) << 2);
|
|
}
|
|
FUN_1400ddc00(param_3);
|
|
uVar8 = 0;
|
|
}
|
|
return uVar8;
|
|
}
|
|
|