// // FMOD::ChannelControl::getFadePoints from 0x18000b700 to 0x18000b903 (515 bytes) // // 4 xrefs: // > FMOD_ChannelGroup_GetFadePoints @ 0x1800c4fb9 // > FMOD_Channel_GetFadePoints @ 0x1800c5589 // > @ 0x180194348 // > @ 0x1801f678c // // 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 FMOD::ChannelControl::getFadePoints(__int64 a1, unsigned int *a2, __int64 a3, __int64 a4) { unsigned int v6; // ebx int v8; // r15d unsigned int v9; // ebp unsigned int v10; // edx unsigned int v11; // r10d __int64 v12; // rax __int64 v13; // rax __int64 v14; // rcx _QWORD *v15; // rax int v16; // ebx int v17; // ebx int v18; // ebx int v19; // eax __int64 v21; // [rsp+30h] [rbp-158h] BYREF __int64 v22; // [rsp+38h] [rbp-150h] BYREF _BYTE v23[256]; // [rsp+40h] [rbp-148h] BYREF v6 = 0; v21 = 0; v8 = a1; v9 = sub_180012360(a1, &v22, &v21); if ( v9 || (v9 = (*(__int64 (__fastcall **)(__int64, unsigned int *, __int64, __int64))(*(_QWORD *)v22 + 264LL))( v22, a2, a3, a4)) != 0 ) { if ( *((char *)off_1801AED20 + 16) < 0 ) { v16 = sub_1800F3060(v23, 256, a2); v17 = sub_1800F2F70(&v23[v16]) + v16; v18 = sub_1800F3280(&v23[v17], (unsigned int)(256 - v17), a3) + v17; v19 = sub_1800F2F70(&v23[v18]); sub_1800F30A0(&v23[v19 + v18], (unsigned int)(256 - (v19 + v18)), a4); sub_1800B20E0(v9, 4, v8, (unsigned int)"ChannelControl::getFadePoints", (__int64)v23); } } else if ( a3 ) { v10 = *a2; if ( *a2 ) { if ( v10 < 8 ) goto LABEL_9; v11 = 4; do { v12 = v6; v6 += 8; *(__m128i *)(a3 + 8 * v12) = _mm_srl_epi64(_mm_loadu_si128((const __m128i *)(a3 + 8 * v12)), (__m128i)0x14uLL); *(__m128i *)(a3 + 8LL * (v11 - 2)) = _mm_srl_epi64( _mm_loadu_si128((const __m128i *)(a3 + 8LL * (v11 - 2))), (__m128i)0x14uLL); *(__m128i *)(a3 + 8LL * v11) = _mm_srl_epi64( _mm_loadu_si128((const __m128i *)(a3 + 8LL * v11)), (__m128i)0x14uLL); v13 = v11 + 2; v11 += 8; *(__m128i *)(a3 + 8 * v13) = _mm_srl_epi64(_mm_loadu_si128((const __m128i *)(a3 + 8 * v13)), (__m128i)0x14uLL); } while ( v6 < (v10 & 0xFFFFFFF8) ); if ( v6 < v10 ) { LABEL_9: v14 = v10 - v6; v15 = (_QWORD *)(a3 + 8LL * v6); do { *v15++ >>= 20; --v14; } while ( v14 ); } } } if ( v21 ) sub_180102320(); return v9; }