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

87 lines
2.3 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x1400cd670 FUN_1400cd670
* Pseudocode, not original source. */
undefined8 FUN_1400cd670(uint *param_1,uint *param_2,uint *param_3,uint param_4)
{
uint uVar1;
uint uVar2;
uint uVar3;
undefined8 uVar4;
ulonglong uVar5;
longlong lVar6;
uint *puVar7;
uint uVar8;
ulonglong uVar9;
uint uVar10;
int iVar11;
uint *puVar12;
uint *puVar13;
uint uVar14;
ulonglong uVar15;
uint local_48 [4];
longlong local_38;
if ((int)param_4 < 0x200) {
uVar14 = *param_2;
if ((int)*param_1 < (int)*param_2) {
uVar14 = *param_1;
}
if ((int)uVar14 < 0x100) {
uVar4 = FUN_1400cd7d0((int *)param_1,(int *)param_2,param_3,param_4);
return uVar4;
}
}
uVar4 = FUN_1400cf070(local_48,param_4);
if ((int)uVar4 == 0) {
uVar14 = *param_1;
iVar11 = 0;
lVar6 = 0;
uVar2 = param_4;
if (0 < (longlong)(int)uVar14) {
do {
puVar7 = *(uint **)(param_2 + 4);
uVar9 = 0;
uVar8 = 0;
uVar3 = uVar2;
if ((int)*param_2 < (int)uVar2) {
uVar3 = *param_2;
}
uVar15 = (ulonglong)uVar3;
uVar1 = *(uint *)(*(longlong *)(param_1 + 4) + lVar6 * 4);
puVar13 = (uint *)(local_38 + (longlong)iVar11 * 4);
puVar12 = puVar13;
uVar10 = 0;
if (0 < (int)uVar3) {
do {
uVar8 = *puVar7;
puVar13 = puVar12 + 1;
puVar7 = puVar7 + 1;
uVar5 = (ulonglong)uVar8 * (ulonglong)uVar1 + (ulonglong)*puVar12 + (uVar9 & 0xffffffff)
;
uVar9 = uVar5 >> 0x1c;
uVar8 = (uint)uVar9;
uVar15 = uVar15 - 1;
*puVar12 = (uint)uVar5 & 0xfffffff;
puVar12 = puVar13;
uVar10 = uVar3;
} while (uVar15 != 0);
}
if ((int)(uVar10 + iVar11) < (int)param_4) {
*puVar13 = uVar8;
}
lVar6 = lVar6 + 1;
iVar11 = iVar11 + 1;
uVar2 = uVar2 - 1;
} while (lVar6 < (int)uVar14);
}
local_48[0] = param_4;
FUN_1400ccef0((int *)local_48);
FUN_1400cef30((undefined8 *)local_48,(undefined8 *)param_3);
FUN_1400c6dd0((int *)local_48);
uVar4 = 0;
}
return uVar4;
}