libavcodec/fmvc.c:165: error: Uninitialized Value
  The value read from opcode was never initialized.

libavcodec/fmvc.c:165:17: 
163.                 } while (len);
164. 
165.                 len = opcode & 3;
                     ^
166. 
167.                 if (!len) {

static int decode_type2(GetByteContext *gb, PutByteContext *pb)
{
    unsigned repeat = 0, first = 1, opcode;
    int i, len, pos;
    while (bytestream2_get_bytes_left(gb) > 0) {
        GetByteContext gbc;
        while (bytestream2_get_bytes_left(gb) > 0) {
            if (first) {
                first = 0;
                if (bytestream2_peek_byte(gb) > 17) {
                    len = bytestream2_get_byte(gb) - 17;
                    if (len < 4) {
                        do {
                            bytestream2_put_byte(pb, bytestream2_get_byte(gb));
                            --len;
                        } while (len);
                        opcode = bytestream2_peek_byte(gb);
                        continue;
                    } else {
                        do {
                            bytestream2_put_byte(pb, bytestream2_get_byte(gb));
                            --len;
                        } while (len);
                        opcode = bytestream2_peek_byte(gb);
                        if (opcode < 0x10) {
                            bytestream2_skip(gb, 1);
                            pos = - (opcode >> 2) - 4 * bytestream2_get_byte(gb) - 2049;
                            bytestream2_init(&gbc, pb->buffer_start, pb->buffer_end - pb->buffer_start);
                            bytestream2_seek(&gbc, bytestream2_tell_p(pb) + pos, SEEK_SET);
                            bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));
                            bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));
                            bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));
                            len = opcode & 3;
                            if (!len) {
                                repeat = 1;
                            } else {
                                do {
                                    bytestream2_put_byte(pb, bytestream2_get_byte(gb));
                                    --len;
                                } while (len);
                                opcode = bytestream2_peek_byte(gb);
                            }
                            continue;
                        }
                    }
                    repeat = 0;
                }
                repeat = 1;
            }
            if (repeat) {
                repeat = 0;
                opcode = bytestream2_peek_byte(gb);
                if (opcode < 0x10) {
                    bytestream2_skip(gb, 1);
                    if (!opcode) {
                        if (!bytestream2_peek_byte(gb)) {
                            do {
                                bytestream2_skip(gb, 1);
                                opcode += 255;
                            } while (!bytestream2_peek_byte(gb) && bytestream2_get_bytes_left(gb) > 0);
                        }
                        opcode += bytestream2_get_byte(gb) + 15;
                    }
                    bytestream2_put_le32(pb, bytestream2_get_le32(gb));
                    for (i = opcode - 1; i > 0; --i)
                        bytestream2_put_byte(pb, bytestream2_get_byte(gb));
                    opcode = bytestream2_peek_byte(gb);
                    if (opcode < 0x10) {
                        bytestream2_skip(gb, 1);
                        pos = - (opcode >> 2) - 4 * bytestream2_get_byte(gb) - 2049;
                        bytestream2_init(&gbc, pb->buffer_start, pb->buffer_end - pb->buffer_start);
                        bytestream2_seek(&gbc, bytestream2_tell_p(pb) + pos, SEEK_SET);
                        bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));
                        bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));
                        bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));
                        len = opcode & 3;
                        if (!len) {
                            repeat = 1;
                        } else {
                            do {
                                bytestream2_put_byte(pb, bytestream2_get_byte(gb));
                                --len;
                            } while (len);
                            opcode = bytestream2_peek_byte(gb);
                        }
                        continue;
                    }
                }
            }
            if (opcode >= 0x40) {
                bytestream2_skip(gb, 1);
                pos = - ((opcode >> 2) & 7) - 1 - 8 * bytestream2_get_byte(gb);
                len =    (opcode >> 5)      - 1;
                bytestream2_init(&gbc, pb->buffer_start, pb->buffer_end - pb->buffer_start);
                bytestream2_seek(&gbc, bytestream2_tell_p(pb) + pos, SEEK_SET);
                bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));
                bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));
                do {
                    bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));
                    --len;
                } while (len);
                len = opcode & 3;
                if (!len) {
                    repeat = 1;
                } else {
                    do {
                        bytestream2_put_byte(pb, bytestream2_get_byte(gb));
                        --len;
                    } while (len);
                    opcode = bytestream2_peek_byte(gb);
                }
                continue;
            } else if (opcode < 0x20) {
                break;
            }
            len = opcode & 0x1F;
            bytestream2_skip(gb, 1);
            if (!len) {
                if (!bytestream2_peek_byte(gb)) {
                    do {
                        bytestream2_skip(gb, 1);
                        len += 255;
                    } while (!bytestream2_peek_byte(gb) && bytestream2_get_bytes_left(gb) > 0);
                }
                len += bytestream2_get_byte(gb) + 31;
            }
            i = bytestream2_get_le16(gb);
            pos = - (i >> 2) - 1;
            bytestream2_init(&gbc, pb->buffer_start, pb->buffer_end - pb->buffer_start);
            bytestream2_seek(&gbc, bytestream2_tell_p(pb) + pos, SEEK_SET);
            if (len < 6 || bytestream2_tell_p(pb) - bytestream2_tell(&gbc) < 4) {
                bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));
                bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));
                do {
                    bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));
                    --len;
                } while (len);
            } else {
                bytestream2_put_le32(pb, bytestream2_get_le32(&gbc));
                for (len = len - 2; len; --len)
                    bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));
            }
            len = i & 3;
            if (!len) {
                repeat = 1;
            } else {
                do {
                    bytestream2_put_byte(pb, bytestream2_get_byte(gb));
                    --len;
                } while (len);
                opcode = bytestream2_peek_byte(gb);
            }
        }
        bytestream2_skip(gb, 1);
        if (opcode < 0x10) {
            pos = -(opcode >> 2) - 1 - 4 * bytestream2_get_byte(gb);
            bytestream2_init(&gbc, pb->buffer_start, pb->buffer_end - pb->buffer_start);
            bytestream2_seek(&gbc, bytestream2_tell_p(pb) + pos, SEEK_SET);
            bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));
            bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));
            len = opcode & 3;
            if (!len) {
                repeat = 1;
            } else {
                do {
                    bytestream2_put_byte(pb, bytestream2_get_byte(gb));
                    --len;
                } while (len);
                opcode = bytestream2_peek_byte(gb);
            }
            continue;
        }
        len = opcode & 7;
        if (!len) {
            if (!bytestream2_peek_byte(gb)) {
                do {
                    bytestream2_skip(gb, 1);
                    len += 255;
                } while (!bytestream2_peek_byte(gb) && bytestream2_get_bytes_left(gb) > 0);
            }
            len += bytestream2_get_byte(gb) + 7;
        }
        i = bytestream2_get_le16(gb);
        pos = bytestream2_tell_p(pb) - 2048 * (opcode & 8);
        pos = pos - (i >> 2);
        if (pos == bytestream2_tell_p(pb))
            break;
        pos = pos - 0x4000;
        bytestream2_init(&gbc, pb->buffer_start, pb->buffer_end - pb->buffer_start);
        bytestream2_seek(&gbc, pos, SEEK_SET);
        if (len < 6 || bytestream2_tell_p(pb) - bytestream2_tell(&gbc) < 4) {
            bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));
            bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));
            do {
                bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));
                --len;
            } while (len);
        } else {
            bytestream2_put_le32(pb, bytestream2_get_le32(&gbc));
            for (len = len - 2; len; --len)
                bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));
        }
        len = i & 3;
        if (!len) {
            repeat = 1;
        } else {
            do {
                bytestream2_put_byte(pb, bytestream2_get_byte(gb));
                --len;
            } while (len);
            opcode = bytestream2_peek_byte(gb);
        }
    }
    return 0;
}
['static int decode_type2(GetByteContext *gb, PutByteContext *pb)\n{\n    unsigned repeat = 0, first = 1, opcode;\n    int i, len, pos;\n    while (bytestream2_get_bytes_left(gb) > 0) {\n        GetByteContext gbc;\n        while (bytestream2_get_bytes_left(gb) > 0) {\n            if (first) {\n                first = 0;\n                if (bytestream2_peek_byte(gb) > 17) {\n                    len = bytestream2_get_byte(gb) - 17;\n                    if (len < 4) {\n                        do {\n                            bytestream2_put_byte(pb, bytestream2_get_byte(gb));\n                            --len;\n                        } while (len);\n                        opcode = bytestream2_peek_byte(gb);\n                        continue;\n                    } else {\n                        do {\n                            bytestream2_put_byte(pb, bytestream2_get_byte(gb));\n                            --len;\n                        } while (len);\n                        opcode = bytestream2_peek_byte(gb);\n                        if (opcode < 0x10) {\n                            bytestream2_skip(gb, 1);\n                            pos = - (opcode >> 2) - 4 * bytestream2_get_byte(gb) - 2049;\n                            bytestream2_init(&gbc, pb->buffer_start, pb->buffer_end - pb->buffer_start);\n                            bytestream2_seek(&gbc, bytestream2_tell_p(pb) + pos, SEEK_SET);\n                            bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));\n                            bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));\n                            bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));\n                            len = opcode & 3;\n                            if (!len) {\n                                repeat = 1;\n                            } else {\n                                do {\n                                    bytestream2_put_byte(pb, bytestream2_get_byte(gb));\n                                    --len;\n                                } while (len);\n                                opcode = bytestream2_peek_byte(gb);\n                            }\n                            continue;\n                        }\n                    }\n                    repeat = 0;\n                }\n                repeat = 1;\n            }\n            if (repeat) {\n                repeat = 0;\n                opcode = bytestream2_peek_byte(gb);\n                if (opcode < 0x10) {\n                    bytestream2_skip(gb, 1);\n                    if (!opcode) {\n                        if (!bytestream2_peek_byte(gb)) {\n                            do {\n                                bytestream2_skip(gb, 1);\n                                opcode += 255;\n                            } while (!bytestream2_peek_byte(gb) && bytestream2_get_bytes_left(gb) > 0);\n                        }\n                        opcode += bytestream2_get_byte(gb) + 15;\n                    }\n                    bytestream2_put_le32(pb, bytestream2_get_le32(gb));\n                    for (i = opcode - 1; i > 0; --i)\n                        bytestream2_put_byte(pb, bytestream2_get_byte(gb));\n                    opcode = bytestream2_peek_byte(gb);\n                    if (opcode < 0x10) {\n                        bytestream2_skip(gb, 1);\n                        pos = - (opcode >> 2) - 4 * bytestream2_get_byte(gb) - 2049;\n                        bytestream2_init(&gbc, pb->buffer_start, pb->buffer_end - pb->buffer_start);\n                        bytestream2_seek(&gbc, bytestream2_tell_p(pb) + pos, SEEK_SET);\n                        bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));\n                        bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));\n                        bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));\n                        len = opcode & 3;\n                        if (!len) {\n                            repeat = 1;\n                        } else {\n                            do {\n                                bytestream2_put_byte(pb, bytestream2_get_byte(gb));\n                                --len;\n                            } while (len);\n                            opcode = bytestream2_peek_byte(gb);\n                        }\n                        continue;\n                    }\n                }\n            }\n            if (opcode >= 0x40) {\n                bytestream2_skip(gb, 1);\n                pos = - ((opcode >> 2) & 7) - 1 - 8 * bytestream2_get_byte(gb);\n                len =    (opcode >> 5)      - 1;\n                bytestream2_init(&gbc, pb->buffer_start, pb->buffer_end - pb->buffer_start);\n                bytestream2_seek(&gbc, bytestream2_tell_p(pb) + pos, SEEK_SET);\n                bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));\n                bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));\n                do {\n                    bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));\n                    --len;\n                } while (len);\n                len = opcode & 3;\n                if (!len) {\n                    repeat = 1;\n                } else {\n                    do {\n                        bytestream2_put_byte(pb, bytestream2_get_byte(gb));\n                        --len;\n                    } while (len);\n                    opcode = bytestream2_peek_byte(gb);\n                }\n                continue;\n            } else if (opcode < 0x20) {\n                break;\n            }\n            len = opcode & 0x1F;\n            bytestream2_skip(gb, 1);\n            if (!len) {\n                if (!bytestream2_peek_byte(gb)) {\n                    do {\n                        bytestream2_skip(gb, 1);\n                        len += 255;\n                    } while (!bytestream2_peek_byte(gb) && bytestream2_get_bytes_left(gb) > 0);\n                }\n                len += bytestream2_get_byte(gb) + 31;\n            }\n            i = bytestream2_get_le16(gb);\n            pos = - (i >> 2) - 1;\n            bytestream2_init(&gbc, pb->buffer_start, pb->buffer_end - pb->buffer_start);\n            bytestream2_seek(&gbc, bytestream2_tell_p(pb) + pos, SEEK_SET);\n            if (len < 6 || bytestream2_tell_p(pb) - bytestream2_tell(&gbc) < 4) {\n                bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));\n                bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));\n                do {\n                    bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));\n                    --len;\n                } while (len);\n            } else {\n                bytestream2_put_le32(pb, bytestream2_get_le32(&gbc));\n                for (len = len - 2; len; --len)\n                    bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));\n            }\n            len = i & 3;\n            if (!len) {\n                repeat = 1;\n            } else {\n                do {\n                    bytestream2_put_byte(pb, bytestream2_get_byte(gb));\n                    --len;\n                } while (len);\n                opcode = bytestream2_peek_byte(gb);\n            }\n        }\n        bytestream2_skip(gb, 1);\n        if (opcode < 0x10) {\n            pos = -(opcode >> 2) - 1 - 4 * bytestream2_get_byte(gb);\n            bytestream2_init(&gbc, pb->buffer_start, pb->buffer_end - pb->buffer_start);\n            bytestream2_seek(&gbc, bytestream2_tell_p(pb) + pos, SEEK_SET);\n            bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));\n            bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));\n            len = opcode & 3;\n            if (!len) {\n                repeat = 1;\n            } else {\n                do {\n                    bytestream2_put_byte(pb, bytestream2_get_byte(gb));\n                    --len;\n                } while (len);\n                opcode = bytestream2_peek_byte(gb);\n            }\n            continue;\n        }\n        len = opcode & 7;\n        if (!len) {\n            if (!bytestream2_peek_byte(gb)) {\n                do {\n                    bytestream2_skip(gb, 1);\n                    len += 255;\n                } while (!bytestream2_peek_byte(gb) && bytestream2_get_bytes_left(gb) > 0);\n            }\n            len += bytestream2_get_byte(gb) + 7;\n        }\n        i = bytestream2_get_le16(gb);\n        pos = bytestream2_tell_p(pb) - 2048 * (opcode & 8);\n        pos = pos - (i >> 2);\n        if (pos == bytestream2_tell_p(pb))\n            break;\n        pos = pos - 0x4000;\n        bytestream2_init(&gbc, pb->buffer_start, pb->buffer_end - pb->buffer_start);\n        bytestream2_seek(&gbc, pos, SEEK_SET);\n        if (len < 6 || bytestream2_tell_p(pb) - bytestream2_tell(&gbc) < 4) {\n            bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));\n            bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));\n            do {\n                bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));\n                --len;\n            } while (len);\n        } else {\n            bytestream2_put_le32(pb, bytestream2_get_le32(&gbc));\n            for (len = len - 2; len; --len)\n                bytestream2_put_byte(pb, bytestream2_get_byte(&gbc));\n        }\n        len = i & 3;\n        if (!len) {\n            repeat = 1;\n        } else {\n            do {\n                bytestream2_put_byte(pb, bytestream2_get_byte(gb));\n                --len;\n            } while (len);\n            opcode = bytestream2_peek_byte(gb);\n        }\n    }\n    return 0;\n}']