static void decode_block_params(DiracContext *s, DiracArith arith[8], DiracBlock *block,

                                int stride, int x, int y)

{

    int i;



    block->ref  = pred_block_mode(block, stride, x, y, DIRAC_REF_MASK_REF1);

    block->ref ^= dirac_get_arith_bit(arith, CTX_PMODE_REF1);



    if (s->num_refs == 2) {

        block->ref |= pred_block_mode(block, stride, x, y, DIRAC_REF_MASK_REF2);

        block->ref ^= dirac_get_arith_bit(arith, CTX_PMODE_REF2) << 1;

    }



    if (!block->ref) {

        pred_block_dc(block, stride, x, y);

        for (i = 0; i < 3; i++)

            block->u.dc[i] += dirac_get_arith_int(arith+1+i, CTX_DC_F1, CTX_DC_DATA);

        return;

    }



    if (s->globalmc_flag) {

        block->ref |= pred_block_mode(block, stride, x, y, DIRAC_REF_MASK_GLOBAL);

        block->ref ^= dirac_get_arith_bit(arith, CTX_GLOBAL_BLOCK) << 2;

    }



    for (i = 0; i < s->num_refs; i++)

        if (block->ref & (i+1)) {

            if (block->ref & DIRAC_REF_MASK_GLOBAL) {

                global_mv(s, block, x, y, i);

            } else {

                pred_mv(block, stride, x, y, i);

                block->u.mv[i][0] += dirac_get_arith_int(arith + 4 + 2 * i, CTX_MV_F1, CTX_MV_DATA);

                block->u.mv[i][1] += dirac_get_arith_int(arith + 5 + 2 * i, CTX_MV_F1, CTX_MV_DATA);

            }

        }

}

static void decode_block_params(DiracContext *s, DiracArith arith[8], DiracBlock *block,

                                int stride, int x, int y)

{

    int i;



    block->ref  = pred_block_mode(block, stride, x, y, DIRAC_REF_MASK_REF1);

    block->ref ^= dirac_get_arith_bit(arith, CTX_PMODE_REF1);



    if (s->num_refs == 2) {

        block->ref |= pred_block_mode(block, stride, x, y, DIRAC_REF_MASK_REF2);

        block->ref ^= dirac_get_arith_bit(arith, CTX_PMODE_REF2) << 1;

    }



    if (!block->ref) {

        pred_block_dc(block, stride, x, y);

        for (i = 0; i < 3; i++)

            block->u.dc[i] += dirac_get_arith_int(arith+1+i, CTX_DC_F1, CTX_DC_DATA);

        return;

    }



    if (s->globalmc_flag) {

        block->ref |= pred_block_mode(block, stride, x, y, DIRAC_REF_MASK_GLOBAL);

        block->ref ^= dirac_get_arith_bit(arith, CTX_GLOBAL_BLOCK) << 2;

    }



    for (i = 0; i < s->num_refs; i++)

        if (block->ref & (i+1)) {

            if (block->ref & DIRAC_REF_MASK_GLOBAL) {

                global_mv(s, block, x, y, i);

            } else {

                pred_mv(block, stride, x, y, i);

                block->u.mv[i][0] += dirac_get_arith_int(arith + 4 + 2 * i, CTX_MV_F1, CTX_MV_DATA);

                block->u.mv[i][1] += dirac_get_arith_int(arith + 5 + 2 * i, CTX_MV_F1, CTX_MV_DATA);

            }

        }

}

            block->u.dc[i] += dirac_get_arith_int(arith+1+i, CTX_DC_F1, CTX_DC_DATA);
static void FUNC_0(DiracContext *VAR_0, DiracArith VAR_1[8], DiracBlock *VAR_2,

                                int VAR_3, int VAR_4, int VAR_5)

{

    int VAR_6;



    VAR_2->ref  = pred_block_mode(VAR_2, VAR_3, VAR_4, VAR_5, DIRAC_REF_MASK_REF1);

    VAR_2->ref ^= dirac_get_arith_bit(VAR_1, CTX_PMODE_REF1);



    if (VAR_0->num_refs == 2) {

        VAR_2->ref |= pred_block_mode(VAR_2, VAR_3, VAR_4, VAR_5, DIRAC_REF_MASK_REF2);

        VAR_2->ref ^= dirac_get_arith_bit(VAR_1, CTX_PMODE_REF2) << 1;

    }



    if (!VAR_2->ref) {

        pred_block_dc(VAR_2, VAR_3, VAR_4, VAR_5);

        for (VAR_6 = 0; VAR_6 < 3; VAR_6++)

            VAR_2->u.dc[VAR_6] += dirac_get_arith_int(VAR_1+1+VAR_6, CTX_DC_F1, CTX_DC_DATA);

        return;

    }



    if (VAR_0->globalmc_flag) {

        VAR_2->ref |= pred_block_mode(VAR_2, VAR_3, VAR_4, VAR_5, DIRAC_REF_MASK_GLOBAL);

        VAR_2->ref ^= dirac_get_arith_bit(VAR_1, CTX_GLOBAL_BLOCK) << 2;

    }



    for (VAR_6 = 0; VAR_6 < VAR_0->num_refs; VAR_6++)

        if (VAR_2->ref & (VAR_6+1)) {

            if (VAR_2->ref & DIRAC_REF_MASK_GLOBAL) {

                global_mv(VAR_0, VAR_2, VAR_4, VAR_5, VAR_6);

            } else {

                pred_mv(VAR_2, VAR_3, VAR_4, VAR_5, VAR_6);

                VAR_2->u.mv[VAR_6][0] += dirac_get_arith_int(VAR_1 + 4 + 2 * VAR_6, CTX_MV_F1, CTX_MV_DATA);

                VAR_2->u.mv[VAR_6][1] += dirac_get_arith_int(VAR_1 + 5 + 2 * VAR_6, CTX_MV_F1, CTX_MV_DATA);

            }

        }

}

static void FUNC_0(DiracContext *VAR_0, DiracArith VAR_1[8], DiracBlock *VAR_2,
int VAR_3, int VAR_4, int VAR_5)
{ int VAR_6; VAR_2->ref  = pred_block_mode(VAR_2, VAR_3, VAR_4, VAR_5, DIRAC_REF_MASK_REF1); VAR_2->ref ^= dirac_get_arith_bit(VAR_1, CTX_PMODE_REF1); if (VAR_0->num_refs == 2) { VAR_2->ref |= pred_block_mode(VAR_2, VAR_3, VAR_4, VAR_5, DIRAC_REF_MASK_REF2); VAR_2->ref ^= dirac_get_arith_bit(VAR_1, CTX_PMODE_REF2) << 1; } if (!VAR_2->ref) { pred_block_dc(VAR_2, VAR_3, VAR_4, VAR_5); for (VAR_6 = 0; VAR_6 < 3; VAR_6++) VAR_2->u.dc[VAR_6] += dirac_get_arith_int(VAR_1+1+VAR_6, CTX_DC_F1, CTX_DC_DATA); return; } if (VAR_0->globalmc_flag) { VAR_2->ref |= pred_block_mode(VAR_2, VAR_3, VAR_4, VAR_5, DIRAC_REF_MASK_GLOBAL); VAR_2->ref ^= dirac_get_arith_bit(VAR_1, CTX_GLOBAL_BLOCK) << 2; } for (VAR_6 = 0; VAR_6 < VAR_0->num_refs; VAR_6++) if (VAR_2->ref & (VAR_6+1)) { if (VAR_2->ref & DIRAC_REF_MASK_GLOBAL) { global_mv(VAR_0, VAR_2, VAR_4, VAR_5, VAR_6); } else { pred_mv(VAR_2, VAR_3, VAR_4, VAR_5, VAR_6); VAR_2->u.mv[VAR_6][0] += dirac_get_arith_int(VAR_1 + 4 + 2 * VAR_6, CTX_MV_F1, CTX_MV_DATA); VAR_2->u.mv[VAR_6][1] += dirac_get_arith_int(VAR_1 + 5 + 2 * VAR_6, CTX_MV_F1, CTX_MV_DATA); } } }