// File: /workspace/github_c_makefile_star2_O3/icebert[P]pblat/htslib/cram/cram_io.c
// Function: cram_free_slice
void cram_free_slice(cram_slice *s) {
    if (!s)
	return;

    if (s->hdr_block)
	cram_free_block(s->hdr_block);

    if (s->block) {
	int i;

	if (s->hdr) {
	    for (i = 0; i < s->hdr->num_blocks; i++) {
		cram_free_block(s->block[i]);
	    }
	}
	free(s->block);
    }

    if (s->block_by_id)
	free(s->block_by_id);

    if (s->hdr)
	cram_free_slice_header(s->hdr);

    if (s->seqs_blk)
	cram_free_block(s->seqs_blk);

    if (s->qual_blk)
	cram_free_block(s->qual_blk);

    if (s->name_blk)
	cram_free_block(s->name_blk);

    if (s->aux_blk)
	cram_free_block(s->aux_blk);

    if (s->aux_OQ_blk)
	cram_free_block(s->aux_OQ_blk);

    if (s->aux_BQ_blk)
	cram_free_block(s->aux_BQ_blk);

    if (s->aux_FZ_blk)
	cram_free_block(s->aux_FZ_blk);

    if (s->aux_oq_blk)
	cram_free_block(s->aux_oq_blk);

    if (s->aux_os_blk)
	cram_free_block(s->aux_os_blk);

    if (s->aux_oz_blk)
	cram_free_block(s->aux_oz_blk);

    if (s->base_blk)
	cram_free_block(s->base_blk);

    if (s->soft_blk)
	cram_free_block(s->soft_blk);

    if (s->cigar)
	free(s->cigar);

    if (s->crecs)
	free(s->crecs);

    if (s->features)
	free(s->features);

    if (s->TN)
	free(s->TN);

    if (s->pair_keys)
	string_pool_destroy(s->pair_keys);

    if (s->pair[0])
	kh_destroy(m_s2i, s->pair[0]);
    if (s->pair[1])
	kh_destroy(m_s2i, s->pair[1]);

    free(s);
}

// Assembly:
testq %rdi, %rdi
je 0x59a11
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq 0x8(%rdi), %rdi
testq %rdi, %rdi
je 0x59841
callq 0x56a50
movq 0x10(%rbx), %rdi
testq %rdi, %rdi
je 0x59880
movq (%rbx), %rax
testq %rax, %rax
je 0x5987b
cmpl $0x0, 0x20(%rax)
jle 0x5987b
xorl %r14d, %r14d
movq 0x10(%rbx), %rax
movq (%rax,%r14,8), %rdi
callq 0x56a50
incq %r14
movq (%rbx), %rax
movslq 0x20(%rax), %rax
cmpq %rax, %r14
jl 0x5985b
movq 0x10(%rbx), %rdi
callq 0x68a0
movq 0x18(%rbx), %rdi
testq %rdi, %rdi
je 0x5988e
callq 0x68a0
movq (%rbx), %rdi
testq %rdi, %rdi
je 0x5989b
callq 0x5b076
movq 0x68(%rbx), %rdi
testq %rdi, %rdi
je 0x598a9
callq 0x56a50
movq 0x70(%rbx), %rdi
testq %rdi, %rdi
je 0x598b7
callq 0x56a50
movq 0x60(%rbx), %rdi
testq %rdi, %rdi
je 0x598c5
callq 0x56a50
movq 0x88(%rbx), %rdi
testq %rdi, %rdi
je 0x598d6
callq 0x56a50
movq 0x90(%rbx), %rdi
testq %rdi, %rdi
je 0x598e7
callq 0x56a50
movq 0x98(%rbx), %rdi
testq %rdi, %rdi
je 0x598f8
callq 0x56a50
movq 0xb0(%rbx), %rdi
testq %rdi, %rdi
je 0x59909
callq 0x56a50
movq 0xb8(%rbx), %rdi
testq %rdi, %rdi
je 0x5991a
callq 0x56a50
movq 0xc0(%rbx), %rdi
testq %rdi, %rdi
je 0x5992b
callq 0x56a50
movq 0xc8(%rbx), %rdi
testq %rdi, %rdi
je 0x5993c
callq 0x56a50
movq 0x78(%rbx), %rdi
testq %rdi, %rdi
je 0x5994a
callq 0x56a50
movq 0x80(%rbx), %rdi
testq %rdi, %rdi
je 0x5995b
callq 0x56a50
movq 0x30(%rbx), %rdi
testq %rdi, %rdi
je 0x59969
callq 0x68a0
movq 0x28(%rbx), %rdi
testq %rdi, %rdi
je 0x59977
callq 0x68a0
movq 0x40(%rbx), %rdi
testq %rdi, %rdi
je 0x59985
callq 0x68a0
movq 0x50(%rbx), %rdi
testq %rdi, %rdi
je 0x59993
callq 0x68a0
movq 0xd0(%rbx), %rdi
testq %rdi, %rdi
je 0x599a4
callq 0x650c3
movq 0xd8(%rbx), %r14
testq %r14, %r14
je 0x599d3
movq 0x18(%r14), %rdi
callq 0x68a0
movq 0x10(%r14), %rdi
callq 0x68a0
movq 0x20(%r14), %rdi
callq 0x68a0
movq %r14, %rdi
callq 0x68a0
movq 0xe0(%rbx), %r14
testq %r14, %r14
je 0x59a02
movq 0x18(%r14), %rdi
callq 0x68a0
movq 0x10(%r14), %rdi
callq 0x68a0
movq 0x20(%r14), %rdi
callq 0x68a0
movq %r14, %rdi
callq 0x68a0
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x68a0
retq