// // Biquad_Filter from 0x105eb8 to 0x105fc0 (264 bytes) // // 5 xrefs: // > Pole_Zero_Filter_Phase @ 0x105eb4 // > .Biquad_Filter @ 0x109e9c // > @ 0x6280 // > .Biquad_Filter @ 0x109e94 // > @ 0x111810 // // This function is hookable on this platform! // // Using BromaIDA 8.0.0 @ https://github.com/Stazzical/BromaIDA // Using bindings at commit ba9f177b at Thu Jul 16 22:52:06 2026 from https://github.com/geode-sdk/bindings // __int64 __fastcall Biquad_Filter( float *a1, __int16 a2, _DWORD *a3, __int16 a4, __int64 a5, float *a6, __int16 a7, double a8, double a9, double a10, double a11, double a12, double a13, double a14, double a15) { float v15; // s17 float v16; // s18 float v17; // s19 float v18; // s5 float v19; // s3 float v20; // s16 unsigned int v21; // w4 float v22; // s7 __int64 v23; // x8 __int64 v24; // x7 __int64 v25; // x1 __int64 v26; // x3 float v27; // s1 float v28; // s2 float v29; // s1 __int64 v31; // x0 __int128 v32; // [xsp+10h] [xbp+10h] *(float *)&a9 = a6[1]; *(float *)&a8 = *a6; *(float *)&a12 = a6[3]; *(float *)&a14 = a6[2]; LODWORD(a15) = *(_DWORD *)a5; v15 = *(float *)(a5 + 8); v16 = *(float *)(a5 + 12); v17 = *(float *)(a5 + 16); if ( (a7 & 1) != 0 ) { v31 = __assert2( "../../src/pl2_encode_subroutine.c", 1881, "Biquad_Filter", "0 == dspsBlockSize % 2", a8, a9, a10, a11, a12, a13, a14, a15); return PLII_Encode(v31); } else { v18 = a6[2]; v19 = a6[3]; if ( a7 ) { v20 = -*(float *)(a5 + 4); v21 = a7 & 1; v22 = -*(float *)&a15; v23 = a2; v24 = a4; v25 = 8LL * a2; v26 = 8LL * a4; do { v21 += 2; v18 = a1[v23]; v19 = *a1; a1 = (float *)((char *)a1 + v25); v27 = (float)(*(float *)&a12 * v17) + (float)(*(float *)&a9 * v20); v28 = (float)(*(float *)&a14 * v17) + (float)(*(float *)&a8 * v20); *(float *)&a12 = v19; v29 = (float)(v27 + (float)(*(float *)&a8 * v22)) + (float)(*(float *)&a14 * v16); *(float *)&a14 = v18; *(float *)&a9 = v29 + (float)(v19 * v15); *(float *)&a8 = (float)((float)(v28 + (float)(v18 * v15)) + (float)(v19 * v16)) + (float)(*(float *)&a9 * v22); *a3 = LODWORD(a9); a3[v24] = LODWORD(a8); a3 = (_DWORD *)((char *)a3 + v26); } while ( v21 < a7 ); } *(_QWORD *)&v32 = __PAIR64__(LODWORD(a9), LODWORD(a8)); *((_QWORD *)&v32 + 1) = __PAIR64__(LODWORD(v19), LODWORD(v18)); *(_OWORD *)a6 = v32; return 0; } }