// // FMOD::ChannelI::validate from 0x1800d0a50 to 0x1800d0b57 (263 bytes) // // 22 xrefs: // > sub_180012360 @ 0x180012363 // > FMOD::Channel::getChannelGroup @ 0x18009fb43 // > FMOD::Channel::getCurrentSound @ 0x18009fc1d // > FMOD::Channel::getFrequency @ 0x18009fd02 // > FMOD::Channel::getIndex @ 0x18009fddd // > FMOD::Channel::getLoopCount @ 0x18009fec2 // > FMOD::Channel::getLoopPoints @ 0x18009ffbd // > FMOD::Channel::getPosition @ 0x1800a018a // > FMOD::Channel::getPriority @ 0x1800a02c2 // > FMOD::Channel::isVirtual @ 0x1800a03a5 // > FMOD::Channel::setChannelGroup @ 0x1800a047d // > FMOD::Channel::setFrequency @ 0x1800a0550 // > FMOD::Channel::setLoopCount @ 0x1800a062c // > FMOD::Channel::setLoopPoints @ 0x1800a070f // > FMOD::Channel::setPosition @ 0x1800a08d4 // > FMOD::Channel::setPriority @ 0x1800a09fc // > sub_1800D10B0 @ 0x1800d10e1 // > sub_1800D1500 @ 0x1800d1525 // > @ 0x18018b618 // > @ 0x18018b628 // > @ 0x180194348 // > @ 0x1801fea84 // // 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::ChannelI::validate(unsigned int a1, __int64 *a2, _QWORD *a3) { int v4; // edi __int64 v5; // rbp __int64 result; // rax __int64 v9; // rbx __int64 v10; // rdx unsigned __int64 v11; // rcx __int64 v12; // [rsp+40h] [rbp+8h] BYREF v4 = (a1 >> 17) & 0xFFF; v5 = (unsigned __int16)(a1 >> 1); if ( !a2 ) return 31; *a2 = 0; if ( (unsigned __int16)(a1 >> 1) && !(unsigned int)sub_1800E43E0(a1 >> 29, &v12) ) { v9 = v12; if ( !*(_QWORD *)(v12 + 488) ) return 67; if ( v4 < *(_DWORD *)(v12 + 480) ) { if ( a3 ) { if ( *a3 ) return 28; result = sub_1801021E0(v12); if ( (_DWORD)result ) return result; *a3 = v9; v9 = v12; } v10 = *(_QWORD *)(v9 + 488) + 560LL * (unsigned int)v4; if ( (_DWORD)v5 == 0xFFFF || (v11 = *(_QWORD *)(v10 + 80), v11 == a1) ) { *a2 = v10; return 0; } if ( (unsigned __int64)(unsigned __int16)(v11 >> 1) - v5 >= 2 ) return 3; } } return 30; }