SmcProcessStoreCreateRequest

__int64 __fastcall SmcProcessStoreCreateRequest(__int64 a1, unsigned __int64 a2, int a3, char a4){
  int v6; 
  unsigned __int64 v7; 
  int v9; 
  __int128 v10; 
  __int128 v11; 
  v9 = -1;
  v10 = 0i64;
  v11 = 0i64;
  if( a3 == 32 )
  {
    if( a4 )
    {
      if( (a2 & 3) != 0 )
        ExRaiseDatatypeMisalignment();
      v7 = 0x7FFFFFFF0000i64;
      if( a2 < 0x7FFFFFFF0000i64 )
        v7 = a2;
      *(_BYTE *)v7 = *(_BYTE *)v7;
      *(_BYTE *)(v7 + 31) = *(_BYTE *)(v7 + 31);
    }
    v10 = *(_OWORD *)a2;
    v11 = *(_OWORD *)(a2 + 16);
    if( (_BYTE)v10 != 2 || (v10 & 0xFFFFFF00) != 0 )
      return(unsigned int)-1073741811;
    if( SDWORD2(v11) >= 2 )
      return(unsigned int)-1073741822;
    if( (DWORD1(v10) & 0xFFFEE000) != 0 )
      return(unsigned int)-1073741811;
    v6 = SmcStoreCreate(a1, SDWORD2(v11), (_DWORD *)&v10 + 1, DWORD1(v11), &v9);
    if( v6 >= 0 )
    {
      v6 = 0;
      *(_DWORD *)(a2 + 28) = v9;
    }
  }
  else
  {
    return(unsigned int)-1073741306;
  }
  return(unsigned int)v6;
}

Referenced by:

SmSetStoreInformation