HalpIommuMarkHiberPhase

NTSTATUS __stdcall HalpIommuMarkHiberPhase(PVOID MemoryMap){
  void **v1; 
  INT64 *i; 
  PVOID *j; 
  PVOID *k; 
  UINT64 Tag; 
  UINT64 Taga; 
  void *retaddr; 
  v1 = &retaddr;
  for( i = (INT64 *)HalpIommuList; i != &HalpIommuList; i = (INT64 *)*i )
  {
    v1 = (void **)i[38];
    if( v1 )
      LODWORD(v1) = ((__int64(__fastcall *)(PVOID, INT64, INT64 *))v1)(MemoryMap, i[2], i + 46);
  }
  if( MemoryMap )
  {
    LODWORD(Tag) = 1231839560;
    PoSetHiberRange(MemoryMap, 2ui64, &IommupSystemContextListLock, 8ui64, Tag);
    for( j = (PVOID *)IommupSystemContextListHead; j != &IommupSystemContextListHead; j = (PVOID *)*j )
    {
      LODWORD(Taga) = 1231839560;
      PoSetHiberRange(MemoryMap, 2ui64, j, 0x40ui64, Taga);
      for( k = (PVOID *)j[6]; k != j + 6; k = (PVOID *)*k )
      {
        LODWORD(Taga) = 1231839560;
        PoSetHiberRange(MemoryMap, 2ui64, k, 0x68ui64, Taga);
      }
    }
  }
  return(int)v1;
}

Referenced by:

HaliLocateHiberRanges