static int ipvideo_decode_block_opcode_0xA(IpvideoContext *s)
{
    int x, y;
    unsigned char P[16];
    unsigned char B[16];
    int flags = 0;
    int shifter = 0;
    int index;
    int split;
    int lower_half;
    CHECK_STREAM_PTR(4);
    for (y = 0; y < 4; y++)
        P[y] = *s->stream_ptr++;
    if (P[0] <= P[1]) {
        CHECK_STREAM_PTR(28);
        for (y = 0; y < 4; y++)
            B[y] = *s->stream_ptr++;
        for (y = 4; y < 16; y += 4) {
            for (x = y; x < y + 4; x++)
                P[x] = *s->stream_ptr++;
            for (x = y; x < y + 4; x++)
                B[x] = *s->stream_ptr++;
        }
        for (y = 0; y < 8; y++) {
            lower_half = (y >= 4) ? 4 : 0;
            flags = (B[y + 8] << 8) | B[y];
            for (x = 0, shifter = 0; x < 8; x++, shifter += 2) {
                split = (x >= 4) ? 8 : 0;
                index = split + lower_half + ((flags >> shifter) & 0x03);
                *s->pixel_ptr++ = P[index];
            }
            s->pixel_ptr += s->line_inc;
        }
    } else {
        CHECK_STREAM_PTR(20);
        for (y = 0; y < 8; y++)
            B[y] = *s->stream_ptr++;
        for (y = 4; y < 8; y++)
            P[y] = *s->stream_ptr++;
        for (y = 8; y < 16; y++)
            B[y] = *s->stream_ptr++;
        if (P[4] <= P[5]) {
            for (y = 0; y < 8; y++) {
                flags = (B[y + 8] << 8) | B[y];
                split = 0;
                for (x = 0, shifter = 0; x < 8; x++, shifter += 2) {
                    if (x == 4)
                        split = 4;
                    *s->pixel_ptr++ = P[split + ((flags >> shifter) & 0x03)];
                }
                s->pixel_ptr += s->line_inc;
            }
        } else {
            split = 0;
            for (y = 0; y < 8; y++) {
                flags = (B[y * 2 + 1] << 8) | B[y * 2];
                if (y == 4)
                    split = 4;
                for (x = 0, shifter = 0; x < 8; x++, shifter += 2)
                    *s->pixel_ptr++ = P[split + ((flags >> shifter) & 0x03)];
                s->pixel_ptr += s->line_inc;
            }
        }
    }
    return 0;
}
['static int ipvideo_decode_block_opcode_0xA(IpvideoContext *s)\n{\n    int x, y;\n    unsigned char P[16];\n    unsigned char B[16];\n    int flags = 0;\n    int shifter = 0;\n    int index;\n    int split;\n    int lower_half;\n    CHECK_STREAM_PTR(4);\n    for (y = 0; y < 4; y++)\n        P[y] = *s->stream_ptr++;\n    if (P[0] <= P[1]) {\n        CHECK_STREAM_PTR(28);\n        for (y = 0; y < 4; y++)\n            B[y] = *s->stream_ptr++;\n        for (y = 4; y < 16; y += 4) {\n            for (x = y; x < y + 4; x++)\n                P[x] = *s->stream_ptr++;\n            for (x = y; x < y + 4; x++)\n                B[x] = *s->stream_ptr++;\n        }\n        for (y = 0; y < 8; y++) {\n            lower_half = (y >= 4) ? 4 : 0;\n            flags = (B[y + 8] << 8) | B[y];\n            for (x = 0, shifter = 0; x < 8; x++, shifter += 2) {\n                split = (x >= 4) ? 8 : 0;\n                index = split + lower_half + ((flags >> shifter) & 0x03);\n                *s->pixel_ptr++ = P[index];\n            }\n            s->pixel_ptr += s->line_inc;\n        }\n    } else {\n        CHECK_STREAM_PTR(20);\n        for (y = 0; y < 8; y++)\n            B[y] = *s->stream_ptr++;\n        for (y = 4; y < 8; y++)\n            P[y] = *s->stream_ptr++;\n        for (y = 8; y < 16; y++)\n            B[y] = *s->stream_ptr++;\n        if (P[4] <= P[5]) {\n            for (y = 0; y < 8; y++) {\n                flags = (B[y + 8] << 8) | B[y];\n                split = 0;\n                for (x = 0, shifter = 0; x < 8; x++, shifter += 2) {\n                    if (x == 4)\n                        split = 4;\n                    *s->pixel_ptr++ = P[split + ((flags >> shifter) & 0x03)];\n                }\n                s->pixel_ptr += s->line_inc;\n            }\n        } else {\n            split = 0;\n            for (y = 0; y < 8; y++) {\n                flags = (B[y * 2 + 1] << 8) | B[y * 2];\n                if (y == 4)\n                    split = 4;\n                for (x = 0, shifter = 0; x < 8; x++, shifter += 2)\n                    *s->pixel_ptr++ = P[split + ((flags >> shifter) & 0x03)];\n                s->pixel_ptr += s->line_inc;\n            }\n        }\n    }\n    return 0;\n}']