PfSnParsePrefetchParam

NTSTATUS __stdcall PfSnParsePrefetchParam(UNICODE_STRING *CommandLine, UINT64 *PrefetchParamOut){
  WCHAR v2; 
  __int64 Length; 
  NTSTATUS v6; 
  wchar_t *Buffer; 
  PWCHAR String; 
  UINT16 *v9; 
  UINT16 *v10; 
  wchar_t *i; 
  unsigned int v13; 
  struct _UNICODE_STRING DestinationString; 
  wchar_t Str[15]; 
  __int16 v16; 
  DestinationString = 0i64;
  RtlInitUnicodeString(&DestinationString, L"/prefetch:", v2);
  Length = CommandLine->Length;
  v6 = 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;
  v9 = (PWCHAR)((char *)String + DestinationString.Length);
  v10 = (wchar_t *)((char *)CommandLine->Buffer + CommandLine->Length);
  for( i = Str; v9 < v10 && i < (wchar_t *)&v16 && *v9 != 32; ++i )
  {
    if( !iswdigit(*v9) )
      return -1073741811;
    *i = *v9++;
  }
  *i = 0;
  v13 = wtol(Str);
  if( v13 > 8 )
    return -1073741811;
  *(_DWORD *)PrefetchParamOut = v13;
  return v6;
}

Referenced by:

PfSnScanCommandLine