__int64 __fastcall HookMouClassServiceCallback_faceit( __int64 a1, __int64 a2, __int64 a3, __int64 a4) { __int64 v4; // r12 __int64 v5; // rbp __int64 v6; // r14 __int64 v7; // r15 __int64 *v8; // r10 __int64 (__fastcall *original_trampoline)( __int64 , __int64 , __int64 , __int64 ); // r13 __int64 v10; // rax __int64 v11; // rdi __m128 *v12; // rax __int64 v13; // rbx int v14; // eax __int64 v15; // rcx void *retaddr; // [rsp+48h] [rbp+0h] v4 = a1; v5 = a4; v6 = a3; v7 = a2; v8 = expected_retaddr; original_trampoline = *( __int64 (__fastcall **)( __int64 , __int64 , __int64 , __int64 ))(qword_7F768 + 8); v10 = 0i64; while ( ( void *)*v8 != retaddr ) { if ( !*v8 ) { expected_retaddr[v10] = ( __int64 )retaddr; v11 = (( __int64 (__fastcall *)( __int64 ))(qword_7D7C8 ^ qword_7D7D0))(qword_7F1A0); if ( v11 ) { v12 = (__m128 *)(( __int64 (__fastcall *)(_QWORD, __int64 ))(qword_7D478 ^ qword_7D480))(0i64, 288i64); // ExAllocatePool v13 = ( __int64 )v12; if ( v12 ) { memset (v12 + 1, 0, 0x110ui64); *(_QWORD *)v13 = v11; *(_QWORD *)(v13 + 8) = retaddr; if ( (( __int64 (*)( void ))(qword_7CE78 ^ qword_7CE80))() && (( int (__fastcall *)(unsigned __int64 , _QWORD, _QWORD, _QWORD))(qword_7CFB8 ^ qword_7CFC0))( __readgsqword(0x188u), 0i64, *(_QWORD *)(qword_7DA28 ^ qword_7DA30), 0i64) >= 0 ) { *(_QWORD *)(v13 + 280) = __readgsqword(0x188u); } v14 = (( __int64 (__fastcall *)( __int64 , __int64 ))(qword_7CF58 ^ qword_7CF60))(v13 + 16, 32i64); v15 = *(_QWORD *)v13; *(_DWORD *)(v13 + 272) = v14; (( void (__fastcall *)( __int64 , void *, __int64 , __int64 ))(qword_7D6E0 ^ qword_7D6D8))( v15, &unk_53720, 1i64, v13); } else { sub_255C4(); (( void (__fastcall *)( __int64 ))(qword_7D670 ^ qword_7D668))(v11); } } else { sub_255C4(); } return original_trampoline(v4, v7, v6, v5); } v10 = (unsigned int )(v10 + 1); ++v8; if ( (unsigned int )v10 >= 50 ) return original_trampoline(v4, v7, v6, v5); } return original_trampoline(v4, v7, v6, v5); } |