MiInitializeChannelRangesTemporary

NTSTATUS __stdcall MiInitializeChannelRangesTemporary(){
  __int64 v0; 
  _QWORD *v1; 
  unsigned int v2; 
  int v3; 
  _BYTE *v4; 
  unsigned int v5; 
  unsigned int v6; 
  _BYTE *v7; 
  unsigned int v8; 
  char *i; 
  unsigned int v10; 
  unsigned int v11; 
  unsigned int v12; 
  unsigned int v13; 
  int v14; 
  char *v15; 
  unsigned int v16; 
  unsigned int v17; 
  char *v18; 
  __int64 j; 
  unsigned int v20; 
  unsigned __int64 v21; 
  unsigned int v22; 
  unsigned int v23; 
  unsigned int v24; 
  int v25; 
  char *v26; 
  unsigned int v27; 
  unsigned int v28; 
  unsigned int v29; 
  unsigned int v30; 
  char *v31; 
  __int64 k; 
  unsigned int v33; 
  unsigned __int64 v34; 
  unsigned int v35; 
  unsigned int v36; 
  unsigned int v37; 
  int v38; 
  unsigned int v39; 
  unsigned __int16 *v40; 
  _QWORD *v42; 
  int v43[4]; 
  unsigned int v44; 
  __int128 v45[2]; 
  void *retaddr; 

  v0 = (__int64)&retaddr;
  v43[0] = 0;
  v42 = 0i64;
  memset(v45, 0, sizeof(v45));
  if( dword_140CFA188 )
  {
    if( *(&stru_140C4DB30 + 4333) != 1 )
    {
      if( dword_140CFA19C )
      {
        v44 = 256;
        LODWORD(v0) = ((__int64(__fastcall *)(__int64, __int64, _QWORD **, int *))off_140C00A68[0])(
                        31i64,
                        8i64,
                        &v42,
                        v43);
        v1 = v42;
        if( v42 )
        {
          v2 = 0;
          v3 = 0;
          if( *v42 == -1i64 )
            goto LABEL_17;
          v4 = (char *)v42 + 14;
          do
          {
            v5 = *((unsigned __int16 *)v4 - 1);
            if( v2 <= v5 )
              v2 = *((unsigned __int16 *)v4 - 1);
            if( *v4 == 1 )
            {
              v3 = 1;
            }
            else
            {
              v6 = *((unsigned __int16 *)v4 - 2);
              if( v6 < 0x40 && (unsigned __int16)v5 < 4u )
              {
                _bittestandset((signed __int32 *)v45, v5 + 4 * v6);
                v1 = v42;
              }
            }
            v7 = v4;
            v4 += 16;
            v0 = (v7 - (_BYTE *)v1 - 14) >> 4;
            *(&stru_140C4DB30 + 41) = v0;
          }
          while( *(_QWORD *)(v4 - 14) != -1i64 );
          if( !v3 )
LABEL_17:
            v2 = 0;
          v8 = v2 + 1;
          MmNumberOfChannels = v8;
          if( v8 != 1 )
          {
            if( v8 > 4 )
            {
              for( i = (char *)v1 + 12; *(_QWORD *)(i - 12) != -1i64; i += 16 )
              {
                if( *(_WORD *)i >= 4u )
                {
                  v10 = *((unsigned __int16 *)i - 1);
                  if( v10 < 0x40 )
                  {
                    v11 = 4 * v10;
                    v12 = v44 - 1;
                    v13 = v11 < v44 ? v11 : 0;
                    v14 = ((unsigned __int64)v45 & 4) != 0 ? 0x20 : 0;
                    v15 = (char *)v45 + (-(__int64)(((unsigned __int64)v45 & 4) != 0) & 0xFFFFFFFFFFFFFFFCui64);
                    while( 1 )
                    {
                      v43[1] = 0;
                      v16 = v14 + v12;
                      v17 = v14 + v13;
                      if( v12 - v13 == -1 )
                        goto LABEL_27;
                      v18 = &v15[8 * ((unsigned __int64)v17 >> 6)];
                      for( j = ~*(_QWORD *)v18 | ((1i64 << (v17 & 0x3F)) - 1); j == -1; j = ~*(_QWORD *)v18 )
                      {
                        v18 += 8;
                        if( v18 > &v15[8 * ((unsigned __int64)v16 >> 6)] )
                          goto LABEL_27;
                      }
                      _BitScanForward64(&v21, ~j);
                      v20 = v21 + ((unsigned int)((v18 - v15) >> 3) << 6);
                      if( v20 > v16 )
                      {
LABEL_27:
                        v20 = -1;
                      }
                      else if( v20 != -1 )
                      {
                        break;
                      }
                      if( !v13 )
                        break;
                      v22 = v11 + 1;
                      if( v11 + 1 > v44 )
                        v22 = v44;
                      v12 = v22 - 1;
                      v13 = 0;
                    }
                    v23 = v20 - v14;
                    if( v20 == -1 )
                      v23 = -1;
                    if( v23 < v11 || v23 >= v11 + 4 )
                    {
                      i[2] = 0;
                      *(_WORD *)i = 3;
                    }
                    else
                    {
                      *(_WORD *)i = v23 & 3;
                    }
                  }
                }
              }
              MmNumberOfChannels = 4;
            }
            v24 = 0;
            v25 = ((unsigned __int64)v45 & 4) != 0 ? 0x20 : 0;
            v26 = (char *)v45 - (-(__int64)(((unsigned __int64)v45 & 4) != 0) & 4);
            while( 1 )
            {
              v27 = v24 < v44 ? v24 : 0;
              v28 = v44 - 1;
              while( 1 )
              {
                v43[2] = 0;
                v29 = v25 + v28;
                v30 = v25 + v27;
                if( v28 - v27 == -1 )
                  goto LABEL_49;
                v31 = &v26[8 * ((unsigned __int64)v30 >> 6)];
                for( k = ~*(_QWORD *)v31 | ((1i64 << (v30 & 0x3F)) - 1); k == -1; k = ~*(_QWORD *)v31 )
                {
                  v31 += 8;
                  if( v31 > &v26[8 * ((unsigned __int64)v29 >> 6)] )
                    goto LABEL_49;
                }
                _BitScanForward64(&v34, ~k);
                v33 = v34 + ((unsigned int)((v31 - v26) >> 3) << 6);
                if( v33 > v29 )
                {
LABEL_49:
                  v33 = -1;
                }
                else if( v33 != -1 )
                {
                  break;
                }
                if( !v27 )
                  break;
                v35 = v24 + 1;
                if( v24 + 1 > v44 )
                  v35 = v44;
                v28 = v35 - 1;
                v27 = 0;
              }
              v36 = v33 - v25;
              if( v33 == -1 )
                v36 = -1;
              if( v36 == -1 || v36 < v24 )
                break;
              v24 = v36 + 1;
              v37 = v36;
              v38 = v36 & 3;
              v39 = v37 >> 2;
              if( *v42 != -1i64 )
              {
                v40 = (unsigned __int16 *)v42 + 6;
                do
                {
                  if( *(v40 - 1) == v39 && *v40 == v38 )
                    *((_BYTE *)v40 + 2) = 0;
                  v40 += 8;
                }
                while( *(_QWORD *)(v40 - 6) != -1i64 );
              }
            }
            LODWORD(v0) = (_DWORD)v42;
            *(&stru_140C4DB30 + 28) = v42;
          }
        }
      }
    }
  }
  return v0;
}

Referenced by:

MiInitNucleus