static void end_ebml_master_crc32(AVIOContext *pb, AVIOContext **dyn_cp, MatroskaMuxContext *mkv,

                                  ebml_master master)

{

    uint8_t *buf, crc[4];

    int size;



    if (pb->seekable) {

        size = avio_close_dyn_buf(*dyn_cp, &buf);

        if (mkv->write_crc && mkv->mode != MODE_WEBM) {

            AV_WL32(crc, av_crc(av_crc_get_table(AV_CRC_32_IEEE_LE), UINT32_MAX, buf, size) ^ UINT32_MAX);

            put_ebml_binary(pb, EBML_ID_CRC32, crc, sizeof(crc));

        }

        avio_write(pb, buf, size);

        end_ebml_master(pb, master);

    } else {

        end_ebml_master(*dyn_cp, master);

        size = avio_close_dyn_buf(*dyn_cp, &buf);

        avio_write(pb, buf, size);

    }

    av_free(buf);

    *dyn_cp = NULL;

}

static void end_ebml_master_crc32(AVIOContext *pb, AVIOContext **dyn_cp, MatroskaMuxContext *mkv,

                                  ebml_master master)

{

    uint8_t *buf, crc[4];

    int size;



    if (pb->seekable) {

        size = avio_close_dyn_buf(*dyn_cp, &buf);

        if (mkv->write_crc && mkv->mode != MODE_WEBM) {

            AV_WL32(crc, av_crc(av_crc_get_table(AV_CRC_32_IEEE_LE), UINT32_MAX, buf, size) ^ UINT32_MAX);

            put_ebml_binary(pb, EBML_ID_CRC32, crc, sizeof(crc));

        }

        avio_write(pb, buf, size);

        end_ebml_master(pb, master);

    } else {

        end_ebml_master(*dyn_cp, master);

        size = avio_close_dyn_buf(*dyn_cp, &buf);

        avio_write(pb, buf, size);

    }

    av_free(buf);

    *dyn_cp = NULL;

}

static void FUNC_0(AVIOContext *VAR_0, AVIOContext **VAR_1, MatroskaMuxContext *VAR_2,

                                  ebml_master VAR_3)

{

    uint8_t *buf, crc[4];

    int VAR_4;



    if (VAR_0->seekable) {

        VAR_4 = avio_close_dyn_buf(*VAR_1, &buf);

        if (VAR_2->write_crc && VAR_2->mode != MODE_WEBM) {

            AV_WL32(crc, av_crc(av_crc_get_table(AV_CRC_32_IEEE_LE), UINT32_MAX, buf, VAR_4) ^ UINT32_MAX);

            put_ebml_binary(VAR_0, EBML_ID_CRC32, crc, sizeof(crc));

        }

        avio_write(VAR_0, buf, VAR_4);

        end_ebml_master(VAR_0, VAR_3);

    } else {

        end_ebml_master(*VAR_1, VAR_3);

        VAR_4 = avio_close_dyn_buf(*VAR_1, &buf);

        avio_write(VAR_0, buf, VAR_4);

    }

    av_free(buf);

    *VAR_1 = NULL;

}

static void FUNC_0(AVIOContext *VAR_0, AVIOContext **VAR_1, MatroskaMuxContext *VAR_2,
ebml_master VAR_3)
{ uint8_t *buf, crc[4]; int VAR_4; if (VAR_0->seekable) { VAR_4 = avio_close_dyn_buf(*VAR_1, &buf); if (VAR_2->write_crc && VAR_2->mode != MODE_WEBM) { AV_WL32(crc, av_crc(av_crc_get_table(AV_CRC_32_IEEE_LE), UINT32_MAX, buf, VAR_4) ^ UINT32_MAX); put_ebml_binary(VAR_0, EBML_ID_CRC32, crc, sizeof(crc)); } avio_write(VAR_0, buf, VAR_4); end_ebml_master(VAR_0, VAR_3); } else { end_ebml_master(*VAR_1, VAR_3); VAR_4 = avio_close_dyn_buf(*VAR_1, &buf); avio_write(VAR_0, buf, VAR_4); } av_free(buf); *VAR_1 = NULL; }