// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/alphabet.c
// Function: gt_alphabet_clone
GtAlphabet* gt_alphabet_clone(const GtAlphabet *alphabet)
{
  unsigned int i;
  GtAlphabet *newalpha;
  gt_assert(alphabet);

  newalpha = gt_malloc(sizeof *newalpha);
  newalpha->domainsize = alphabet->domainsize;
  newalpha->mapsize = alphabet->mapsize;
  newalpha->mappedwildcards = alphabet->mappedwildcards;
  newalpha->wildcardshow = alphabet->wildcardshow;
  newalpha->bitspersymbol = alphabet->bitspersymbol;
  newalpha->alphadef = gt_str_ref(alphabet->alphadef);
  newalpha->reference_count = 0;
  newalpha->refmutex = gt_mutex_new();
  for (i=0; i<=(unsigned int) GT_MAXALPHABETCHARACTER; i++)
  {
    newalpha->symbolmap[i] = alphabet->symbolmap[i];
  }
  newalpha->characters = gt_malloc(alphabet->mapsize * sizeof (GtUchar));
  for (i=0; i<newalpha->mapsize; i++)
  {
    newalpha->characters[i] = alphabet->characters[i];
  }
  newalpha->mapdomain = gt_malloc(alphabet->domainsize * sizeof (GtUchar));
  for (i=0; i<newalpha->domainsize; i++)
  {
    newalpha->mapdomain[i] = alphabet->mapdomain[i];
  }
  return newalpha;
}

// Assembly:
subq $0x18, %rsp
movq %rdi, 0x10(%rsp)
cmpq $0x0, 0x10(%rsp)
jne 0x108f59
movq 0xab0b0(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x55134(%rip), %rsi     # 0x15e066
leaq 0x6fb0f(%rip), %rdx     # 0x178a48
leaq 0x7aad0(%rip), %rcx     # 0x183a10
leaq 0x7aadb(%rip), %r8      # 0x183a22
movl $0x16c, %r9d            # imm = 0x16C
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x108f5b
movl $0x138, %edi            # imm = 0x138
leaq 0x7aabb(%rip), %rsi     # 0x183a22
movl $0x16e, %edx            # imm = 0x16E
callq 0xd2e0
movq %rax, (%rsp)
movq 0x10(%rsp), %rax
movl (%rax), %ecx
movq (%rsp), %rax
movl %ecx, (%rax)
movq 0x10(%rsp), %rax
movl 0x4(%rax), %ecx
movq (%rsp), %rax
movl %ecx, 0x4(%rax)
movq 0x10(%rsp), %rax
movl 0x8(%rax), %ecx
movq (%rsp), %rax
movl %ecx, 0x8(%rax)
movq 0x10(%rsp), %rax
movb 0x14(%rax), %cl
movq (%rsp), %rax
movb %cl, 0x14(%rax)
movq 0x10(%rsp), %rax
movl 0xc(%rax), %ecx
movq (%rsp), %rax
movl %ecx, 0xc(%rax)
movq 0x10(%rsp), %rax
movq 0x130(%rax), %rdi
callq 0x19dc0
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x130(%rax)
movq (%rsp), %rax
movl $0x0, 0x10(%rax)
callq 0x1c240
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x128(%rax)
movl $0x0, 0xc(%rsp)
cmpl $0xff, 0xc(%rsp)
ja 0x109033
movq 0x10(%rsp), %rax
movl 0xc(%rsp), %ecx
movb 0x15(%rax,%rcx), %dl
movq (%rsp), %rax
movl 0xc(%rsp), %ecx
movb %dl, 0x15(%rax,%rcx)
movl 0xc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xc(%rsp)
jmp 0x109003
movq 0x10(%rsp), %rax
movl 0x4(%rax), %eax
movl %eax, %edi
shlq $0x0, %rdi
leaq 0x7a9da(%rip), %rsi     # 0x183a22
movl $0x17b, %edx            # imm = 0x17B
callq 0xd2e0
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x120(%rax)
movl $0x0, 0xc(%rsp)
movl 0xc(%rsp), %eax
movq (%rsp), %rcx
cmpl 0x4(%rcx), %eax
jae 0x1090a7
movq 0x10(%rsp), %rax
movq 0x120(%rax), %rax
movl 0xc(%rsp), %ecx
movb (%rax,%rcx), %dl
movq (%rsp), %rax
movq 0x120(%rax), %rax
movl 0xc(%rsp), %ecx
movb %dl, (%rax,%rcx)
movl 0xc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xc(%rsp)
jmp 0x109068
movq 0x10(%rsp), %rax
movl (%rax), %eax
movl %eax, %edi
shlq $0x0, %rdi
leaq 0x7a967(%rip), %rsi     # 0x183a22
movl $0x180, %edx            # imm = 0x180
callq 0xd2e0
movq %rax, %rcx
movq (%rsp), %rax
movq %rcx, 0x118(%rax)
movl $0x0, 0xc(%rsp)
movl 0xc(%rsp), %eax
movq (%rsp), %rcx
cmpl (%rcx), %eax
jae 0x109119
movq 0x10(%rsp), %rax
movq 0x118(%rax), %rax
movl 0xc(%rsp), %ecx
movb (%rax,%rcx), %dl
movq (%rsp), %rax
movq 0x118(%rax), %rax
movl 0xc(%rsp), %ecx
movb %dl, (%rax,%rcx)
movl 0xc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xc(%rsp)
jmp 0x1090db
movq (%rsp), %rax
addq $0x18, %rsp
retq
nopw %cs:(%rax,%rax)