// // Pole_Zero_Filter_Phase from 0x105df8 to 0x105eb8 (192 bytes) // // 5 xrefs: // > Pole_Zero_Filter @ 0x105df4 // > .Pole_Zero_Filter_Phase @ 0x109e6c // > @ 0x59e0 // > .Pole_Zero_Filter_Phase @ 0x109e64 // > @ 0x1117f8 // // 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_Phase( float *a1, __int16 a2, float *a3, __int16 a4, _DWORD *a5, float *a6, __int16 a7, double a8, double a9, double a10, double a11, double a12, double a13, double a14) { float v14; // s2 float v15; // s4 unsigned int v16; // w4 __int64 v17; // x8 __int64 v18; // x7 __int64 v19; // x1 __int64 v20; // x3 float v21; // s1 float v22; // s3 float v23; // s3 __int64 v25; // x0 *(float *)&a8 = *a6; *(float *)&a13 = a6[1]; LODWORD(a12) = *a5; LODWORD(a14) = a5[1]; if ( (a7 & 1) != 0 ) { v25 = __assert2( "../../src/pl2_encode_subroutine.c", 1782, "Pole_Zero_Filter_Phase", "0 == dspsBlockSize % 2", a8, a9, a10, a11, a12, a13, a14); return Biquad_Filter(v25); } else { v14 = a6[1]; if ( a7 ) { v15 = -*(float *)&a12; v16 = a7 & 1; v17 = a2; v18 = a4; v19 = 8LL * a2; v20 = 8LL * a4; do { v21 = *a1; v16 += 2; v14 = a1[v17]; v22 = *a1 * *(float *)&a14; a1 = (float *)((char *)a1 + v19); v23 = (float)(v22 + (float)(*(float *)&a8 * v15)) + *(float *)&a13; *(float *)&a13 = v14; *(float *)&a8 = (float)(v21 + (float)(v14 * *(float *)&a14)) + (float)(v23 * v15); *a3 = v23; a3[v18] = *(float *)&a8; a3 = (float *)((char *)a3 + v20); } while ( v16 < a7 ); } *a6 = *(float *)&a8; a6[1] = v14; return 0; } }