void av_xtea_crypt(AVXTEA *ctx, uint8_t *dst, const uint8_t *src, int count,

                   uint8_t *iv, int decrypt)

{

    int i;



    while (count > 0) {

        if (decrypt) {

            xtea_crypt_ecb(ctx, dst, src, decrypt);



            if (iv) {

                for (i = 0; i < 8; i++)

                    dst[i] = dst[i] ^ iv[i];

                memcpy(iv, src, 8);

            }

        } else {

            if (iv) {

                for (i = 0; i < 8; i++)

                    dst[i] = src[i] ^ iv[i];

                xtea_crypt_ecb(ctx, dst, dst, decrypt);

                memcpy(iv, dst, 8);

            } else {

                xtea_crypt_ecb(ctx, dst, src, decrypt);

            }

        }



        src   += 8;

        dst   += 8;

        count -= 8;

    }

}

void av_xtea_crypt(AVXTEA *ctx, uint8_t *dst, const uint8_t *src, int count,

                   uint8_t *iv, int decrypt)

{

    int i;



    while (count > 0) {

        if (decrypt) {

            xtea_crypt_ecb(ctx, dst, src, decrypt);



            if (iv) {

                for (i = 0; i < 8; i++)

                    dst[i] = dst[i] ^ iv[i];

                memcpy(iv, src, 8);

            }

        } else {

            if (iv) {

                for (i = 0; i < 8; i++)

                    dst[i] = src[i] ^ iv[i];

                xtea_crypt_ecb(ctx, dst, dst, decrypt);

                memcpy(iv, dst, 8);

            } else {

                xtea_crypt_ecb(ctx, dst, src, decrypt);

            }

        }



        src   += 8;

        dst   += 8;

        count -= 8;

    }

}

void FUNC_0(AVXTEA *VAR_0, uint8_t *VAR_1, const uint8_t *VAR_2, int VAR_3,

                   uint8_t *VAR_4, int VAR_5)

{

    int VAR_6;



    while (VAR_3 > 0) {

        if (VAR_5) {

            xtea_crypt_ecb(VAR_0, VAR_1, VAR_2, VAR_5);



            if (VAR_4) {

                for (VAR_6 = 0; VAR_6 < 8; VAR_6++)

                    VAR_1[VAR_6] = VAR_1[VAR_6] ^ VAR_4[VAR_6];

                memcpy(VAR_4, VAR_2, 8);

            }

        } else {

            if (VAR_4) {

                for (VAR_6 = 0; VAR_6 < 8; VAR_6++)

                    VAR_1[VAR_6] = VAR_2[VAR_6] ^ VAR_4[VAR_6];

                xtea_crypt_ecb(VAR_0, VAR_1, VAR_1, VAR_5);

                memcpy(VAR_4, VAR_1, 8);

            } else {

                xtea_crypt_ecb(VAR_0, VAR_1, VAR_2, VAR_5);

            }

        }



        VAR_2   += 8;

        VAR_1   += 8;

        VAR_3 -= 8;

    }

}

void FUNC_0(AVXTEA *VAR_0, uint8_t *VAR_1, const uint8_t *VAR_2, int VAR_3,
uint8_t *VAR_4, int VAR_5)
{ int VAR_6; while (VAR_3 > 0) { if (VAR_5) { xtea_crypt_ecb(VAR_0, VAR_1, VAR_2, VAR_5); if (VAR_4) { for (VAR_6 = 0; VAR_6 < 8; VAR_6++) VAR_1[VAR_6] = VAR_1[VAR_6] ^ VAR_4[VAR_6]; memcpy(VAR_4, VAR_2, 8); } } else { if (VAR_4) { for (VAR_6 = 0; VAR_6 < 8; VAR_6++) VAR_1[VAR_6] = VAR_2[VAR_6] ^ VAR_4[VAR_6]; xtea_crypt_ecb(VAR_0, VAR_1, VAR_1, VAR_5); memcpy(VAR_4, VAR_1, 8); } else { xtea_crypt_ecb(VAR_0, VAR_1, VAR_2, VAR_5); } } VAR_2   += 8; VAR_1   += 8; VAR_3 -= 8; } }