// File: /workspace/github_c_makefile_star2_O3/genometools[P]genometools/src/core/trans_table.c
// Function: gt_trans_table_unit_test
int gt_trans_table_unit_test(GtError *err)
{
  int had_err = 0, test_errnum = 0, i, j, k;
  GtStrArray *schemes;
  GtError *test_err = gt_error_new();
  GtTransTable *tr;
  char ret1 = ' ';
  const char *bases = "AaCcGgTt";
  gt_error_check(err);

  /* check retrieval of table descriptions */
  schemes = gt_trans_table_get_scheme_descriptions();
  gt_ensure(gt_str_array_size(schemes) == (GtUword) GT_NUMOFTRANSSCHEMES);

  tr = gt_trans_table_new_standard(err);
  /* check single codon translation */
  for (i=0; i<8; i++) {
    char c1 = bases[i];
    for (j=0; j<8; j++) {
      char c2 = bases[j];
      for (k=0; k<8; k++) {
        char c3 = bases[k];
        ret1 = ' ';
        test_errnum = gt_trans_table_translate_codon(tr, c1, c2, c3, &ret1,
                                                test_err);
        gt_ensure(!test_errnum && !gt_error_is_set(test_err));
        gt_ensure(ret1 != ' ');
      }
    }
  }
  for (j=0; j<8; j++) {
    char c2 = bases[j];
    for (k=0; k<8; k++) {
      char c3 = bases[k];
      ret1 = ' ';
      test_errnum = gt_trans_table_translate_codon(tr, 'n', c2, c3, &ret1,
                                                   test_err);
      gt_ensure(!test_errnum && !gt_error_is_set(test_err));
      gt_ensure(ret1 == 'X');
    }
  }
  for (j=0; j<8; j++) {
    char c2 = bases[j];
    for (k=0; k<8; k++) {
      char c3 = bases[k];
      ret1 = ' ';
      test_errnum = gt_trans_table_translate_codon(tr, c2, 'n', c3, &ret1,
                                                   test_err);
      gt_ensure(!test_errnum && !gt_error_is_set(test_err));
      gt_ensure(ret1 == 'X');
    }
  }

  gt_str_array_delete(schemes);
  gt_trans_table_delete(tr);
  gt_error_delete(test_err);

  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rdi, %rbx
callq 0x34f04
movq %rax, 0x8(%rsp)
testq %rbx, %rbx
je 0xd9427
movq %rbx, %rdi
callq 0x34fea
testb %al, %al
jne 0xd97b1
callq 0xd8ff4
movq %rax, 0x20(%rsp)
movq %rax, %rdi
callq 0x3cbed
xorl %r12d, %r12d
cmpq $0x13, %rax
je 0xd9474
leaq 0x9d10(%rip), %rsi      # 0xe3159
leaq 0x3115a(%rip), %rdx     # 0x10a5aa
leaq 0x3113a(%rip), %rcx     # 0x10a591
leaq 0x31092(%rip), %r8      # 0x10a4f0
movq %rbx, %rdi
movl $0x35e, %r9d            # imm = 0x35E
xorl %eax, %eax
callq 0x34f1f
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
movq %rbx, 0x10(%rsp)
leaq 0x31070(%rip), %rdx     # 0x10a4f0
movl $0x1, %edi
movl $0x8, %esi
movl $0x30b, %ecx            # imm = 0x30B
callq 0x359a6
leaq 0x792e5(%rip), %rcx     # 0x152780
movq %rax, 0x18(%rsp)
movq %rcx, (%rax)
leaq 0x7(%rsp), %r15
xorl %ecx, %ecx
leaq 0x310d7(%rip), %rax     # 0x10a588
movq %rcx, 0x28(%rsp)
movsbl (%rcx,%rax), %r14d
xorl %ecx, %ecx
leaq 0x310c4(%rip), %rax     # 0x10a588
movq %rcx, 0x30(%rsp)
movsbl (%rcx,%rax), %r13d
xorl %ebx, %ebx
movl %r12d, %ebp
leaq 0x310ae(%rip), %rax     # 0x10a588
movsbl (%rbx,%rax), %ecx
movb $0x20, 0x7(%rsp)
movq 0x18(%rsp), %rdi
movl %r14d, %esi
movl %r13d, %edx
movq %r15, %r8
movq 0x8(%rsp), %r9
callq 0xd913a
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
testl %ebp, %ebp
jne 0xd954b
testl %eax, %eax
jne 0xd9517
movq 0x8(%rsp), %rdi
callq 0x34fea
testb %al, %al
je 0xd955a
movq 0x10(%rsp), %rdi
leaq 0x9c36(%rip), %rsi      # 0xe3159
leaq 0x2205a(%rip), %rdx     # 0xfb584
leaq 0x31060(%rip), %rcx     # 0x10a591
leaq 0x30fb8(%rip), %r8      # 0x10a4f0
movl $0x36b, %r9d            # imm = 0x36B
xorl %eax, %eax
callq 0x34f1f
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
incq %rbx
cmpq $0x8, %rbx
jne 0xd94d0
jmp 0xd958d
xorl %r12d, %r12d
cmpb $0x20, 0x7(%rsp)
jne 0xd954b
movq 0x10(%rsp), %rdi
leaq 0x9be9(%rip), %rsi      # 0xe3159
leaq 0x31070(%rip), %rdx     # 0x10a5e7
leaq 0x31013(%rip), %rcx     # 0x10a591
leaq 0x30f6b(%rip), %r8      # 0x10a4f0
movl $0x36c, %r9d            # imm = 0x36C
jmp 0xd953e
movq 0x30(%rsp), %rcx
incq %rcx
cmpq $0x8, %rcx
jne 0xd94bd
movq 0x28(%rsp), %rcx
incq %rcx
cmpq $0x8, %rcx
jne 0xd94aa
leaq 0x7(%rsp), %r14
xorl %r15d, %r15d
leaq 0x30fc8(%rip), %rax     # 0x10a588
movsbl (%r15,%rax), %r13d
xorl %ebx, %ebx
movl %r12d, %ebp
leaq 0x30fb7(%rip), %rax     # 0x10a588
movsbl (%rbx,%rax), %ecx
movb $0x20, 0x7(%rsp)
movq 0x18(%rsp), %rdi
movl $0x6e, %esi
movl %r13d, %edx
movq %r14, %r8
movq 0x8(%rsp), %r9
callq 0xd913a
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
testl %ebp, %ebp
jne 0xd9644
testl %eax, %eax
jne 0xd9610
movq 0x8(%rsp), %rdi
callq 0x34fea
testb %al, %al
je 0xd9653
movq 0x10(%rsp), %rdi
leaq 0x9b3d(%rip), %rsi      # 0xe3159
leaq 0x21f61(%rip), %rdx     # 0xfb584
leaq 0x30f67(%rip), %rcx     # 0x10a591
leaq 0x30ebf(%rip), %r8      # 0x10a4f0
movl $0x377, %r9d            # imm = 0x377
xorl %eax, %eax
callq 0x34f1f
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
incq %rbx
cmpq $0x8, %rbx
jne 0xd95c7
jmp 0xd9686
xorl %r12d, %r12d
cmpb $0x58, 0x7(%rsp)
je 0xd9644
movq 0x10(%rsp), %rdi
leaq 0x9af0(%rip), %rsi      # 0xe3159
leaq 0x30f83(%rip), %rdx     # 0x10a5f3
leaq 0x30f1a(%rip), %rcx     # 0x10a591
leaq 0x30e72(%rip), %r8      # 0x10a4f0
movl $0x378, %r9d            # imm = 0x378
jmp 0xd9637
incq %r15
cmpq $0x8, %r15
jne 0xd95b9
leaq 0x7(%rsp), %r14
xorl %r15d, %r15d
leaq 0x30ee6(%rip), %rax     # 0x10a588
movsbl (%r15,%rax), %r13d
xorl %ebx, %ebx
movl %r12d, %ebp
leaq 0x30ed5(%rip), %rax     # 0x10a588
movsbl (%rbx,%rax), %ecx
movb $0x20, 0x7(%rsp)
movq 0x18(%rsp), %rdi
movl %r13d, %esi
movl $0x6e, %edx
movq %r14, %r8
movq 0x8(%rsp), %r9
callq 0xd913a
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
testl %ebp, %ebp
jne 0xd9726
testl %eax, %eax
jne 0xd96f2
movq 0x8(%rsp), %rdi
callq 0x34fea
testb %al, %al
je 0xd9735
movq 0x10(%rsp), %rdi
leaq 0x9a5b(%rip), %rsi      # 0xe3159
leaq 0x21e7f(%rip), %rdx     # 0xfb584
leaq 0x30e85(%rip), %rcx     # 0x10a591
leaq 0x30ddd(%rip), %r8      # 0x10a4f0
movl $0x382, %r9d            # imm = 0x382
xorl %eax, %eax
callq 0x34f1f
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
incq %rbx
cmpq $0x8, %rbx
jne 0xd96a9
jmp 0xd9768
xorl %r12d, %r12d
cmpb $0x58, 0x7(%rsp)
je 0xd9726
movq 0x10(%rsp), %rdi
leaq 0x9a0e(%rip), %rsi      # 0xe3159
leaq 0x30ea1(%rip), %rdx     # 0x10a5f3
leaq 0x30e38(%rip), %rcx     # 0x10a591
leaq 0x30d90(%rip), %r8      # 0x10a4f0
movl $0x383, %r9d            # imm = 0x383
jmp 0xd9719
incq %r15
cmpq $0x8, %r15
jne 0xd969b
movq 0x20(%rsp), %rdi
callq 0x3cc00
leaq 0x30d6a(%rip), %rsi     # 0x10a4f0
movq 0x18(%rsp), %rdi
movl $0x34f, %edx            # imm = 0x34F
callq 0x35c27
movq 0x8(%rsp), %rdi
callq 0x35085
movl %r12d, %eax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x32b84
nop