// File: karel-brinda[P]ococo/ext/htslib/cram/cram_codecs.c
// Function: cram_external_encode_store
int cram_external_encode_store(cram_codec *c, cram_block *b, char *prefix,
			       int version) {
    char tmp[99], *tp = tmp;
    int len = 0;

    if (prefix) {
	size_t l = strlen(prefix);
	BLOCK_APPEND(b, prefix, l);
	len += l;
    }

    tp += itf8_put(tp, c->e_external.content_id);
    len += itf8_put_blk(b, c->codec);
    len += itf8_put_blk(b, tp-tmp);
    BLOCK_APPEND(b, tmp, tp-tmp);
    len += tp-tmp;

    return len;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
leaq -0x80(%rbp), %rax
movq %rax, -0x88(%rbp)
movl $0x0, -0x8c(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x6e923
movq -0x18(%rbp), %rdi
callq 0x4230
movq %rax, -0x98(%rbp)
jmp 0x6e7fc
jmp 0x6e7fe
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x30(%rcx), %rcx
addq -0x98(%rbp), %rcx
cmpq %rcx, %rax
ja 0x6e8d7
movq -0x10(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0x6e86a
movq -0x10(%rbp), %rax
movq 0x28(%rax), %xmm0
movaps 0xc2a7(%rip), %xmm1     # 0x7aae0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0xc2ab(%rip), %xmm1     # 0x7aaf0
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0xd27c(%rip), %xmm1     # 0x7bad8
mulsd %xmm1, %xmm0
movsd %xmm0, -0xa0(%rbp)
jmp 0x6e87c
movsd 0xd25e(%rip), %xmm0     # 0x7bad0
movsd %xmm0, -0xa0(%rbp)
jmp 0x6e87c
movsd -0xa0(%rbp), %xmm0
movsd 0xc234(%rip), %xmm2     # 0x7aac0
movaps %xmm0, %xmm1
subsd %xmm2, %xmm1
cvttsd2si %xmm1, %rax
cvttsd2si %xmm0, %rcx
movq %rcx, %rdx
sarq $0x3f, %rdx
andq %rdx, %rax
orq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rsi
callq 0x4990
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x20(%rax)
jmp 0x6e7fe
jmp 0x6e8d9
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
movq -0x10(%rbp), %rax
addq 0x30(%rax), %rdi
movq -0x18(%rbp), %rsi
movq -0x98(%rbp), %rdx
callq 0x4460
movq -0x98(%rbp), %rcx
movq -0x10(%rbp), %rax
addq 0x30(%rax), %rcx
movq %rcx, 0x30(%rax)
movq -0x98(%rbp), %rcx
movslq -0x8c(%rbp), %rax
addq %rcx, %rax
movl %eax, -0x8c(%rbp)
movq -0x8(%rbp), %rax
movl 0x30(%rax), %eax
andl $-0x80, %eax
cmpl $0x0, %eax
jne 0x6e954
movq -0x8(%rbp), %rax
movl 0x30(%rax), %eax
movb %al, %cl
movq -0x88(%rbp), %rax
movb %cl, (%rax)
movl $0x1, %eax
movl %eax, -0xa4(%rbp)
jmp 0x6eb53
movq -0x8(%rbp), %rax
movl 0x30(%rax), %eax
andl $0xffffc000, %eax       # imm = 0xFFFFC000
cmpl $0x0, %eax
jne 0x6e9a7
movq -0x8(%rbp), %rax
movl 0x30(%rax), %eax
sarl $0x8, %eax
orl $0x80, %eax
movb %al, %cl
movq -0x88(%rbp), %rax
movb %cl, (%rax)
movq -0x8(%rbp), %rax
movl 0x30(%rax), %eax
andl $0xff, %eax
movb %al, %cl
movq -0x88(%rbp), %rax
movb %cl, 0x1(%rax)
movl $0x2, %eax
movl %eax, -0xa8(%rbp)
jmp 0x6eb47
movq -0x8(%rbp), %rax
movl 0x30(%rax), %eax
andl $0xffe00000, %eax       # imm = 0xFFE00000
cmpl $0x0, %eax
jne 0x6ea15
movq -0x8(%rbp), %rax
movl 0x30(%rax), %eax
sarl $0x10, %eax
orl $0xc0, %eax
movb %al, %cl
movq -0x88(%rbp), %rax
movb %cl, (%rax)
movq -0x8(%rbp), %rax
movl 0x30(%rax), %eax
sarl $0x8, %eax
andl $0xff, %eax
movb %al, %cl
movq -0x88(%rbp), %rax
movb %cl, 0x1(%rax)
movq -0x8(%rbp), %rax
movl 0x30(%rax), %eax
andl $0xff, %eax
movb %al, %cl
movq -0x88(%rbp), %rax
movb %cl, 0x2(%rax)
movl $0x3, %eax
movl %eax, -0xac(%rbp)
jmp 0x6eb3b
movq -0x8(%rbp), %rax
movl 0x30(%rax), %eax
andl $0xf0000000, %eax       # imm = 0xF0000000
cmpl $0x0, %eax
jne 0x6ea9e
movq -0x8(%rbp), %rax
movl 0x30(%rax), %eax
sarl $0x18, %eax
orl $0xe0, %eax
movb %al, %cl
movq -0x88(%rbp), %rax
movb %cl, (%rax)
movq -0x8(%rbp), %rax
movl 0x30(%rax), %eax
sarl $0x10, %eax
andl $0xff, %eax
movb %al, %cl
movq -0x88(%rbp), %rax
movb %cl, 0x1(%rax)
movq -0x8(%rbp), %rax
movl 0x30(%rax), %eax
sarl $0x8, %eax
andl $0xff, %eax
movb %al, %cl
movq -0x88(%rbp), %rax
movb %cl, 0x2(%rax)
movq -0x8(%rbp), %rax
movl 0x30(%rax), %eax
andl $0xff, %eax
movb %al, %cl
movq -0x88(%rbp), %rax
movb %cl, 0x3(%rax)
movl $0x4, %eax
movl %eax, -0xb0(%rbp)
jmp 0x6eb2f
movq -0x8(%rbp), %rax
movl 0x30(%rax), %eax
sarl $0x1c, %eax
andl $0xff, %eax
orl $0xf0, %eax
movb %al, %cl
movq -0x88(%rbp), %rax
movb %cl, (%rax)
movq -0x8(%rbp), %rax
movl 0x30(%rax), %eax
sarl $0x14, %eax
andl $0xff, %eax
movb %al, %cl
movq -0x88(%rbp), %rax
movb %cl, 0x1(%rax)
movq -0x8(%rbp), %rax
movl 0x30(%rax), %eax
sarl $0xc, %eax
andl $0xff, %eax
movb %al, %cl
movq -0x88(%rbp), %rax
movb %cl, 0x2(%rax)
movq -0x8(%rbp), %rax
movl 0x30(%rax), %eax
sarl $0x4, %eax
andl $0xff, %eax
movb %al, %cl
movq -0x88(%rbp), %rax
movb %cl, 0x3(%rax)
movq -0x8(%rbp), %rax
movl 0x30(%rax), %eax
andl $0xf, %eax
movb %al, %cl
movq -0x88(%rbp), %rax
movb %cl, 0x4(%rax)
movl $0x5, %eax
movl %eax, -0xb0(%rbp)
movl -0xb0(%rbp), %eax
movl %eax, -0xac(%rbp)
movl -0xac(%rbp), %eax
movl %eax, -0xa8(%rbp)
movl -0xa8(%rbp), %eax
movl %eax, -0xa4(%rbp)
movl -0xa4(%rbp), %ecx
movq -0x88(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x88(%rbp)
movq -0x10(%rbp), %rdi
movq -0x8(%rbp), %rax
movl (%rax), %esi
callq 0x45280
addl -0x8c(%rbp), %eax
movl %eax, -0x8c(%rbp)
movq -0x10(%rbp), %rdi
movq -0x88(%rbp), %rax
leaq -0x80(%rbp), %rcx
subq %rcx, %rax
movl %eax, %esi
callq 0x45280
addl -0x8c(%rbp), %eax
movl %eax, -0x8c(%rbp)
jmp 0x6ebaf
jmp 0x6ebb1
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x10(%rbp), %rcx
movq 0x30(%rcx), %rcx
movq -0x88(%rbp), %rdx
leaq -0x80(%rbp), %rsi
subq %rsi, %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
ja 0x6ec94
movq -0x10(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0x6ec27
movq -0x10(%rbp), %rax
movq 0x28(%rax), %xmm0
movaps 0xbeea(%rip), %xmm1     # 0x7aae0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0xbeee(%rip), %xmm1     # 0x7aaf0
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movsd 0xcebf(%rip), %xmm1     # 0x7bad8
mulsd %xmm1, %xmm0
movsd %xmm0, -0xb8(%rbp)
jmp 0x6ec39
movsd 0xcea1(%rip), %xmm0     # 0x7bad0
movsd %xmm0, -0xb8(%rbp)
jmp 0x6ec39
movsd -0xb8(%rbp), %xmm0
movsd 0xbe77(%rip), %xmm2     # 0x7aac0
movaps %xmm0, %xmm1
subsd %xmm2, %xmm1
cvttsd2si %xmm1, %rax
cvttsd2si %xmm0, %rcx
movq %rcx, %rdx
sarq $0x3f, %rdx
andq %rdx, %rax
orq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rsi
callq 0x4990
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x20(%rax)
jmp 0x6ebb1
jmp 0x6ec96
movq -0x10(%rbp), %rax
movq 0x20(%rax), %rdi
movq -0x10(%rbp), %rax
addq 0x30(%rax), %rdi
leaq -0x80(%rbp), %rsi
movq -0x88(%rbp), %rdx
leaq -0x80(%rbp), %rax
subq %rax, %rdx
callq 0x4460
movq -0x88(%rbp), %rcx
leaq -0x80(%rbp), %rax
subq %rax, %rcx
movq -0x10(%rbp), %rax
addq 0x30(%rax), %rcx
movq %rcx, 0x30(%rax)
movq -0x88(%rbp), %rcx
leaq -0x80(%rbp), %rax
subq %rax, %rcx
movslq -0x8c(%rbp), %rax
addq %rcx, %rax
movl %eax, -0x8c(%rbp)
movl -0x8c(%rbp), %eax
addq $0xc0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)