// File: /workspace/github_c_makefile_star2_O0/samtools[P]htslib/vcf.c
// Function: bcf_hdr_update_hrec
int bcf_hdr_update_hrec(bcf_hdr_t *hdr, bcf_hrec_t *hrec, const bcf_hrec_t *tmp)
{
    assert( hrec->type==BCF_HL_GEN );
    int ret;
    khint_t k;
    bcf_hdr_aux_t *aux = get_hdr_aux(hdr);
    for (k=kh_begin(aux->gen); k<kh_end(aux->gen); k++)
    {
        if ( !kh_exist(aux->gen,k) ) continue;
        if ( hrec!=(bcf_hrec_t*)kh_val(aux->gen,k) ) continue;
        break;
    }
    assert( k<kh_end(aux->gen) );   // something went wrong, should never happen
    free((char*)kh_key(aux->gen,k));
    kh_del(hdict,aux->gen,k);
    kstring_t str = {0,0,0};
    if ( ksprintf(&str, "##%s=%s", tmp->key,tmp->value) < 0 )
    {
        free(str.s);
        return -1;
    }
    k = kh_put(hdict, aux->gen, str.s, &ret);
    if ( ret<0 )
    {
        free(str.s);
        return -1;
    }
    free(hrec->value);
    hrec->value = strdup(tmp->value);
    if ( !hrec->value ) return -1;
    kh_val(aux->gen,k) = hrec;

    if (!strcmp(hrec->key,"fileformat")) {
        //update version
        get_hdr_aux(hdr)->version = bcf_get_version(NULL, hrec->value);
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x5, (%rax)
jne 0x3c62f
jmp 0x3c64e
leaq 0xcb12b(%rip), %rdi     # 0x107761
leaq 0xcb026(%rip), %rsi     # 0x107663
movl $0x41f, %edx            # imm = 0x41F
leaq 0xcb12f(%rip), %rcx     # 0x107778
callq 0x42d0
movq -0x10(%rbp), %rdi
callq 0x3b020
movq %rax, -0x30(%rbp)
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
movq -0x30(%rbp), %rcx
movq 0x28(%rcx), %rcx
cmpl (%rcx), %eax
jae 0x3c6c4
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x10(%rax), %rax
movl -0x28(%rbp), %ecx
shrl $0x4, %ecx
movl %ecx, %ecx
movl (%rax,%rcx,4), %eax
movl -0x28(%rbp), %ecx
andl $0xf, %ecx
shll %ecx
shrl %cl, %eax
andl $0x3, %eax
cmpl $0x0, %eax
je 0x3c69c
jmp 0x3c6b9
movq -0x18(%rbp), %rax
movq -0x30(%rbp), %rcx
movq 0x28(%rcx), %rcx
movq 0x20(%rcx), %rcx
movl -0x28(%rbp), %edx
cmpq (%rcx,%rdx,8), %rax
je 0x3c6b7
jmp 0x3c6b9
jmp 0x3c6c4
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x3c662
movl -0x28(%rbp), %eax
movq -0x30(%rbp), %rcx
movq 0x28(%rcx), %rcx
cmpl (%rcx), %eax
jae 0x3c6d5
jmp 0x3c6f4
leaq 0xcb0e3(%rip), %rdi     # 0x1077bf
leaq 0xcaf80(%rip), %rsi     # 0x107663
movl $0x429, %edx            # imm = 0x429
leaq 0xcb089(%rip), %rcx     # 0x107778
callq 0x42d0
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movl -0x28(%rbp), %ecx
movq (%rax,%rcx,8), %rdi
callq 0x45a0
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rdi
movl -0x28(%rbp), %esi
callq 0x3c840
leaq -0x48(%rbp), %rdi
xorl %esi, %esi
movl $0x18, %edx
callq 0x4240
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdx
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rcx
leaq -0x48(%rbp), %rdi
leaq 0xcb08b(%rip), %rsi     # 0x1077d2
movb $0x0, %al
callq 0xd62e0
cmpl $0x0, %eax
jge 0x3c768
movq -0x38(%rbp), %rdi
callq 0x45a0
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x3c82e
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rdi
movq -0x38(%rbp), %rsi
leaq -0x24(%rbp), %rdx
callq 0x3c8c0
movl %eax, -0x28(%rbp)
cmpl $0x0, -0x24(%rbp)
jge 0x3c79b
movq -0x38(%rbp), %rdi
callq 0x45a0
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x3c82e
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x45a0
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x4920
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x18(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x3c7d4
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x3c82e
movq -0x18(%rbp), %rdx
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movl -0x28(%rbp), %ecx
movq %rdx, (%rax,%rcx,8)
movq -0x18(%rbp), %rax
movq 0x8(%rax), %rdi
leaq 0xcafe0(%rip), %rsi     # 0x1077da
callq 0x46b0
cmpl $0x0, %eax
jne 0x3c827
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rsi
xorl %eax, %eax
movl %eax, %edi
callq 0x3cc20
movl %eax, -0x4c(%rbp)
movq -0x10(%rbp), %rdi
callq 0x3b020
movl -0x4c(%rbp), %ecx
movl %ecx, 0x38(%rax)
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x50, %rsp
popq %rbp
retq
nopw (%rax,%rax)