// File: /workspace/github_c_makefile_star2_O1/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 0x35584
movq %rax, 0x8(%rsp)
movb $0x20, 0x7(%rsp)
testq %rbx, %rbx
je 0xd8cfc
movq %rbx, %rdi
callq 0x3566a
testb %al, %al
jne 0xd90d8
callq 0xd88ec
movq %rax, 0x28(%rsp)
movq %rax, %rdi
callq 0x3d560
xorl %r13d, %r13d
cmpq $0x13, %rax
je 0xd8d49
leaq 0xa45b(%rip), %rsi      # 0xe3179
leaq 0x31a65(%rip), %rdx     # 0x10a78a
leaq 0x31a45(%rip), %rcx     # 0x10a771
leaq 0x3199d(%rip), %r8      # 0x10a6d0
movq %rbx, %rdi
movl $0x35e, %r9d            # imm = 0x35E
xorl %eax, %eax
callq 0x3559f
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
movq %rbx, 0x10(%rsp)
leaq 0x3197b(%rip), %rdx     # 0x10a6d0
movl $0x1, %edi
movl $0x8, %esi
movl $0x30b, %ecx            # imm = 0x30B
callq 0x3601f
leaq 0x79a10(%rip), %rcx     # 0x152780
movq %rax, 0x20(%rsp)
movq %rcx, (%rax)
leaq 0x7(%rsp), %r15
xorl %ecx, %ecx
leaq 0x319e2(%rip), %rax     # 0x10a768
movq %rcx, 0x30(%rsp)
movsbl (%rcx,%rax), %ebx
xorl %ecx, %ecx
leaq 0x319d0(%rip), %rax     # 0x10a768
movq %rcx, 0x18(%rsp)
movsbl (%rcx,%rax), %r12d
xorl %r14d, %r14d
movl %r13d, %ebp
leaq 0x319b9(%rip), %rax     # 0x10a768
movsbl (%r14,%rax), %ecx
movb $0x20, 0x7(%rsp)
movq 0x20(%rsp), %rdi
movl %ebx, %esi
movl %r12d, %edx
movq %r15, %r8
movq 0x8(%rsp), %r9
callq 0xd8a2c
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
movb $0x1, %cl
testl %ebp, %ebp
jne 0xd8e2c
testl %eax, %eax
jne 0xd8df6
movq 0x8(%rsp), %rdi
callq 0x3566a
xorl %ecx, %ecx
movl $0x0, %r13d
testb %al, %al
je 0xd8e2c
movq 0x10(%rsp), %rdi
leaq 0xa377(%rip), %rsi      # 0xe3179
leaq 0x2280b(%rip), %rdx     # 0xfb614
leaq 0x31961(%rip), %rcx     # 0x10a771
leaq 0x318b9(%rip), %r8      # 0x10a6d0
movl $0x36b, %r9d            # imm = 0x36B
xorl %eax, %eax
callq 0x3559f
movb $0x1, %cl
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
testb %cl, %cl
jne 0xd8e6b
cmpb $0x20, 0x7(%rsp)
jne 0xd8e6b
movq 0x10(%rsp), %rdi
leaq 0xa336(%rip), %rsi      # 0xe3179
leaq 0x3197d(%rip), %rdx     # 0x10a7c7
leaq 0x31920(%rip), %rcx     # 0x10a771
leaq 0x31878(%rip), %r8      # 0x10a6d0
movl $0x36c, %r9d            # imm = 0x36C
xorl %eax, %eax
callq 0x3559f
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
incq %r14
cmpq $0x8, %r14
jne 0xd8da5
movq 0x18(%rsp), %rcx
incq %rcx
cmpq $0x8, %rcx
jne 0xd8d91
movq 0x30(%rsp), %rcx
incq %rcx
cmpq $0x8, %rcx
jne 0xd8d7f
leaq 0x7(%rsp), %r14
leaq 0x31828(%rip), %r15     # 0x10a6d0
xorl %ecx, %ecx
leaq 0x318b7(%rip), %rax     # 0x10a768
movq %rcx, 0x18(%rsp)
movsbl (%rcx,%rax), %ebx
xorl %r12d, %r12d
movl %r13d, %ebp
leaq 0x318a1(%rip), %rax     # 0x10a768
movsbl (%r12,%rax), %ecx
movb $0x20, 0x7(%rsp)
movq 0x20(%rsp), %rdi
movl $0x6e, %esi
movl %ebx, %edx
movq %r14, %r8
movq 0x8(%rsp), %r9
callq 0xd8a2c
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
movb $0x1, %cl
testl %ebp, %ebp
jne 0xd8f42
testl %eax, %eax
jne 0xd8f10
movq 0x8(%rsp), %rdi
callq 0x3566a
xorl %ecx, %ecx
movl $0x0, %r13d
testb %al, %al
je 0xd8f42
movq 0x10(%rsp), %rdi
leaq 0xa25d(%rip), %rsi      # 0xe3179
leaq 0x226f1(%rip), %rdx     # 0xfb614
leaq 0x31847(%rip), %rcx     # 0x10a771
movq %r15, %r8
movl $0x377, %r9d            # imm = 0x377
xorl %eax, %eax
callq 0x3559f
movb $0x1, %cl
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
testb %cl, %cl
jne 0xd8f7d
cmpb $0x58, 0x7(%rsp)
je 0xd8f7d
movq 0x10(%rsp), %rdi
leaq 0xa220(%rip), %rsi      # 0xe3179
leaq 0x31873(%rip), %rdx     # 0x10a7d3
leaq 0x3180a(%rip), %rcx     # 0x10a771
movq %r15, %r8
movl $0x378, %r9d            # imm = 0x378
xorl %eax, %eax
callq 0x3559f
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
incq %r12
cmpq $0x8, %r12
jne 0xd8ebd
movq 0x18(%rsp), %rcx
incq %rcx
cmpq $0x8, %rcx
jne 0xd8eaa
leaq 0x7(%rsp), %r14
leaq 0x31728(%rip), %r15     # 0x10a6d0
xorl %ecx, %ecx
leaq 0x317b7(%rip), %rax     # 0x10a768
movq %rcx, 0x18(%rsp)
movsbl (%rcx,%rax), %ebx
xorl %r12d, %r12d
movl %r13d, %ebp
leaq 0x317a1(%rip), %rax     # 0x10a768
movsbl (%r12,%rax), %ecx
movb $0x20, 0x7(%rsp)
movq 0x20(%rsp), %rdi
movl %ebx, %esi
movl $0x6e, %edx
movq %r14, %r8
movq 0x8(%rsp), %r9
callq 0xd8a2c
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
movb $0x1, %cl
testl %ebp, %ebp
jne 0xd9042
testl %eax, %eax
jne 0xd9010
movq 0x8(%rsp), %rdi
callq 0x3566a
xorl %ecx, %ecx
movl $0x0, %r13d
testb %al, %al
je 0xd9042
movq 0x10(%rsp), %rdi
leaq 0xa15d(%rip), %rsi      # 0xe3179
leaq 0x225f1(%rip), %rdx     # 0xfb614
leaq 0x31747(%rip), %rcx     # 0x10a771
movq %r15, %r8
movl $0x382, %r9d            # imm = 0x382
xorl %eax, %eax
callq 0x3559f
movb $0x1, %cl
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
testb %cl, %cl
jne 0xd907d
cmpb $0x58, 0x7(%rsp)
je 0xd907d
movq 0x10(%rsp), %rdi
leaq 0xa120(%rip), %rsi      # 0xe3179
leaq 0x31773(%rip), %rdx     # 0x10a7d3
leaq 0x3170a(%rip), %rcx     # 0x10a771
movq %r15, %r8
movl $0x383, %r9d            # imm = 0x383
xorl %eax, %eax
callq 0x3559f
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
incq %r12
cmpq $0x8, %r12
jne 0xd8fbd
movq 0x18(%rsp), %rcx
incq %rcx
cmpq $0x8, %rcx
jne 0xd8faa
movq 0x28(%rsp), %rdi
callq 0x3d573
leaq 0x31623(%rip), %rsi     # 0x10a6d0
movq 0x20(%rsp), %rdi
movl $0x34f, %edx            # imm = 0x34F
callq 0x362a0
movq 0x8(%rsp), %rdi
callq 0x35705
movl %r13d, %eax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x33181
nopl (%rax)