PfSnParsePrefetchParam

NTSTATUS __stdcall PfSnParsePrefetchParam(_UNICODE_STRING *CommandLine, UINT64 *PrefetchParamOut){
  __int64 Length; 
  NTSTATUS v5; 
  wchar_t *Buffer; 
  WCHAR *String; 
  UINT16 *v8; 
  UINT16 *v9; 
  wchar_t *i; 
  unsigned int v12; 
  _UNICODE_STRING DestinationString; 
  wchar_t Str[15]; 
  __int16 v15; 

  DestinationString = 0i64;
  RtlInitUnicodeString(&DestinationString, L"/prefetch:");
  Length = CommandLine->Length;
  v5 = 0;
  if( (_WORD)Length )
  {
    Buffer = CommandLine->Buffer;
    if( ((unsigned __int8)Buffer & 1) != 0 )
      ExRaiseDatatypeMisalignment();
    if( (unsigned __int64)Buffer + Length > 0x7FFFFFFF0000i64 || (wchar_t *)((char *)Buffer + Length) < Buffer )
      MEMORY[0x7FFFFFFF0000] = 0;
  }
  String = PfSnFindString(CommandLine, &DestinationString);
  if( !String )
    return -1073741275;
  v8 = (WCHAR *)((char *)String + DestinationString.Length);
  v9 = (wchar_t *)((char *)CommandLine->Buffer + CommandLine->Length);
  for( i = Str; v8 < v9 && i < (wchar_t *)&v15 && *v8 != 32; ++i )
  {
    if( !iswdigit(*v8) )
      return -1073741811;
    *i = *v8++;
  }
  *i = 0;
  v12 = wtol(Str);
  if( v12 > 8 )
    return -1073741811;
  *(_DWORD *)PrefetchParamOut = v12;
  return v5;
}

Referenced by:

PfSnScanCommandLine