MiJoinSession
__int64 __fastcall MiJoinSession(volatile signed __int32 **a1){
_ETHREAD *CurrentThread;
__int64 v2;
volatile signed __int32 *v3;
signed __int32 v4;
signed __int32 v5;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
*a1 = 0i64;
v2 = *((_QWORD *)CurrentThread + 23);
if( (*(_DWORD *)(v2 + 2172) & 0x1000) != 0 )
return 1i64;
v3 = *(volatile signed __int32 **)(v2 + 1368);
if( !v3 )
return 1i64;
v4 = *v3;
while( v4 )
{
v5 = v4;
v4 = _InterlockedCompareExchange(v3, v4 + 1, v4);
if( v5 == v4 )
{
_InterlockedIncrement(v3 + 3);
*a1 = v3;
return 1i64;
}
}
return 0i64;
}Referenced by:
MmCreateProcessAddressSpace