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

80 lines
2 KiB
C

/* Agent_Release_x64.exe sha256 6f2be7b8eb799ba51b359d1958720aac5baee5b7ee0d1d36684d3cbd72d45469
* Ghidra 12.1.2 decompiler output for 0x1400cd540 FUN_1400cd540
* Pseudocode, not original source. */
undefined8 FUN_1400cd540(uint *param_1,uint *param_2,uint *param_3)
{
uint uVar1;
int iVar2;
int iVar3;
uint uVar4;
undefined8 uVar5;
int *piVar6;
uint uVar7;
uint uVar8;
int *piVar9;
longlong lVar10;
uint *puVar11;
uint *puVar12;
ulonglong uVar13;
uint uVar14;
uint *puVar15;
uVar14 = *param_1;
uVar4 = *param_2;
puVar15 = param_2;
uVar7 = uVar4;
if ((int)uVar4 < (int)uVar14) {
puVar15 = param_1;
uVar7 = uVar14;
uVar14 = uVar4;
}
uVar4 = uVar7 + 1;
if (((int)uVar4 <= (int)param_3[1]) ||
(uVar5 = FUN_1400cce50((longlong)param_3,uVar4), (int)uVar5 == 0)) {
uVar1 = *param_3;
puVar12 = *(uint **)(param_3 + 4);
*param_3 = uVar4;
piVar6 = *(int **)(param_1 + 4);
piVar9 = *(int **)(param_2 + 4);
uVar4 = 0;
uVar8 = 0;
if (0 < (int)uVar14) {
uVar13 = (ulonglong)uVar14;
puVar11 = puVar12;
do {
iVar2 = *piVar9;
puVar12 = puVar11 + 1;
piVar9 = piVar9 + 1;
iVar3 = *piVar6;
piVar6 = piVar6 + 1;
uVar4 = iVar2 + iVar3 + uVar4;
*puVar11 = uVar4 & 0xfffffff;
uVar4 = uVar4 >> 0x1c;
uVar13 = uVar13 - 1;
puVar11 = puVar12;
uVar8 = uVar14;
} while (uVar13 != 0);
}
if (uVar14 != uVar7) {
lVar10 = (longlong)(int)uVar8;
while (lVar10 < (int)uVar7) {
lVar10 = lVar10 + 1;
uVar4 = uVar4 + *(int *)(*(longlong *)(puVar15 + 4) + -4 + lVar10 * 4);
*puVar12 = uVar4;
*puVar12 = *puVar12 & 0xfffffff;
uVar4 = uVar4 >> 0x1c;
puVar12 = puVar12 + 1;
}
}
*puVar12 = uVar4;
if ((int)*param_3 < (int)uVar1) {
memset(puVar12 + 1,0,(ulonglong)(uVar1 - *param_3) << 2);
}
FUN_1400ccef0((int *)param_3);
uVar5 = 0;
}
return uVar5;
}