⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 drms.c

📁 uclinux 下的vlc播放器源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
    {        p_buffer[ i ] ^= md5.p_digest[ i ];    }}/***************************************************************************** * DoExtShuffle: extended shuffle ***************************************************************************** * This is even uglier. *****************************************************************************/static void DoExtShuffle( uint32_t * p_bordel ){    uint32_t i_ret;    i_ret = FirstPass( p_bordel );    SecondPass( p_bordel, i_ret );    ThirdPass( p_bordel );    FourthPass( p_bordel );}static uint32_t FirstPass( uint32_t * p_bordel ){    uint32_t i, i_cmd, i_ret = 5;    TinyShuffle1( p_bordel );    for( ; ; )    {        for( ; ; )        {            p_bordel[ 1 ] += 0x10000000;            p_bordel[ 3 ] += 0x12777;            if( (p_bordel[ 10 ] & 1) && i_ret )            {                i_ret--;                p_bordel[ 1 ] -= p_bordel[ 2 ];                p_bordel[ 11 ] += p_bordel[ 12 ];                break;            }            if( (p_bordel[ 1 ] + p_bordel[ 2 ]) >= 0x7D0 )            {                switch( ((p_bordel[ 3 ] ^ 0x567F) >> 2) & 7 )                {                    case 0:                        for( i = 0; i < 3; i++ )                        {                            if( p_bordel[ i + 10 ] > 0x4E20 )                            {                                p_bordel[ i + 1 ] += p_bordel[ i + 2 ];                            }                        }                        break;                    case 4:                        p_bordel[ 1 ] -= p_bordel[ 2 ];                        /* no break */                    case 3:                        p_bordel[ 11 ] += p_bordel[ 12 ];                        break;                    case 6:                        p_bordel[ 3 ] ^= p_bordel[ 4 ];                        /* no break */                    case 8:                        p_bordel[ 13 ] &= p_bordel[ 14 ];                        /* no break */                    case 1:                        p_bordel[ 0 ] |= p_bordel[ 1 ];                        if( i_ret )                        {                            return i_ret;                        }                        break;                }                break;            }        }        for( i = 0, i_cmd = 0; i < 16; i++ )        {            if( p_bordel[ i ] < p_bordel[ i_cmd ] )            {                i_cmd = i;            }        }        if( i_ret && i_cmd != 5 )        {            i_ret--;        }        else        {            if( i_cmd == 5 )            {                p_bordel[ 8 ] &= p_bordel[ 6 ] >> 1;                p_bordel[ 3 ] <<= 1;            }            for( i = 0; i < 3; i++ )            {                p_bordel[ 11 ] += 1;                if( p_bordel[ 11 ] & 5 )                {                    p_bordel[ 8 ] += p_bordel[ 9 ];                }                else if( i_ret )                {                    i_ret--;                    i_cmd = 3;                    goto break2;                }            }            i_cmd = (p_bordel[ 15 ] + 0x93) >> 3;            if( p_bordel[ 15 ] & 0x100 )            {                i_cmd ^= 0xDEAD;            }        }        switch( i_cmd & 3 )        {            case 0:                while( p_bordel[ 11 ] & 1 )                {                    p_bordel[ 11 ] >>= 1;                    p_bordel[ 12 ] += 1;                }                /* no break */            case 2:                p_bordel[ 14 ] -= 0x19FE;                break;            case 3:                if( i_ret )                {                    i_ret--;                    p_bordel[ 5 ] += 5;                    continue;                }                break;        }        i_cmd = ((p_bordel[ 3 ] + p_bordel[ 4 ] + 10) >> 1) - p_bordel[ 4 ];        break;    }break2:    switch( i_cmd & 3 )    {        case 0:            p_bordel[ 14 ] >>= 1;            break;        case 1:            p_bordel[ 5 ] <<= 2;            break;        case 2:            p_bordel[ 12 ] |= 5;            break;        case 3:            p_bordel[ 15 ] &= 0x55;            if( i_ret )            {                p_bordel[ 2 ] &= 0xB62FC;                return i_ret;            }            break;    }    TinyShuffle2( p_bordel );    return i_ret;}static void SecondPass( uint32_t * p_bordel, uint32_t i_tmp ){    uint32_t i, i_cmd, i_jc = 5;    TinyShuffle3( p_bordel );    for( i = 0, i_cmd = 0; i < 16; i++ )    {        if( p_bordel[ i ] > p_bordel[ i_cmd ] )        {            i_cmd = i;        }    }    switch( i_cmd )    {        case 0:            if( p_bordel[ 1 ] < p_bordel[ 8 ] )            {                p_bordel[ 5 ] += 1;            }            break;        case 4:            if( (p_bordel[ 9 ] & 0x7777) == 0x3333 )            {                p_bordel[ 5 ] -= 1;            }            else            {                i_jc--;                if( p_bordel[ 1 ] < p_bordel[ 8 ] )                {                    p_bordel[ 5 ] += 1;                }                break;            }            /* no break */        case 7:            p_bordel[ 2 ] -= 1;            p_bordel[ 1 ] -= p_bordel[ 5 ];            for( i = 0; i < 3; i++ )            {                switch( p_bordel[ 1 ] & 3 )                {                    case 0:                        p_bordel[ 1 ] += 1;                        /* no break */                    case 1:                        p_bordel[ 3 ] -= 8;                        break;                    case 2:                        p_bordel[ 13 ] &= 0xFEFEFEF7;                        break;                    case 3:                        p_bordel[ 8 ] |= 0x80080011;                        break;                }            }            return;        case 10:            p_bordel[ 4 ] -= 1;            p_bordel[ 5 ] += 1;            p_bordel[ 6 ] -= 1;            p_bordel[ 7 ] += 1;            break;        default:            p_bordel[ 15 ] ^= 0x18547EFF;            break;    }    for( i = 3; i--; )    {        switch( ( p_bordel[ 12 ] + p_bordel[ 13 ] + p_bordel[ 6 ] ) % 5 )        {            case 0:                p_bordel[ 12 ] -= 1;                /* no break */            case 1:                p_bordel[ 12 ] -= 1;                p_bordel[ 13 ] += 1;                break;            case 2:                p_bordel[ 13 ] += 4;                /* no break */            case 3:                p_bordel[ 12 ] -= 1;                break;            case 4:                i_jc--;                p_bordel[ 5 ] += 1;                p_bordel[ 6 ] -= 1;                p_bordel[ 7 ] += 1;                i = 3; /* Restart the whole loop */                break;        }    }    TinyShuffle4( p_bordel );    for( ; ; )    {        TinyShuffle5( p_bordel );        switch( ( p_bordel[ 2 ] * 2 + 15 ) % 5 )        {            case 0:                if( ( p_bordel[ 3 ] + i_tmp ) <=                    ( p_bordel[ 1 ] + p_bordel[ 15 ] ) )                {                    p_bordel[ 3 ] += 1;                }                break;            case 4:                p_bordel[ 10 ] -= 0x13;                break;            case 3:                p_bordel[ 5 ] >>= 2;                break;        }        if( !( p_bordel[ 2 ] & 1 ) || i_jc == 0 )        {            break;        }        i_jc--;        p_bordel[ 2 ] += 0x13;        p_bordel[ 12 ] += 1;    }    p_bordel[ 2 ] &= 0x10076000;}static void ThirdPass( uint32_t * p_bordel ){    uint32_t i_cmd;    i_cmd = ((p_bordel[ 7 ] + p_bordel[ 14 ] + 10) >> 1) - p_bordel[ 14 ];    i_cmd = i_cmd % 10;    switch( i_cmd )    {        case 0:            p_bordel[ 1 ] <<= 1;            p_bordel[ 2 ] <<= 2;            p_bordel[ 3 ] <<= 3;            break;        case 6:            p_bordel[ i_cmd + 3 ] &= 0x5EDE36B;            p_bordel[ 5 ] += p_bordel[ 8 ];            p_bordel[ 4 ] += p_bordel[ 7 ];            p_bordel[ 3 ] += p_bordel[ 6 ];            p_bordel[ 2 ] += p_bordel[ 5 ];            /* no break */        case 2:            p_bordel[ 1 ] += p_bordel[ 4 ];            p_bordel[ 0 ] += p_bordel[ 3 ];            TinyShuffle6( p_bordel );            return; /* jc = 4 */        case 3:            if( (p_bordel[ 11 ] & p_bordel[ 2 ]) > 0x211B )            {                p_bordel[ 6 ] += 1;            }            break;        case 4:            p_bordel[ 7 ] += 1;            /* no break */        case 5:            p_bordel[ 9 ] ^= p_bordel[ 2 ];            break;        case 7:            p_bordel[ 2 ] ^= (p_bordel[ 1 ] & p_bordel[ 13 ]);            break;        case 8:            p_bordel[ 0 ] -= p_bordel[ 11 ] & p_bordel[ 15 ];            return; /* jc = 4 */        case 9:            p_bordel[ 6 ] >>= (p_bordel[ 14 ] & 3);            break;    }    SWAP( p_bordel[ 0 ], p_bordel[ 10 ] );    TinyShuffle6( p_bordel );    return; /* jc = 5 */}static void FourthPass( uint32_t * p_bordel ){    uint32_t i, j;    TinyShuffle7( p_bordel );    switch( p_bordel[ 5 ] % 5)    {        case 0:            p_bordel[ 0 ] += 1;            break;        case 2:            p_bordel[ 11 ] ^= (p_bordel[ 3 ] + p_bordel[ 6 ] + p_bordel[ 8 ]);            break;        case 3:            for( i = 4; i < 15 && (p_bordel[ i ] & 5) == 0; i++ )            {                SWAP( p_bordel[ i ], p_bordel[ 15 - i ] );            }            break;        case 4:            p_bordel[ 12 ] -= 1;            p_bordel[ 13 ] += 1;            p_bordel[ 2 ] -= 0x64;            p_bordel[ 3 ] += 0x64;            TinyShuffle8( p_bordel );            return;    }    for( i = 0, j = 0; i < 16; i++ )    {        if( p_bordel[ i ] > p_bordel[ j ] )        {            j = i;        }    }    switch( p_bordel[ j ] % 100 )    {        case 0:            SWAP( p_bordel[ 0 ], p_bordel[ j ] );            break;        case 8:            p_bordel[ 1 ] >>= 1;            p_bordel[ 2 ] <<= 1;            p_bordel[ 14 ] >>= 3;            p_bordel[ 15 ] <<= 4;            break;        case 57:            p_bordel[ j ] += p_bordel[ 13 ];            break;        case 76:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -