void FUN_00401d70(char *param_1,int param_2,short *param_3)
{
float *pfVar1;
float *pfVar2;
int iVar3;
float fVar4;
float fVar5;
float fVar6;
float fVar7;
float fVar8;
float fVar9;
float fVar10;
float fVar11;
float fVar12;
float fVar13;
byte in_fcsr;
float local_130 [64];
pfVar1 = local_130;
do {
*pfVar1 = (float)(int)*param_1;
pfVar1 = pfVar1 + 1;
param_1 = param_1 + 1;
} while (pfVar1 != (float *)&stack0xffffffd0);
pfVar2 = local_130;
do {
fVar9 = *pfVar2 - pfVar2[7];
fVar11 = pfVar2[1] - pfVar2[6];
fVar4 = pfVar2[2] - pfVar2[5];
fVar13 = pfVar2[2] + pfVar2[5];
fVar10 = pfVar2[3] + pfVar2[4];
fVar6 = fVar11 + fVar9;
fVar7 = *pfVar2 + pfVar2[7];
fVar5 = (pfVar2[3] - pfVar2[4]) + fVar4;
fVar8 = pfVar2[1] + pfVar2[6];
fVar12 = fVar7 - fVar10;
fVar4 = (fVar4 + fVar11) * 0.70710677;
fVar11 = (fVar5 - fVar6) * 0.38268343;
fVar7 = fVar7 + fVar10;
fVar10 = fVar8 + fVar13;
fVar8 = ((fVar8 - fVar13) + fVar12) * 0.70710677;
fVar13 = fVar9 - fVar4;
fVar5 = fVar5 * 0.5411961 + fVar11;
fVar9 = fVar9 + fVar4;
fVar11 = fVar6 * 1.306563 + fVar11;
*pfVar2 = fVar7 + fVar10;
pfVar2[4] = fVar7 - fVar10;
pfVar2[2] = fVar12 + fVar8;
pfVar2[6] = fVar12 - fVar8;
pfVar2[5] = fVar13 + fVar5;
pfVar2[3] = fVar13 - fVar5;
pfVar2[1] = fVar9 + fVar11;
pfVar2[7] = fVar9 - fVar11;
pfVar2 = pfVar2 + 8;
} while (pfVar2 != pfVar1);
pfVar1 = local_130;
do {
fVar9 = *pfVar1 - pfVar1[0x38];
fVar11 = pfVar1[8] - pfVar1[0x30];
fVar4 = pfVar1[0x10] - pfVar1[0x28];
fVar13 = pfVar1[0x10] + pfVar1[0x28];
fVar10 = pfVar1[0x18] + pfVar1[0x20];
fVar6 = fVar11 + fVar9;
fVar7 = *pfVar1 + pfVar1[0x38];
fVar5 = (pfVar1[0x18] - pfVar1[0x20]) + fVar4;
fVar8 = pfVar1[8] + pfVar1[0x30];
fVar12 = fVar7 - fVar10;
fVar4 = (fVar4 + fVar11) * 0.70710677;
fVar11 = (fVar5 - fVar6) * 0.38268343;
fVar7 = fVar7 + fVar10;
fVar10 = fVar8 + fVar13;
fVar8 = ((fVar8 - fVar13) + fVar12) * 0.70710677;
fVar13 = fVar9 - fVar4;
fVar5 = fVar5 * 0.5411961 + fVar11;
fVar9 = fVar9 + fVar4;
fVar11 = fVar6 * 1.306563 + fVar11;
*pfVar1 = fVar7 + fVar10;
pfVar1[0x20] = fVar7 - fVar10;
pfVar1[0x10] = fVar12 + fVar8;
pfVar1[0x30] = fVar12 - fVar8;
pfVar1[0x28] = fVar13 + fVar5;
pfVar1[0x18] = fVar13 - fVar5;
pfVar1[8] = fVar9 + fVar11;
pfVar1[0x38] = fVar9 - fVar11;
pfVar1 = pfVar1 + 1;
} while (pfVar1 != local_130 + 8);
iVar3 = 0;
do {
pfVar1 = (float *)((int)local_130 + iVar3);
pfVar2 = (float *)(param_2 + iVar3);
iVar3 = iVar3 + 4;
fVar4 = *pfVar1 * *pfVar2 + 16384.5;
if ((((in_fcsr | 3) ^ 2) & 3) == 0) {
fVar4 = ROUND(fVar4);
}
else {
fVar4 = FLOOR(fVar4);
}
*param_3 = (short)(int)fVar4 + -0x4000;
param_3 = param_3 + 1;
} while (iVar3 != 0x100);
return;
}