RtlFindHotPatchInformation

INT64 __stdcall RtlFindHotPatchInformation(PVOID Base){
  IMAGE_NT_HEADERS *v2; 
  char *v3; 
  char *v4; 
  __int64 v5; 
  unsigned int SizeOfImage; 
  char *v7; 
  unsigned int v8; 
  unsigned int v9; 
  unsigned int v10; 
  unsigned int v11; 
  INT64 v12; 
  UINT64 Size; 
  LODWORD(Size) = 0;
  v2 = RtlImageNtHeader(Base);
  LODWORD(v3) = RtlImageDirectoryEntryToData(Base, 1u, 0xAu, &Size);
  if( !v3 )
    return 0i64;
  if( (unsigned int)Size <= 4 )
    return 0i64;
  if( (_DWORD)Size != *(_DWORD *)v3 )
    return 0i64;
  if( (unsigned int)Size < 0xF4 )
    return 0i64;
  if( &v3[(unsigned int)Size] < v3 )
    return 0i64;
  v4 = (char *)Base + v2->OptionalHeader.SizeOfImage;
  if( v3 >= v4 )
    return 0i64;
  if( &v3[(unsigned int)Size] > v4 )
    return 0i64;
  _mm_lfence();
  v5 = *((unsigned int *)v3 + 60);
  if( (unsigned int)v5 >= 0xFFFFFFF8 || (_DWORD)v5 == 0 )
    return 0i64;
  SizeOfImage = v2->OptionalHeader.SizeOfImage;
  if( (int)v5 + 8 > SizeOfImage )
    return 0i64;
  v7 = (char *)Base + v5;
  switch( *(_DWORD *)((char *)Base + v5) )
  {
    case 1:
      v8 = 20;
      break;
    case 2:
      v8 = 24;
      break;
    case 3:
      v8 = 28;
      break;
    default:
      return 0i64;
  }
  v9 = *((_DWORD *)v7 + 1);
  if( v9 >= v8 )
  {
    if( *((_DWORD *)v7 + 2) )
    {
      if( v9 + (unsigned int)v5 > v9 && v9 + (unsigned int)v5 <= SizeOfImage )
      {
        v10 = *((_DWORD *)v7 + 4);
        if( v10 <= 0x3FFFFFF9 )
        {
          v11 = 4 * v10 + *((_DWORD *)v7 + 3);
          if( v11 > 4 * v10 && v11 <= v9 && v10 == 1 && RtlFindHotPatchBase((UINT64 *)v7) )
            return v12;
        }
      }
    }
  }
  return 0i64;
}

Referenced by:

MiApplyDriverHotPatch
MiOpenHotPatchFile
MiPerformImageHotPatch