server-re/decomp/Agent_Release_x64/full/functions/0x1400a3120.c
2026-10-14 16:45:19 -04:00

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;
}