PspValidateEnvironmentBlock

NTSTATUS __stdcall PspValidateEnvironmentBlock(WCHAR *Environment, UINT64 *EnvironmentSize){
  UINT64 v2; 
  char v3; 
  WCHAR v5; 
  unsigned __int64 v6; 
  __int64 v7; 
  char v8; 

  v2 = *EnvironmentSize;
  v3 = 0;
  if( !*Environment )
  {
    v2 -= 2i64;
    ++Environment;
  }
  if( !v2 )
    return -1073741811;
  do
  {
    v5 = *Environment;
    v6 = 0i64;
    ++Environment;
    v7 = 0i64;
    v8 = 0;
    v2 -= 2i64;
    if( v2 )
    {
      do
      {
        if( !v5 )
          break;
        if( v5 == 61 )
        {
          ++v6;
          if( !v7 )
            v8 = 1;
        }
        v5 = *Environment;
        ++v7;
        ++Environment;
        v2 -= 2i64;
      }
      while( v2 );
      if( v7 )
        goto LABEL_16;
    }
    if( v5 )
    {
LABEL_16:
      if( !v6 || v8 && v6 < 2 )
        return -1073741811;
    }
    else
    {
      if( v2 )
      {
        *EnvironmentSize -= v2;
        v2 = 0i64;
      }
      v3 = 1;
    }
  }
  while( v2 );
  if( v3 )
    return 0;
  else
    return -1073741811;
}

Referenced by:

PspCaptureUserProcessParameters