// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/hashmap.c
// Function: gt_hashmap_new_g
static GtHashmap* gt_hashmap_new_g(GtHashType keyhashtype, GtFree keyfree,
                                   GtFree valuefree, void* (*alloc)(size_t))
{
  struct hm_freefuncs *ff = alloc(sizeof (*ff));
  ff->keyfree = keyfree;
  ff->valuefree = valuefree;
  switch (keyhashtype) {
    case GT_HASH_DIRECT:
      {
        HashElemInfo hm_directkey_eleminfo = {
          gt_ht_ptr_elem_hash, { .free_elem_with_data = hm_elem_free },
          sizeof (struct map_entry), gt_ht_ptr_elem_cmp, ff, gt_free_func
        };
        if (alloc != gt_hashmap_malloc)
          return (GtHashmap*) gt_hashtable_new_no_ma(hm_directkey_eleminfo);
        else
          return (GtHashmap*) gt_hashtable_new(hm_directkey_eleminfo);
      }
    case GT_HASH_STRING:
      {
        HashElemInfo hm_strkey_eleminfo = {
          gt_ht_cstr_elem_hash, { .free_elem_with_data = hm_elem_free },
          sizeof (struct map_entry), gt_ht_cstr_elem_cmp, ff, gt_free_func
        };
        if (alloc != gt_hashmap_malloc)
          return (GtHashmap*) gt_hashtable_new_no_ma(hm_strkey_eleminfo);
        else
          return (GtHashmap*) gt_hashtable_new(hm_strkey_eleminfo);
      }
    default: gt_assert(0);
  }
  return NULL; /* for stupid compilers nagging too much */
}

// Assembly:
subq $0xc8, %rsp
movl %edi, 0xbc(%rsp)
movq %rsi, 0xb0(%rsp)
movq %rdx, 0xa8(%rsp)
movq %rcx, 0xa0(%rsp)
movq 0xa0(%rsp), %rax
movl $0x10, %edi
callq *%rax
movq %rax, 0x98(%rsp)
movq 0xb0(%rsp), %rcx
movq 0x98(%rsp), %rax
movq %rcx, (%rax)
movq 0xa8(%rsp), %rcx
movq 0x98(%rsp), %rax
movq %rcx, 0x8(%rax)
movl 0xbc(%rsp), %eax
movl %eax, 0x34(%rsp)
testl %eax, %eax
je 0x86247
jmp 0x86235
movl 0x34(%rsp), %eax
subl $0x1, %eax
je 0x8630b
jmp 0x863ba
leaq 0x2862(%rip), %rax      # 0x88ab0
movq %rax, 0x68(%rsp)
leaq 0xa76(%rip), %rax       # 0x86cd0
movq %rax, 0x70(%rsp)
movq $0x10, 0x78(%rsp)
leaq 0x2ea1(%rip), %rax      # 0x89110
movq %rax, 0x80(%rsp)
movq 0x98(%rsp), %rax
movq %rax, 0x88(%rsp)
leaq -0x7866e(%rip), %rax    # 0xdc20
movq %rax, 0x90(%rsp)
leaq 0x173(%rip), %rax       # 0x86410
cmpq %rax, 0xa0(%rsp)
je 0x862d9
movups 0x68(%rsp), %xmm0
movups 0x78(%rsp), %xmm1
movups 0x88(%rsp), %xmm2
movq %rsp, %rax
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0x87070
movq %rax, 0xc0(%rsp)
jmp 0x863f4
movups 0x68(%rsp), %xmm0
movups 0x78(%rsp), %xmm1
movups 0x88(%rsp), %xmm2
movq %rsp, %rax
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0x87020
movq %rax, 0xc0(%rsp)
jmp 0x863f4
leaq 0x2d7e(%rip), %rax      # 0x89090
movq %rax, 0x38(%rsp)
leaq 0x9b2(%rip), %rax       # 0x86cd0
movq %rax, 0x40(%rsp)
movq $0x10, 0x48(%rsp)
leaq 0x2ebd(%rip), %rax      # 0x891f0
movq %rax, 0x50(%rsp)
movq 0x98(%rsp), %rax
movq %rax, 0x58(%rsp)
leaq -0x7872c(%rip), %rax    # 0xdc20
movq %rax, 0x60(%rsp)
leaq 0xb8(%rip), %rax        # 0x86410
cmpq %rax, 0xa0(%rsp)
je 0x8638e
movups 0x38(%rsp), %xmm0
movups 0x48(%rsp), %xmm1
movups 0x58(%rsp), %xmm2
movq %rsp, %rax
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0x87070
movq %rax, 0xc0(%rsp)
jmp 0x863f4
movups 0x38(%rsp), %xmm0
movups 0x48(%rsp), %xmm1
movups 0x58(%rsp), %xmm2
movq %rsp, %rax
movups %xmm2, 0x20(%rax)
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
callq 0x87020
movq %rax, 0xc0(%rsp)
jmp 0x863f4
jmp 0x863bc
movq 0x12dc15(%rip), %rax    # 0x1b3fd8
movq (%rax), %rdi
leaq 0xd7c99(%rip), %rsi     # 0x15e066
leaq 0xe9ae7(%rip), %rdx     # 0x16febb
leaq 0xe84e6(%rip), %rcx     # 0x16e8c1
leaq 0xe849e(%rip), %r8      # 0x16e880
movl $0x53, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
movq 0xc0(%rsp), %rax
addq $0xc8, %rsp
retq
nopw %cs:(%rax,%rax)