78 lines
2.2 KiB
C
78 lines
2.2 KiB
C
/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
|
|
* Ghidra 12.1.2 decompiler output for 0x1400a3120 FUN_1400a3120
|
|
* Pseudocode, not original source. */
|
|
|
|
void FUN_1400a3120(longlong param_1,longlong param_2,size_t param_3,undefined8 param_4)
|
|
|
|
{
|
|
uint uVar1;
|
|
longlong lVar2;
|
|
longlong lVar3;
|
|
void *_Src;
|
|
int iVar4;
|
|
longlong lVar5;
|
|
int iVar6;
|
|
ulonglong uVar7;
|
|
int iVar8;
|
|
longlong lVar9;
|
|
undefined4 uStackX_c;
|
|
|
|
_Src = (void *)0x0;
|
|
lVar3 = param_2;
|
|
FUN_14003ecf0(param_2,0,param_3);
|
|
iVar6 = *(int *)(param_1 + 0x18);
|
|
iVar8 = 0;
|
|
lVar9 = 0;
|
|
if (0 < iVar6) {
|
|
do {
|
|
if ((lVar9 < 0) || (iVar6 <= iVar8)) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14002f5c0(lVar3,_Src,param_3,param_4);
|
|
}
|
|
uVar7 = *(ulonglong *)(*(longlong *)(param_1 + 0x10) + lVar9 * 8);
|
|
uStackX_c = (int)(uVar7 >> 0x20);
|
|
uVar7 = uVar7 & 0xffffffff;
|
|
while( true ) {
|
|
iVar6 = *(int *)(param_2 + 0x18);
|
|
lVar5 = (longlong)iVar6;
|
|
if (iVar6 < 0) {
|
|
/* WARNING: Subroutine does not return */
|
|
FUN_14002f590();
|
|
}
|
|
iVar4 = *(int *)(param_2 + 0x18);
|
|
uVar1 = iVar4 + 1;
|
|
_Src = (void *)(ulonglong)uVar1;
|
|
FUN_14003ecf0(param_2,uVar1,param_3);
|
|
iVar4 = iVar4 - iVar6;
|
|
if (0 < iVar4) {
|
|
if (*(int *)(param_2 + 0x18) == 0) {
|
|
lVar3 = 0;
|
|
lVar2 = 0;
|
|
}
|
|
else {
|
|
lVar3 = *(longlong *)(param_2 + 0x10);
|
|
lVar2 = *(longlong *)(param_2 + 0x10);
|
|
}
|
|
_Src = (void *)(lVar3 + lVar5 * 4);
|
|
param_3 = (longlong)iVar4 << 2;
|
|
memmove((void *)(lVar2 + 4 + lVar5 * 4),_Src,param_3);
|
|
}
|
|
if (*(int *)(param_2 + 0x18) == 0) {
|
|
lVar3 = 0;
|
|
}
|
|
else {
|
|
lVar3 = *(longlong *)(param_2 + 0x10);
|
|
}
|
|
iVar6 = (int)uVar7;
|
|
*(int *)(lVar3 + lVar5 * 4) = iVar6;
|
|
if (iVar6 == uStackX_c) break;
|
|
uVar7 = (ulonglong)(iVar6 + 1);
|
|
}
|
|
iVar6 = *(int *)(param_1 + 0x18);
|
|
iVar8 = iVar8 + 1;
|
|
lVar9 = lVar9 + 1;
|
|
} while (iVar8 < iVar6);
|
|
}
|
|
return;
|
|
}
|
|
|