static void mm_decode_inter(MmContext * s, int half_horiz, int half_vert, const uint8_t *buf, int buf_size)
{
    const int data_ptr = 2 + AV_RL16(&buf[0]);
    int d, r, y;
    d = data_ptr; r = 2; y = 0;
    while(r < data_ptr) {
        int i, j;
        int length = buf[r] & 0x7f;
        int x = buf[r+1] + ((buf[r] & 0x80) << 1);
        r += 2;
        if (length==0) {
            y += x;
            continue;
        }
        for(i=0; i<length; i++) {
            for(j=0; j<8; j++) {
                int replace = (buf[r+i] >> (7-j)) & 1;
                if (replace) {
                    int color = buf[d];
                    s->frame.data[0][y*s->frame.linesize[0] + x] = color;
                    if (half_horiz)
                        s->frame.data[0][y*s->frame.linesize[0] + x + 1] = color;
                    if (half_vert) {
                        s->frame.data[0][(y+1)*s->frame.linesize[0] + x] = color;
                        if (half_horiz)
                            s->frame.data[0][(y+1)*s->frame.linesize[0] + x + 1] = color;
                    }
                    d++;
                }
                x += 1 + half_horiz;
            }
        }
        r += length;
        y += 1 + half_vert;
    }
}
static void mm_decode_inter(MmContext * s, int half_horiz, int half_vert, const uint8_t *buf, int buf_size)
{
    const int data_ptr = 2 + AV_RL16(&buf[0]);
    int d, r, y;
    d = data_ptr; r = 2; y = 0;
    while(r < data_ptr) {
        int i, j;
        int length = buf[r] & 0x7f;
        int x = buf[r+1] + ((buf[r] & 0x80) << 1);
        r += 2;
        if (length==0) {
            y += x;
            continue;
        }
        for(i=0; i<length; i++) {
            for(j=0; j<8; j++) {
                int replace = (buf[r+i] >> (7-j)) & 1;
                if (replace) {
                    int color = buf[d];
                    s->frame.data[0][y*s->frame.linesize[0] + x] = color;
                    if (half_horiz)
                        s->frame.data[0][y*s->frame.linesize[0] + x + 1] = color;
                    if (half_vert) {
                        s->frame.data[0][(y+1)*s->frame.linesize[0] + x] = color;
                        if (half_horiz)
                            s->frame.data[0][(y+1)*s->frame.linesize[0] + x + 1] = color;
                    }
                    d++;
                }
                x += 1 + half_horiz;
            }
        }
        r += length;
        y += 1 + half_vert;
    }
}
static void FUNC_0(MmContext * VAR_0, int VAR_1, int VAR_2, const uint8_t *VAR_3, int VAR_4)
{
    const int VAR_5 = 2 + AV_RL16(&VAR_3[0]);
    int VAR_6, VAR_7, VAR_8;
    VAR_6 = VAR_5; VAR_7 = 2; VAR_8 = 0;
    while(VAR_7 < VAR_5) {
        int VAR_9, VAR_10;
        int VAR_11 = VAR_3[VAR_7] & 0x7f;
        int VAR_12 = VAR_3[VAR_7+1] + ((VAR_3[VAR_7] & 0x80) << 1);
        VAR_7 += 2;
        if (VAR_11==0) {
            VAR_8 += VAR_12;
            continue;
        }
        for(VAR_9=0; VAR_9<VAR_11; VAR_9++) {
            for(VAR_10=0; VAR_10<8; VAR_10++) {
                int VAR_13 = (VAR_3[VAR_7+VAR_9] >> (7-VAR_10)) & 1;
                if (VAR_13) {
                    int VAR_14 = VAR_3[VAR_6];
                    VAR_0->frame.data[0][VAR_8*VAR_0->frame.linesize[0] + VAR_12] = VAR_14;
                    if (VAR_1)
                        VAR_0->frame.data[0][VAR_8*VAR_0->frame.linesize[0] + VAR_12 + 1] = VAR_14;
                    if (VAR_2) {
                        VAR_0->frame.data[0][(VAR_8+1)*VAR_0->frame.linesize[0] + VAR_12] = VAR_14;
                        if (VAR_1)
                            VAR_0->frame.data[0][(VAR_8+1)*VAR_0->frame.linesize[0] + VAR_12 + 1] = VAR_14;
                    }
                    VAR_6++;
                }
                VAR_12 += 1 + VAR_1;
            }
        }
        VAR_7 += VAR_11;
        VAR_8 += 1 + VAR_2;
    }
}
static void FUNC_0(MmContext * VAR_0, int VAR_1, int VAR_2, const uint8_t *VAR_3, int VAR_4)
{ const int VAR_5 = 2 + AV_RL16(&VAR_3[0]); int VAR_6, VAR_7, VAR_8; VAR_6 = VAR_5; VAR_7 = 2; VAR_8 = 0; while(VAR_7 < VAR_5) { int VAR_9, VAR_10; int VAR_11 = VAR_3[VAR_7] & 0x7f; int VAR_12 = VAR_3[VAR_7+1] + ((VAR_3[VAR_7] & 0x80) << 1); VAR_7 += 2; if (VAR_11==0) { VAR_8 += VAR_12; continue; } for(VAR_9=0; VAR_9<VAR_11; VAR_9++) { for(VAR_10=0; VAR_10<8; VAR_10++) { int VAR_13 = (VAR_3[VAR_7+VAR_9] >> (7-VAR_10)) & 1; if (VAR_13) { int VAR_14 = VAR_3[VAR_6]; VAR_0->frame.data[0][VAR_8*VAR_0->frame.linesize[0] + VAR_12] = VAR_14; if (VAR_1)
VAR_0->frame.data[0][VAR_8*VAR_0->frame.linesize[0] + VAR_12 + 1] = VAR_14; if (VAR_2) { VAR_0->frame.data[0][(VAR_8+1)*VAR_0->frame.linesize[0] + VAR_12] = VAR_14; if (VAR_1)
VAR_0->frame.data[0][(VAR_8+1)*VAR_0->frame.linesize[0] + VAR_12 + 1] = VAR_14; } VAR_6++; } VAR_12 += 1 + VAR_1; } } VAR_7 += VAR_11; VAR_8 += 1 + VAR_2; } }