// // Pole_Zero_Filter from 0x105d34 to 0x105df8 (196 bytes) // // 4 xrefs: // > .Pole_Zero_Filter @ 0x109e8c // > @ 0x6b68 // > .Pole_Zero_Filter @ 0x109e84 // > @ 0x111808 // // 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 Pole_Zero_Filter( float *a1, __int16 a2, float *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; // s16 float v16; // s5 float v17; // s6 unsigned int v18; // w4 __int64 v19; // x8 __int64 v20; // x7 __int64 v21; // x1 __int64 v22; // x3 float v23; // s1 float v24; // s0 float v25; // s0 __int64 v27; // x0 *(float *)&a10 = *a6; *(float *)&a11 = a6[1]; LODWORD(a14) = *(_DWORD *)a5; LODWORD(a15) = *(_DWORD *)(a5 + 4); v15 = *(float *)(a5 + 8); if ( (a7 & 1) != 0 ) { v27 = __assert2( "../../src/pl2_encode_subroutine.c", 1685, "Pole_Zero_Filter", "0 == dspsBlockSize % 2", a8, a9, a10, a11, a12, a13, a14, a15); return Pole_Zero_Filter_Phase(v27); } else { v16 = a6[1]; if ( a7 ) { v17 = -*(float *)&a14; v18 = a7 & 1; v19 = a2; v20 = a4; v21 = 8LL * a2; v22 = 8LL * a4; do { v18 += 2; v23 = *a1; v16 = a1[v19]; a1 = (float *)((char *)a1 + v21); v24 = (float)(*(float *)&a11 * v15) + (float)(*(float *)&a10 * v17); *(float *)&a11 = v16; v25 = v24 + (float)(v23 * *(float *)&a15); *(float *)&a10 = (float)((float)(v23 * v15) + (float)(v16 * *(float *)&a15)) + (float)(v25 * v17); *a3 = v25; a3[v20] = *(float *)&a10; a3 = (float *)((char *)a3 + v22); } while ( v18 < a7 ); } *a6 = *(float *)&a10; a6[1] = v16; return 0; } }