98 lines
2.7 KiB
C
98 lines
2.7 KiB
C
/* AgentManager_Release_x64.exe sha256 8fd8ca91725858651a7839d34257b10c2970ac16c97e60c523b8b0c983fcb186
|
|
* Ghidra 12.1.2 decompiler output for 0x1400de4e0 FUN_1400de4e0
|
|
* Pseudocode, not original source. */
|
|
|
|
/* WARNING: Function: __security_check_cookie replaced with injection: security_check_cookie */
|
|
/* WARNING: Type propagation algorithm not settling */
|
|
|
|
undefined8 FUN_1400de4e0(int *param_1,int *param_2,uint *param_3,uint param_4)
|
|
|
|
{
|
|
int iVar1;
|
|
int iVar2;
|
|
longlong lVar3;
|
|
longlong lVar4;
|
|
uint uVar5;
|
|
uint uVar6;
|
|
undefined8 uVar7;
|
|
int iVar8;
|
|
ulonglong uVar9;
|
|
int iVar10;
|
|
void *_Dst;
|
|
uint *puVar11;
|
|
uint *puVar12;
|
|
ulonglong uVar13;
|
|
ulonglong uVar14;
|
|
uint uVar15;
|
|
undefined1 auStack_878 [32];
|
|
uint *local_858;
|
|
uint auStack_84c [513];
|
|
ulonglong local_48;
|
|
|
|
local_48 = DAT_14016f5a0 ^ (ulonglong)auStack_878;
|
|
local_858 = param_3;
|
|
if (((int)param_4 <= (int)param_3[1]) ||
|
|
(uVar7 = FUN_1400ddb60((longlong)param_3,param_4), (int)uVar7 == 0)) {
|
|
iVar2 = *param_1;
|
|
uVar15 = *param_2 + iVar2;
|
|
if ((int)param_4 < (int)uVar15) {
|
|
uVar15 = param_4;
|
|
}
|
|
uVar9 = 0;
|
|
if (0 < (int)uVar15) {
|
|
lVar3 = *(longlong *)(param_1 + 4);
|
|
lVar4 = *(longlong *)(param_2 + 4);
|
|
iVar1 = *param_2 + -1;
|
|
uVar13 = uVar9;
|
|
uVar14 = uVar9;
|
|
do {
|
|
iVar10 = (int)uVar9;
|
|
iVar8 = iVar10;
|
|
if (iVar1 < iVar10) {
|
|
iVar8 = iVar1;
|
|
}
|
|
puVar11 = (uint *)(lVar3 + (longlong)(iVar10 - iVar8) * 4);
|
|
puVar12 = (uint *)(lVar4 + (longlong)iVar8 * 4);
|
|
uVar5 = iVar2 - (iVar10 - iVar8);
|
|
uVar6 = iVar8 + 1U;
|
|
if ((int)uVar5 < (int)(iVar8 + 1U)) {
|
|
uVar6 = uVar5;
|
|
}
|
|
uVar9 = (ulonglong)uVar6;
|
|
if (0 < (int)uVar6) {
|
|
do {
|
|
uVar6 = *puVar12;
|
|
uVar5 = *puVar11;
|
|
puVar12 = puVar12 + -1;
|
|
puVar11 = puVar11 + 1;
|
|
uVar13 = uVar13 + (ulonglong)uVar6 * (ulonglong)uVar5;
|
|
uVar9 = uVar9 - 1;
|
|
} while (uVar9 != 0);
|
|
}
|
|
uVar14 = uVar14 + 1;
|
|
uVar9 = (ulonglong)(iVar10 + 1);
|
|
uVar6 = (uint)uVar13;
|
|
uVar13 = uVar13 >> 0x1c;
|
|
auStack_84c[uVar14] = uVar6 & 0xfffffff;
|
|
param_3 = local_858;
|
|
} while ((longlong)uVar14 < (longlong)(int)uVar15);
|
|
}
|
|
uVar6 = *param_3;
|
|
_Dst = *(void **)(param_3 + 4);
|
|
uVar5 = uVar15 + 1;
|
|
*param_3 = uVar15;
|
|
uVar15 = 0;
|
|
if (0 < (int)uVar5) {
|
|
memcpy(_Dst,auStack_84c + 1,(ulonglong)uVar5 << 2);
|
|
_Dst = (void *)((longlong)_Dst + (ulonglong)uVar5 * 4);
|
|
uVar15 = uVar5;
|
|
}
|
|
if ((int)uVar15 < (int)uVar6) {
|
|
memset(_Dst,0,(ulonglong)(uVar6 - uVar15) << 2);
|
|
}
|
|
FUN_1400ddc00((int *)param_3);
|
|
uVar7 = 0;
|
|
}
|
|
return uVar7;
|
|
}
|
|
|