// File: /workspace/github_c_makefile_star2_O0/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:
subq $0x58, %rsp
movq %rdi, 0x50(%rsp)
movl $0x0, 0x4c(%rsp)
movl $0x0, 0x48(%rsp)
callq 0xc0b0
movq %rax, 0x28(%rsp)
movb $0x20, 0x1f(%rsp)
leaq 0x408ad(%rip), %rax     # 0x18d43c
movq %rax, 0x10(%rsp)
cmpq $0x0, 0x50(%rsp)
je 0x14cbe4
movq 0x50(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x14cbac
jmp 0x14cbe4
movq 0x67425(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x114a9(%rip), %rsi     # 0x15e066
leaq 0x11a84(%rip), %rdx     # 0x15e648
leaq 0x4087a(%rip), %rcx     # 0x18d445
leaq 0x407d2(%rip), %r8      # 0x18d3a4
movl $0x35a, %r9d            # imm = 0x35A
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x14cbe6
callq 0x14c2b0
movq %rax, 0x30(%rsp)
cmpl $0x0, 0x4c(%rsp)
jne 0x14cc3f
movq 0x30(%rsp), %rdi
callq 0x1b720
cmpq $0x13, %rax
je 0x14cc3d
movq 0x50(%rsp), %rdi
leaq 0x13564(%rip), %rsi     # 0x160177
leaq 0x40844(%rip), %rdx     # 0x18d45e
leaq 0x40824(%rip), %rcx     # 0x18d445
leaq 0x4077c(%rip), %r8      # 0x18d3a4
movl $0x35e, %r9d            # imm = 0x35E
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x4c(%rsp) # imm = 0xFFFFFFFF
jmp 0x14cc3f
jmp 0x14cc41
movq 0x50(%rsp), %rdi
callq 0x14c4d0
movq %rax, 0x20(%rsp)
movl $0x0, 0x44(%rsp)
cmpl $0x8, 0x44(%rsp)
jge 0x14cdc9
movq 0x10(%rsp), %rax
movslq 0x44(%rsp), %rcx
movb (%rax,%rcx), %al
movb %al, 0xf(%rsp)
movl $0x0, 0x40(%rsp)
cmpl $0x8, 0x40(%rsp)
jge 0x14cdb7
movq 0x10(%rsp), %rax
movslq 0x40(%rsp), %rcx
movb (%rax,%rcx), %al
movb %al, 0xe(%rsp)
movl $0x0, 0x3c(%rsp)
cmpl $0x8, 0x3c(%rsp)
jge 0x14cda5
movq 0x10(%rsp), %rax
movslq 0x3c(%rsp), %rcx
movb (%rax,%rcx), %al
movb %al, 0xd(%rsp)
movb $0x20, 0x1f(%rsp)
movq 0x20(%rsp), %rdi
movb 0xf(%rsp), %dl
movb 0xe(%rsp), %cl
movb 0xd(%rsp), %al
movq 0x28(%rsp), %r9
leaq 0x1f(%rsp), %r8
movsbl %dl, %esi
movsbl %cl, %edx
movsbl %al, %ecx
callq 0x14c550
movl %eax, 0x48(%rsp)
cmpl $0x0, 0x4c(%rsp)
jne 0x14cd44
cmpl $0x0, 0x48(%rsp)
jne 0x14cd0c
movq 0x28(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x14cd0c
jmp 0x14cd42
movq 0x50(%rsp), %rdi
leaq 0x1345f(%rip), %rsi     # 0x160177
leaq 0x2cccd(%rip), %rdx     # 0x1799ec
leaq 0x4071f(%rip), %rcx     # 0x18d445
leaq 0x40677(%rip), %r8      # 0x18d3a4
movl $0x36b, %r9d            # imm = 0x36B
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x4c(%rsp) # imm = 0xFFFFFFFF
jmp 0x14cd44
jmp 0x14cd46
jmp 0x14cd48
cmpl $0x0, 0x4c(%rsp)
jne 0x14cd91
movsbl 0x1f(%rsp), %eax
cmpl $0x20, %eax
jne 0x14cd8f
movq 0x50(%rsp), %rdi
leaq 0x13412(%rip), %rsi     # 0x160177
leaq 0x4072f(%rip), %rdx     # 0x18d49b
leaq 0x406d2(%rip), %rcx     # 0x18d445
leaq 0x4062a(%rip), %r8      # 0x18d3a4
movl $0x36c, %r9d            # imm = 0x36C
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x4c(%rsp) # imm = 0xFFFFFFFF
jmp 0x14cd91
jmp 0x14cd93
jmp 0x14cd95
movl 0x3c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x3c(%rsp)
jmp 0x14cca0
jmp 0x14cda7
movl 0x40(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x40(%rsp)
jmp 0x14cc7c
jmp 0x14cdb9
movl 0x44(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x44(%rsp)
jmp 0x14cc58
movl $0x0, 0x40(%rsp)
cmpl $0x8, 0x40(%rsp)
jge 0x14cf0a
movq 0x10(%rsp), %rax
movslq 0x40(%rsp), %rcx
movb (%rax,%rcx), %al
movb %al, 0xc(%rsp)
movl $0x0, 0x3c(%rsp)
cmpl $0x8, 0x3c(%rsp)
jge 0x14cef8
movq 0x10(%rsp), %rax
movslq 0x3c(%rsp), %rcx
movb (%rax,%rcx), %al
movb %al, 0xb(%rsp)
movb $0x20, 0x1f(%rsp)
movq 0x20(%rsp), %rdi
movb 0xc(%rsp), %cl
movb 0xb(%rsp), %al
movq 0x28(%rsp), %r9
movl $0x6e, %esi
leaq 0x1f(%rsp), %r8
movsbl %cl, %edx
movsbl %al, %ecx
callq 0x14c550
movl %eax, 0x48(%rsp)
cmpl $0x0, 0x4c(%rsp)
jne 0x14ce97
cmpl $0x0, 0x48(%rsp)
jne 0x14ce5f
movq 0x28(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x14ce5f
jmp 0x14ce95
movq 0x50(%rsp), %rdi
leaq 0x1330c(%rip), %rsi     # 0x160177
leaq 0x2cb7a(%rip), %rdx     # 0x1799ec
leaq 0x405cc(%rip), %rcx     # 0x18d445
leaq 0x40524(%rip), %r8      # 0x18d3a4
movl $0x377, %r9d            # imm = 0x377
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x4c(%rsp) # imm = 0xFFFFFFFF
jmp 0x14ce97
jmp 0x14ce99
jmp 0x14ce9b
cmpl $0x0, 0x4c(%rsp)
jne 0x14cee4
movsbl 0x1f(%rsp), %eax
cmpl $0x58, %eax
je 0x14cee2
movq 0x50(%rsp), %rdi
leaq 0x132bf(%rip), %rsi     # 0x160177
leaq 0x405e8(%rip), %rdx     # 0x18d4a7
leaq 0x4057f(%rip), %rcx     # 0x18d445
leaq 0x404d7(%rip), %r8      # 0x18d3a4
movl $0x378, %r9d            # imm = 0x378
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x4c(%rsp) # imm = 0xFFFFFFFF
jmp 0x14cee4
jmp 0x14cee6
jmp 0x14cee8
movl 0x3c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x3c(%rsp)
jmp 0x14cdf5
jmp 0x14cefa
movl 0x40(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x40(%rsp)
jmp 0x14cdd1
movl $0x0, 0x40(%rsp)
cmpl $0x8, 0x40(%rsp)
jge 0x14d04b
movq 0x10(%rsp), %rax
movslq 0x40(%rsp), %rcx
movb (%rax,%rcx), %al
movb %al, 0xa(%rsp)
movl $0x0, 0x3c(%rsp)
cmpl $0x8, 0x3c(%rsp)
jge 0x14d039
movq 0x10(%rsp), %rax
movslq 0x3c(%rsp), %rcx
movb (%rax,%rcx), %al
movb %al, 0x9(%rsp)
movb $0x20, 0x1f(%rsp)
movq 0x20(%rsp), %rdi
movb 0xa(%rsp), %cl
movb 0x9(%rsp), %al
movq 0x28(%rsp), %r9
movl $0x6e, %edx
leaq 0x1f(%rsp), %r8
movsbl %cl, %esi
movsbl %al, %ecx
callq 0x14c550
movl %eax, 0x48(%rsp)
cmpl $0x0, 0x4c(%rsp)
jne 0x14cfd8
cmpl $0x0, 0x48(%rsp)
jne 0x14cfa0
movq 0x28(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0x14cfa0
jmp 0x14cfd6
movq 0x50(%rsp), %rdi
leaq 0x131cb(%rip), %rsi     # 0x160177
leaq 0x2ca39(%rip), %rdx     # 0x1799ec
leaq 0x4048b(%rip), %rcx     # 0x18d445
leaq 0x403e3(%rip), %r8      # 0x18d3a4
movl $0x382, %r9d            # imm = 0x382
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x4c(%rsp) # imm = 0xFFFFFFFF
jmp 0x14cfd8
jmp 0x14cfda
jmp 0x14cfdc
cmpl $0x0, 0x4c(%rsp)
jne 0x14d025
movsbl 0x1f(%rsp), %eax
cmpl $0x58, %eax
je 0x14d023
movq 0x50(%rsp), %rdi
leaq 0x1317e(%rip), %rsi     # 0x160177
leaq 0x404a7(%rip), %rdx     # 0x18d4a7
leaq 0x4043e(%rip), %rcx     # 0x18d445
leaq 0x40396(%rip), %r8      # 0x18d3a4
movl $0x383, %r9d            # imm = 0x383
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x4c(%rsp) # imm = 0xFFFFFFFF
jmp 0x14d025
jmp 0x14d027
jmp 0x14d029
movl 0x3c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x3c(%rsp)
jmp 0x14cf36
jmp 0x14d03b
movl 0x40(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x40(%rsp)
jmp 0x14cf12
movq 0x30(%rsp), %rdi
callq 0x1b780
movq 0x20(%rsp), %rdi
callq 0x14cb30
movq 0x28(%rsp), %rdi
callq 0xc490
movl 0x4c(%rsp), %eax
addq $0x58, %rsp
retq
nopw %cs:(%rax,%rax)