PopGetHwConfigurationSignature

UINT64 __stdcall PopGetHwConfigurationSignature(){
  VOID *v0; 
  unsigned int v1; 
  unsigned int v2; 
  int v3; 
  VOID **PoolWithTag; 
  VOID **v5; 
  int v6; 
  _LARGE_INTEGER v7; 
  _DWORD *v8; 
  UINT64 NumberOfBytes; 
  int v11; 
  int v12; 
  int v13; 
  int v14; 
  int v15; 

  v15 = 0;
  v0 = 0i64;
  v12 = 1;
  v14 = 0;
  NumberOfBytes = 0i64;
  v1 = 0;
  v11 = 1094930505;
  v13 = 1346584902;
  v2 = 4;
  ZwQuerySystemInformation();
  if( v3 == -1073741789 )
  {
    PoolWithTag = ExAllocatePoolWithTag(0x200ui64, (unsigned int)NumberOfBytes, 544040269i64);
    v5 = PoolWithTag;
    if( PoolWithTag )
    {
      *(_DWORD *)PoolWithTag = 1094930505;
      *((_DWORD *)PoolWithTag + 1) = 1;
      *((_DWORD *)PoolWithTag + 2) = 1346584902;
      *((_DWORD *)PoolWithTag + 3) = NumberOfBytes - 16;
      ZwQuerySystemInformation();
      if( v6 >= 0 && *((_BYTE *)v5 + 24) >= 5u )
      {
        v7.QuadPart = *((unsigned int *)v5 + 13);
        HalGetMemoryCachingRequirements(v7, 0x40ui64, (_MEMORY_CACHING_TYPE *)&NumberOfBytes + 1);
        if( HIDWORD(NumberOfBytes) != 1 )
        {
          v2 = 516;
          if( HIDWORD(NumberOfBytes) == 2 )
            v2 = 1028;
        }
        v8 = MmMapIoSpaceEx(v7, 0x40ui64, v2);
        v0 = v8;
        if( *v8 == 1396916550 )
          v1 = v8[2];
      }
      ExFreePoolWithTag(v5, 0x206D654Du);
      if( v0 )
        MmUnmapIoSpace(v0, 0x40ui64);
    }
  }
  return v1;
}

Referenced by:

PopAllocateHiberContext