WmipFindMRByNames

_QWORD *__fastcall WmipFindMRByNames(__int64 a1, __int64 a2){
  _QWORD *v4; 
  unsigned __int16 *v5; 
  __int64 v6; 
  int v7; 
  int v8; 
  unsigned __int16 *v10; 
  __int64 v11; 
  int v12; 
  int v13; 
  KeWaitForSingleObject(&WmipSMMutex, Executive, 0, 0, 0i64);
  v4 = *(_QWORD **)WmipMRHeadPtr;
  if( *(_QWORD *)WmipMRHeadPtr == WmipMRHeadPtr )
  {
LABEL_7:
    v4 = 0i64;
  }
  else
  {
    while( 1 )
    {
      v5 = (unsigned __int16 *)v4[5];
      v6 = a1 - (_QWORD)v5;
      do
      {
        v7 = *(unsigned __int16 *)((char *)v5 + v6);
        v8 = *v5 - v7;
        if( v8 )
          break;
        ++v5;
      }
      while( v7 );
      if( !v8 )
      {
        v10 = (unsigned __int16 *)v4[6];
        v11 = a2 - (_QWORD)v10;
        do
        {
          v12 = *(unsigned __int16 *)((char *)v10 + v11);
          v13 = *v10 - v12;
          if( v13 )
            break;
          ++v10;
        }
        while( v12 );
        if( !v13 )
          break;
      }
      v4 = (_QWORD *)*v4;
      if( v4 == (_QWORD *)WmipMRHeadPtr )
        goto LABEL_7;
    }
    WmipReferenceEntry((UINT64)v4);
  }
  KeReleaseMutex(&WmipSMMutex, 0);
  return v4;
}

Referenced by:

WmipAddMofResource