HalpInterruptSortProcessorTable

VOID __fastcall HalpInterruptSortProcessorTable(INT64 a1, UINT64 a2){
  unsigned int v2; 
  unsigned int v3; 
  unsigned __int64 v4; 
  unsigned __int64 v5; 
  unsigned int v6; 
  __int128 v7; 
  __int128 v8; 
  __int128 v9; 
  __int128 v10; 
  __int128 v11; 
  __int128 v12; 
  __int128 v13; 
  if( (unsigned int)a2 > 1 )
  {
    v2 = 0;
    v3 = a2 - 1;
    do
    {
      v4 = (unsigned __int64)(v2 + 1) << 6;
      v5 = (unsigned __int64)v2 << 6;
      if( *(_DWORD *)(v5 + a1 + 8) > *(_DWORD *)(v4 + a1 + 8) )
      {
        v6 = v2 - 1;
        v7 = *(_OWORD *)(v4 + a1 + 16);
        if( !v2 )
          v6 = 0;
        v8 = *(_OWORD *)(v5 + a1);
        v2 = v6;
        v9 = *(_OWORD *)(v5 + a1 + 16);
        v10 = *(_OWORD *)(v5 + a1 + 32);
        v11 = *(_OWORD *)(v5 + a1 + 48);
        *(_OWORD *)(v5 + a1) = *(_OWORD *)(v4 + a1);
        v12 = *(_OWORD *)(v4 + a1 + 32);
        *(_OWORD *)(v5 + a1 + 16) = v7;
        v13 = *(_OWORD *)(v4 + a1 + 48);
        *(_OWORD *)(v4 + a1) = v8;
        *(_OWORD *)(v4 + a1 + 16) = v9;
        *(_OWORD *)(v5 + a1 + 32) = v12;
        *(_OWORD *)(v4 + a1 + 32) = v10;
        *(_OWORD *)(v5 + a1 + 48) = v13;
        *(_OWORD *)(v4 + a1 + 48) = v11;
      }
      else
      {
        ++v2;
      }
    }
    while( v2 < v3 );
  }
}

Referenced by:

HalpInterruptParseMadt