static int xbm_decode_frame(AVCodecContext *avctx, void *data,

                            int *got_frame, AVPacket *avpkt)

{

    AVFrame *p = data;

    const uint8_t *end, *ptr = avpkt->data;

    uint8_t *dst;

    int ret, linesize, i, j;



    end = avpkt->data + avpkt->size;

    while (!avctx->width || !avctx->height) {

        char name[256];

        int number, len;



        ptr += strcspn(ptr, "#");

        if (sscanf(ptr, "#define %256s %u", name, &number) != 2) {

            av_log(avctx, AV_LOG_ERROR, "Unexpected preprocessor directive\n");

            return AVERROR_INVALIDDATA;

        }



        len = strlen(name);

        if ((len > 6) && !avctx->height && !memcmp(name + len - 7, "_height", 7)) {

                avctx->height = number;

        } else if ((len > 5) && !avctx->width && !memcmp(name + len - 6, "_width", 6)) {

                avctx->width = number;

        } else {

            av_log(avctx, AV_LOG_ERROR, "Unknown define '%s'\n", name);

            return AVERROR_INVALIDDATA;

        }

        ptr += strcspn(ptr, "\n\r") + 1;

    }



    if ((ret = ff_get_buffer(avctx, p, 0)) < 0)

        return ret;



    // goto start of image data

    ptr += strcspn(ptr, "{") + 1;



    linesize = (avctx->width + 7) / 8;

    for (i = 0; i < avctx->height; i++) {

        dst = p->data[0] + i * p->linesize[0];

        for (j = 0; j < linesize; j++) {

            uint8_t val;



            ptr += strcspn(ptr, "x") + 1;

            if (ptr < end && av_isxdigit(*ptr)) {

                val = convert(*ptr);

                ptr++;

                if (av_isxdigit(*ptr))

                    val = (val << 4) + convert(*ptr);

                *dst++ = ff_reverse[val];

            } else {

                av_log(avctx, AV_LOG_ERROR, "Unexpected data at '%.8s'\n", ptr);

                return AVERROR_INVALIDDATA;

            }

        }

    }



    p->key_frame = 1;

    p->pict_type = AV_PICTURE_TYPE_I;



    *got_frame       = 1;



    return avpkt->size;

}

static int xbm_decode_frame(AVCodecContext *avctx, void *data,

                            int *got_frame, AVPacket *avpkt)

{

    AVFrame *p = data;

    const uint8_t *end, *ptr = avpkt->data;

    uint8_t *dst;

    int ret, linesize, i, j;



    end = avpkt->data + avpkt->size;

    while (!avctx->width || !avctx->height) {

        char name[256];

        int number, len;



        ptr += strcspn(ptr, "#");

        if (sscanf(ptr, "#define %256s %u", name, &number) != 2) {

            av_log(avctx, AV_LOG_ERROR, "Unexpected preprocessor directive\n");

            return AVERROR_INVALIDDATA;

        }



        len = strlen(name);

        if ((len > 6) && !avctx->height && !memcmp(name + len - 7, "_height", 7)) {

                avctx->height = number;

        } else if ((len > 5) && !avctx->width && !memcmp(name + len - 6, "_width", 6)) {

                avctx->width = number;

        } else {

            av_log(avctx, AV_LOG_ERROR, "Unknown define '%s'\n", name);

            return AVERROR_INVALIDDATA;

        }

        ptr += strcspn(ptr, "\n\r") + 1;

    }



    if ((ret = ff_get_buffer(avctx, p, 0)) < 0)

        return ret;



    

    ptr += strcspn(ptr, "{") + 1;



    linesize = (avctx->width + 7) / 8;

    for (i = 0; i < avctx->height; i++) {

        dst = p->data[0] + i * p->linesize[0];

        for (j = 0; j < linesize; j++) {

            uint8_t val;



            ptr += strcspn(ptr, "x") + 1;

            if (ptr < end && av_isxdigit(*ptr)) {

                val = convert(*ptr);

                ptr++;

                if (av_isxdigit(*ptr))

                    val = (val << 4) + convert(*ptr);

                *dst++ = ff_reverse[val];

            } else {

                av_log(avctx, AV_LOG_ERROR, "Unexpected data at '%.8s'\n", ptr);

                return AVERROR_INVALIDDATA;

            }

        }

    }



    p->key_frame = 1;

    p->pict_type = AV_PICTURE_TYPE_I;



    *got_frame       = 1;



    return avpkt->size;

}

        if (sscanf(ptr, "#define %256s %u", name, &number) != 2) {
static int FUNC_0(AVCodecContext *VAR_0, void *VAR_1,

                            int *VAR_2, AVPacket *VAR_3)

{

    AVFrame *p = VAR_1;

    const uint8_t *VAR_4, *ptr = VAR_3->VAR_1;

    uint8_t *dst;

    int VAR_5, VAR_6, VAR_7, VAR_8;



    VAR_4 = VAR_3->VAR_1 + VAR_3->size;

    while (!VAR_0->width || !VAR_0->height) {

        char VAR_9[256];

        int VAR_10, VAR_11;



        ptr += strcspn(ptr, "#");

        if (sscanf(ptr, "#define %256s %u", VAR_9, &VAR_10) != 2) {

            av_log(VAR_0, AV_LOG_ERROR, "Unexpected preprocessor directive\n");

            return AVERROR_INVALIDDATA;

        }



        VAR_11 = strlen(VAR_9);

        if ((VAR_11 > 6) && !VAR_0->height && !memcmp(VAR_9 + VAR_11 - 7, "_height", 7)) {

                VAR_0->height = VAR_10;

        } else if ((VAR_11 > 5) && !VAR_0->width && !memcmp(VAR_9 + VAR_11 - 6, "_width", 6)) {

                VAR_0->width = VAR_10;

        } else {

            av_log(VAR_0, AV_LOG_ERROR, "Unknown define '%s'\n", VAR_9);

            return AVERROR_INVALIDDATA;

        }

        ptr += strcspn(ptr, "\n\r") + 1;

    }



    if ((VAR_5 = ff_get_buffer(VAR_0, p, 0)) < 0)

        return VAR_5;



    

    ptr += strcspn(ptr, "{") + 1;



    VAR_6 = (VAR_0->width + 7) / 8;

    for (VAR_7 = 0; VAR_7 < VAR_0->height; VAR_7++) {

        dst = p->VAR_1[0] + VAR_7 * p->VAR_6[0];

        for (VAR_8 = 0; VAR_8 < VAR_6; VAR_8++) {

            uint8_t val;



            ptr += strcspn(ptr, "x") + 1;

            if (ptr < VAR_4 && av_isxdigit(*ptr)) {

                val = convert(*ptr);

                ptr++;

                if (av_isxdigit(*ptr))

                    val = (val << 4) + convert(*ptr);

                *dst++ = ff_reverse[val];

            } else {

                av_log(VAR_0, AV_LOG_ERROR, "Unexpected VAR_1 at '%.8s'\n", ptr);

                return AVERROR_INVALIDDATA;

            }

        }

    }



    p->key_frame = 1;

    p->pict_type = AV_PICTURE_TYPE_I;



    *VAR_2       = 1;



    return VAR_3->size;

}

static int FUNC_0(AVCodecContext *VAR_0, void *VAR_1,
int *VAR_2, AVPacket *VAR_3)
{ AVFrame *p = VAR_1; const uint8_t *VAR_4, *ptr = VAR_3->VAR_1; uint8_t *dst; int VAR_5, VAR_6, VAR_7, VAR_8; VAR_4 = VAR_3->VAR_1 + VAR_3->size; while (!VAR_0->width || !VAR_0->height) { char VAR_9[256]; int VAR_10, VAR_11; ptr += strcspn(ptr, "#"); if (sscanf(ptr, "#define %256s %u", VAR_9, &VAR_10) != 2) { av_log(VAR_0, AV_LOG_ERROR, "Unexpected preprocessor directive\n"); return AVERROR_INVALIDDATA; } VAR_11 = strlen(VAR_9); if ((VAR_11 > 6) && !VAR_0->height && !memcmp(VAR_9 + VAR_11 - 7, "_height", 7)) { VAR_0->height = VAR_10; } else if ((VAR_11 > 5) && !VAR_0->width && !memcmp(VAR_9 + VAR_11 - 6, "_width", 6)) { VAR_0->width = VAR_10; } else { av_log(VAR_0, AV_LOG_ERROR, "Unknown define '%s'\n", VAR_9); return AVERROR_INVALIDDATA; } ptr += strcspn(ptr, "\n\r") + 1; } if ((VAR_5 = ff_get_buffer(VAR_0, p, 0)) < 0)
return VAR_5; ptr += strcspn(ptr, "{") + 1; VAR_6 = (VAR_0->width + 7) / 8; for (VAR_7 = 0; VAR_7 < VAR_0->height; VAR_7++) { dst = p->VAR_1[0] + VAR_7 * p->VAR_6[0]; for (VAR_8 = 0; VAR_8 < VAR_6; VAR_8++) { uint8_t val; ptr += strcspn(ptr, "x") + 1; if (ptr < VAR_4 && av_isxdigit(*ptr)) { val = convert(*ptr); ptr++; if (av_isxdigit(*ptr))
val = (val << 4) + convert(*ptr); *dst++ = ff_reverse[val]; } else { av_log(VAR_0, AV_LOG_ERROR, "Unexpected VAR_1 at '%.8s'\n", ptr); return AVERROR_INVALIDDATA; } } } p->key_frame = 1; p->pict_type = AV_PICTURE_TYPE_I; *VAR_2       = 1; return VAR_3->size; }