WmipGetSMBiosTableData

__int64 __fastcall WmipGetSMBiosTableData(void *a1, int *a2, _DWORD *a3){
  int *v4; 
  _ETHREAD *CurrentThread; 
  int v7; 
  UINT8 *v9; 
  UINT8 *v10; 
  unsigned int v11; 
  v4 = a2;
  if( !a2 )
    return 3221225485i64;
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)CurrentThread + 242);
  LOBYTE(a2) = 1;
  ExAcquireResourceSharedLite(&WmipSMBiosLock, (BOOL)a2);
  if( a3 )
    *a3 = WmipSMBiosVersionInfo;
  if( *v4 >= (unsigned int)WmipSMBiosTableLength )
  {
    if( WmipSMBiosTablePhysicalAddress.QuadPart )
    {
      MmMapIoSpaceEx(WmipSMBiosTablePhysicalAddress, (unsigned int)WmipSMBiosTableLength, 4ui64);
      v10 = v9;
      if( v9 )
      {
        v11 = WmipSMBiosTableLength;
        memmove((UINT8 *)a1, v9, (unsigned int)WmipSMBiosTableLength);
        MmUnmapIoSpace(v10, v11);
        v7 = 0;
      }
      else
      {
        v7 = -1073741670;
      }
    }
    else
    {
      v7 = -1073741808;
    }
  }
  else
  {
    v7 = -1073741789;
  }
  *v4 = WmipSMBiosTableLength;
  if( WmipGetRegistryHideMachine() )
  {
    if( v7 >= 0 )
      WmipSMBiosHideMachine(a1, (unsigned int)*v4);
  }
  ExReleaseResourceLite(&WmipSMBiosLock);
  KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
  return(unsigned int)v7;
}

Referenced by:

WmipQueryWmiDataBlock
WmipRawSMBiosTableHandler