// File: /workspace/github_c_makefile_star2_O0/samtools[P]htslib/vcf.c
// Function: bcf_hdr_remove_from_hdict
static void bcf_hdr_remove_from_hdict(bcf_hdr_t *hdr, bcf_hrec_t *hrec)
{
    kstring_t str = KS_INITIALIZE;
    bcf_hdr_aux_t *aux = get_hdr_aux(hdr);
    khint_t k;
    int id;

    switch (hrec->type) {
    case BCF_HL_GEN:
        if (ksprintf(&str, "##%s=%s", hrec->key,hrec->value) < 0)
            str.l = 0;
        break;
    case BCF_HL_STR:
        id = bcf_hrec_find_key(hrec, "ID");
        if (id < 0)
            return;
        if (!hrec->vals[id] ||
            ksprintf(&str, "##%s=<ID=%s>", hrec->key, hrec->vals[id]) < 0)
            str.l = 0;
        break;
    default:
        return;
    }
    if (str.l) {
        k = kh_get(hdict, aux->gen, str.s);
    } else {
        // Couldn't get a string for some reason, so try the hard way...
        for (k = kh_begin(aux->gen); k < kh_end(aux->gen); k++) {
            if (kh_exist(aux->gen, k) && kh_val(aux->gen, k) == hrec)
                break;
        }
    }
    if (k != kh_end(aux->gen) && kh_val(aux->gen, k) == hrec) {
        kh_val(aux->gen, k) = NULL;
        free((char *) kh_key(aux->gen, k));
        kh_key(aux->gen, k) = NULL;
        kh_del(hdict, aux->gen, k);
    }
    free(str.s);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x30(%rbp)
movq $0x0, -0x20(%rbp)
movq -0x8(%rbp), %rdi
callq 0x3b020
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x44(%rbp)
subl $0x4, %eax
je 0x3f06b
jmp 0x3f02c
movl -0x44(%rbp), %eax
subl $0x5, %eax
jne 0x3f0d5
jmp 0x3f03a
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdx
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rcx
leaq -0x30(%rbp), %rdi
leaq 0xc877d(%rip), %rsi     # 0x1077d2
movb $0x0, %al
callq 0xd62e0
cmpl $0x0, %eax
jge 0x3f069
movq $0x0, -0x30(%rbp)
jmp 0x3f0da
movq -0x10(%rbp), %rdi
leaq 0xc6f22(%rip), %rsi     # 0x105f98
callq 0x3bb40
movl %eax, -0x40(%rbp)
cmpl $0x0, -0x40(%rbp)
jge 0x3f089
jmp 0x3f1e7
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movslq -0x40(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
je 0x3f0cb
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rdx
movq -0x10(%rbp), %rax
movq 0x28(%rax), %rax
movslq -0x40(%rbp), %rcx
movq (%rax,%rcx,8), %rcx
leaq -0x30(%rbp), %rdi
leaq 0xc8726(%rip), %rsi     # 0x1077e5
movb $0x0, %al
callq 0xd62e0
cmpl $0x0, %eax
jge 0x3f0d3
movq $0x0, -0x30(%rbp)
jmp 0x3f0da
jmp 0x3f1e7
cmpq $0x0, -0x30(%rbp)
je 0x3f0f7
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0x3df00
movl %eax, -0x3c(%rbp)
jmp 0x3f160
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
movq -0x38(%rbp), %rcx
movq 0x28(%rcx), %rcx
cmpl (%rcx), %eax
jae 0x3f15e
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x10(%rax), %rax
movl -0x3c(%rbp), %ecx
shrl $0x4, %ecx
movl %ecx, %ecx
movl (%rax,%rcx,4), %eax
movl -0x3c(%rbp), %ecx
andl $0xf, %ecx
shll %ecx
shrl %cl, %eax
andl $0x3, %eax
cmpl $0x0, %eax
jne 0x3f151
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movl -0x3c(%rbp), %ecx
movq (%rax,%rcx,8), %rax
cmpq -0x10(%rbp), %rax
jne 0x3f151
jmp 0x3f15e
jmp 0x3f153
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x3f0fe
jmp 0x3f160
movl -0x3c(%rbp), %eax
movq -0x38(%rbp), %rcx
movq 0x28(%rcx), %rcx
cmpl (%rcx), %eax
je 0x3f1de
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movl -0x3c(%rbp), %ecx
movq (%rax,%rcx,8), %rax
cmpq -0x10(%rbp), %rax
jne 0x3f1de
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x20(%rax), %rax
movl -0x3c(%rbp), %ecx
movq $0x0, (%rax,%rcx,8)
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movl -0x3c(%rbp), %ecx
movq (%rax,%rcx,8), %rdi
callq 0x45a0
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movl -0x3c(%rbp), %ecx
movq $0x0, (%rax,%rcx,8)
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rdi
movl -0x3c(%rbp), %esi
callq 0x3c840
movq -0x20(%rbp), %rdi
callq 0x45a0
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax)