SiQuerySystemInformationString

INT64 __fastcall SiQuerySystemInformationString(INT64 a1, VOID *a2, UINT64 a3, UINT64 *a4){
  unsigned int v5; 
  int SystemInformation; 
  int v8; 
  UINT8 **PoolWithTag; 
  unsigned int v10; 
  v5 = a3;
  SystemInformation = ZwQuerySystemInformation();
  v8 = SystemInformation;
  if( SystemInformation == -1073741789 )
  {
    PoolWithTag = (UINT8 **)ExAllocatePoolWithTag(PagedPool, 0i64, 0x4B505953ui64);
    if( PoolWithTag )
    {
      v8 = ZwQuerySystemInformation();
      if( v8 >= 0 )
      {
        v10 = *(unsigned __int16 *)PoolWithTag + 2;
        *(_DWORD *)a4 = v10;
        if( v10 <= v5 )
          memmove((UINT8 *)a2, PoolWithTag[1], v10);
        else
          v8 = -1073741789;
      }
      ExFreePoolWithTag(PoolWithTag, 0);
    }
    else
    {
      return(unsigned int)-1073741670;
    }
  }
  else if( SystemInformation >= 0 )
  {
    return(unsigned int)-1073741823;
  }
  return(unsigned int)v8;
}

Referenced by:

SyspartGetFirmwarePartition
SyspartGetSystemPartition