// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/encseq.c
// Function: encseq2bytecode
static void encseq2bytecode(GtUchar *dest,
                            const GtEncseq *encseq,
                            const GtUword startindex,
                            const GtUword len)
{
  GtUword i, j;

  gt_assert(encseq != NULL && dest != NULL);
  if (encseq->twobitencoding != NULL) {
    if (len >= 3UL) {
      for (i=startindex, j=0; i < startindex + len - 3; i+=4, j++) {
        dest[j] =
          (GtUchar) (EXTRACTENCODEDCHAR(encseq->twobitencoding, i) << 6)
          | (GtUchar) (EXTRACTENCODEDCHAR(encseq->twobitencoding, i+1) << 4)
          | (GtUchar) (EXTRACTENCODEDCHAR(encseq->twobitencoding, i+2) << 2)
          | (GtUchar) EXTRACTENCODEDCHAR(encseq->twobitencoding, i+3);
      }
    }
    else {
      i = startindex;
      j = 0;
    }
    switch (GT_MOD4(len)) {
      case 1UL:
        dest[j] = (GtUchar) EXTRACTENCODEDCHAR(encseq->twobitencoding, i) << 6;
        break;
      case 2UL:
        dest[j] =
          (GtUchar) (EXTRACTENCODEDCHAR(encseq->twobitencoding, i) << 6)
          | (GtUchar) (EXTRACTENCODEDCHAR(encseq->twobitencoding, i+1) << 4);
        break;
      case 3UL:
        dest[j] =
          (GtUchar) (EXTRACTENCODEDCHAR(encseq->twobitencoding, i) << 6)
          | (GtUchar) (EXTRACTENCODEDCHAR(encseq->twobitencoding, i+1) << 4)
          | (GtUchar) (EXTRACTENCODEDCHAR(encseq->twobitencoding, i+2) << 2);
    }
  } else if (encseq->sat == GT_ACCESS_TYPE_BYTECOMPRESS) {
    if (len >= 3UL) {
      for (i=startindex, j=0; i < startindex + len - 3; i+=4, j++) {
        dest[j] = (GtUchar) (bitpackarray_get_uint32(encseq->bitpackarray,
                                                     (BitOffset) i) << 6)
                | (GtUchar) (bitpackarray_get_uint32(encseq->bitpackarray,
                                                     (BitOffset) i+1) << 4)
                | (GtUchar) (bitpackarray_get_uint32(encseq->bitpackarray,
                                                     (BitOffset) i+2) << 2)
                | (GtUchar) (bitpackarray_get_uint32(encseq->bitpackarray,
                                                     (BitOffset) i+3));
      }
    }
    else {
      i = startindex;
      j = 0;
    }
    switch (GT_MOD4(len)) {
      case 1UL:
        dest[j] = (GtUchar) (bitpackarray_get_uint32(encseq->bitpackarray,
                                                     (BitOffset) i) << 6);
        break;
      case 2UL:
        dest[j] = (GtUchar) (bitpackarray_get_uint32(encseq->bitpackarray,
                                                     (BitOffset) i) << 6)
                | (GtUchar) (bitpackarray_get_uint32(encseq->bitpackarray,
                                                     (BitOffset) i+1) << 4);
        break;
      case 3UL:
        dest[j] = (GtUchar) (bitpackarray_get_uint32(encseq->bitpackarray,
                                                     (BitOffset) i) << 6)
                | (GtUchar) (bitpackarray_get_uint32(encseq->bitpackarray,
                                                     (BitOffset) i+1) << 4)
                | (GtUchar) (bitpackarray_get_uint32(encseq->bitpackarray,
                                                     (BitOffset) i+2) << 2);
    }
  }
}

// Assembly:
subq $0x68, %rsp
movq %rdi, 0x60(%rsp)
movq %rsi, 0x58(%rsp)
movq %rdx, 0x50(%rsp)
movq %rcx, 0x48(%rsp)
cmpq $0x0, 0x58(%rsp)
je 0x1137c8
cmpq $0x0, 0x60(%rsp)
jne 0x113800
movq 0xa0809(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x4a88d(%rip), %rsi     # 0x15e066
leaq 0x7517e(%rip), %rdx     # 0x18895e
leaq 0x75196(%rip), %rcx     # 0x18897d
leaq 0x71e70(%rip), %r8      # 0x18565e
movl $0x8c, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x113802
movq 0x58(%rsp), %rax
cmpq $0x0, 0x280(%rax)
je 0x113b9e
cmpq $0x3, 0x48(%rsp)
jb 0x113991
movq 0x50(%rsp), %rax
movq %rax, 0x40(%rsp)
movq $0x0, 0x38(%rsp)
movq 0x40(%rsp), %rax
movq 0x50(%rsp), %rcx
addq 0x48(%rsp), %rcx
subq $0x3, %rcx
cmpq %rcx, %rax
jae 0x11398f
movq 0x58(%rsp), %rax
movq 0x280(%rax), %rax
movq 0x40(%rsp), %rcx
shrq $0x5, %rcx
movq (%rax,%rcx,8), %rax
movq 0x40(%rsp), %rdx
andq $0x1f, %rdx
movl $0x1f, %ecx
subq %rdx, %rcx
shlq %rcx
shrq %cl, %rax
andq $0x3, %rax
shlq $0x6, %rax
movzbl %al, %eax
movq 0x58(%rsp), %rcx
movq 0x280(%rcx), %rcx
movq 0x40(%rsp), %rdx
addq $0x1, %rdx
shrq $0x5, %rdx
movq (%rcx,%rdx,8), %rdx
movq 0x40(%rsp), %rsi
addq $0x1, %rsi
andq $0x1f, %rsi
movl $0x1f, %ecx
subq %rsi, %rcx
shlq %rcx
shrq %cl, %rdx
movq %rdx, %rcx
andq $0x3, %rcx
shlq $0x4, %rcx
movzbl %cl, %ecx
orl %ecx, %eax
movq 0x58(%rsp), %rcx
movq 0x280(%rcx), %rcx
movq 0x40(%rsp), %rdx
addq $0x2, %rdx
shrq $0x5, %rdx
movq (%rcx,%rdx,8), %rdx
movq 0x40(%rsp), %rsi
addq $0x2, %rsi
andq $0x1f, %rsi
movl $0x1f, %ecx
subq %rsi, %rcx
shlq %rcx
shrq %cl, %rdx
movq %rdx, %rcx
andq $0x3, %rcx
shlq $0x2, %rcx
movzbl %cl, %ecx
orl %ecx, %eax
movq 0x58(%rsp), %rcx
movq 0x280(%rcx), %rcx
movq 0x40(%rsp), %rdx
addq $0x3, %rdx
shrq $0x5, %rdx
movq (%rcx,%rdx,8), %rdx
movq 0x40(%rsp), %rsi
addq $0x3, %rsi
andq $0x1f, %rsi
movl $0x1f, %ecx
subq %rsi, %rcx
shlq %rcx
shrq %cl, %rdx
movq %rdx, %rcx
andq $0x3, %rcx
movzbl %cl, %ecx
orl %ecx, %eax
movb %al, %dl
movq 0x60(%rsp), %rax
movq 0x38(%rsp), %rcx
movb %dl, (%rax,%rcx)
movq 0x40(%rsp), %rax
addq $0x4, %rax
movq %rax, 0x40(%rsp)
movq 0x38(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x38(%rsp)
jmp 0x113834
jmp 0x1139a4
movq 0x50(%rsp), %rax
movq %rax, 0x40(%rsp)
movq $0x0, 0x38(%rsp)
movq 0x48(%rsp), %rax
andl $0x3, %eax
movq %rax, 0x30(%rsp)
subq $0x1, %rax
je 0x1139da
jmp 0x1139b9
movq 0x30(%rsp), %rax
subq $0x2, %rax
je 0x113a28
jmp 0x1139c6
movq 0x30(%rsp), %rax
subq $0x3, %rax
je 0x113abf
jmp 0x113b99
movq 0x58(%rsp), %rax
movq 0x280(%rax), %rax
movq 0x40(%rsp), %rcx
shrq $0x5, %rcx
movq (%rax,%rcx,8), %rax
movq 0x40(%rsp), %rdx
andq $0x1f, %rdx
movl $0x1f, %ecx
subq %rdx, %rcx
shlq %rcx
shrq %cl, %rax
andq $0x3, %rax
movzbl %al, %eax
shll $0x6, %eax
movb %al, %dl
movq 0x60(%rsp), %rax
movq 0x38(%rsp), %rcx
movb %dl, (%rax,%rcx)
jmp 0x113b99
movq 0x58(%rsp), %rax
movq 0x280(%rax), %rax
movq 0x40(%rsp), %rcx
shrq $0x5, %rcx
movq (%rax,%rcx,8), %rax
movq 0x40(%rsp), %rdx
andq $0x1f, %rdx
movl $0x1f, %ecx
subq %rdx, %rcx
shlq %rcx
shrq %cl, %rax
andq $0x3, %rax
shlq $0x6, %rax
movzbl %al, %eax
movq 0x58(%rsp), %rcx
movq 0x280(%rcx), %rcx
movq 0x40(%rsp), %rdx
addq $0x1, %rdx
shrq $0x5, %rdx
movq (%rcx,%rdx,8), %rdx
movq 0x40(%rsp), %rsi
addq $0x1, %rsi
andq $0x1f, %rsi
movl $0x1f, %ecx
subq %rsi, %rcx
shlq %rcx
shrq %cl, %rdx
movq %rdx, %rcx
andq $0x3, %rcx
shlq $0x4, %rcx
movzbl %cl, %ecx
orl %ecx, %eax
movb %al, %dl
movq 0x60(%rsp), %rax
movq 0x38(%rsp), %rcx
movb %dl, (%rax,%rcx)
jmp 0x113b99
movq 0x58(%rsp), %rax
movq 0x280(%rax), %rax
movq 0x40(%rsp), %rcx
shrq $0x5, %rcx
movq (%rax,%rcx,8), %rax
movq 0x40(%rsp), %rdx
andq $0x1f, %rdx
movl $0x1f, %ecx
subq %rdx, %rcx
shlq %rcx
shrq %cl, %rax
andq $0x3, %rax
shlq $0x6, %rax
movzbl %al, %eax
movq 0x58(%rsp), %rcx
movq 0x280(%rcx), %rcx
movq 0x40(%rsp), %rdx
addq $0x1, %rdx
shrq $0x5, %rdx
movq (%rcx,%rdx,8), %rdx
movq 0x40(%rsp), %rsi
addq $0x1, %rsi
andq $0x1f, %rsi
movl $0x1f, %ecx
subq %rsi, %rcx
shlq %rcx
shrq %cl, %rdx
movq %rdx, %rcx
andq $0x3, %rcx
shlq $0x4, %rcx
movzbl %cl, %ecx
orl %ecx, %eax
movq 0x58(%rsp), %rcx
movq 0x280(%rcx), %rcx
movq 0x40(%rsp), %rdx
addq $0x2, %rdx
shrq $0x5, %rdx
movq (%rcx,%rdx,8), %rdx
movq 0x40(%rsp), %rsi
addq $0x2, %rsi
andq $0x1f, %rsi
movl $0x1f, %ecx
subq %rsi, %rcx
shlq %rcx
shrq %cl, %rdx
movq %rdx, %rcx
andq $0x3, %rcx
shlq $0x2, %rcx
movzbl %cl, %ecx
orl %ecx, %eax
movb %al, %dl
movq 0x60(%rsp), %rax
movq 0x38(%rsp), %rcx
movb %dl, (%rax,%rcx)
jmp 0x113e0f
movq 0x58(%rsp), %rax
cmpl $0x1, (%rax)
jne 0x113e0d
cmpq $0x3, 0x48(%rsp)
jb 0x113cb6
movq 0x50(%rsp), %rax
movq %rax, 0x40(%rsp)
movq $0x0, 0x38(%rsp)
movq 0x40(%rsp), %rax
movq 0x50(%rsp), %rcx
addq 0x48(%rsp), %rcx
subq $0x3, %rcx
cmpq %rcx, %rax
jae 0x113cb4
movq 0x58(%rsp), %rax
movq 0x2a0(%rax), %rdi
movq 0x40(%rsp), %rsi
callq 0x114930
shll $0x6, %eax
movzbl %al, %eax
movl %eax, 0x24(%rsp)
movq 0x58(%rsp), %rax
movq 0x2a0(%rax), %rdi
movq 0x40(%rsp), %rsi
addq $0x1, %rsi
callq 0x114930
movl %eax, %ecx
movl 0x24(%rsp), %eax
shll $0x4, %ecx
movzbl %cl, %ecx
orl %ecx, %eax
movl %eax, 0x28(%rsp)
movq 0x58(%rsp), %rax
movq 0x2a0(%rax), %rdi
movq 0x40(%rsp), %rsi
addq $0x2, %rsi
callq 0x114930
movl %eax, %ecx
movl 0x28(%rsp), %eax
shll $0x2, %ecx
movzbl %cl, %ecx
orl %ecx, %eax
movl %eax, 0x2c(%rsp)
movq 0x58(%rsp), %rax
movq 0x2a0(%rax), %rdi
movq 0x40(%rsp), %rsi
addq $0x3, %rsi
callq 0x114930
movl %eax, %ecx
movl 0x2c(%rsp), %eax
movzbl %cl, %ecx
orl %ecx, %eax
movb %al, %dl
movq 0x60(%rsp), %rax
movq 0x38(%rsp), %rcx
movb %dl, (%rax,%rcx)
movq 0x40(%rsp), %rax
addq $0x4, %rax
movq %rax, 0x40(%rsp)
movq 0x38(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x38(%rsp)
jmp 0x113bcb
jmp 0x113cc9
movq 0x50(%rsp), %rax
movq %rax, 0x40(%rsp)
movq $0x0, 0x38(%rsp)
movq 0x48(%rsp), %rax
andl $0x3, %eax
movq %rax, 0x18(%rsp)
subq $0x1, %rax
je 0x113cff
jmp 0x113cde
movq 0x18(%rsp), %rax
subq $0x2, %rax
je 0x113d2c
jmp 0x113ceb
movq 0x18(%rsp), %rax
subq $0x3, %rax
je 0x113d88
jmp 0x113e0b
movq 0x58(%rsp), %rax
movq 0x2a0(%rax), %rdi
movq 0x40(%rsp), %rsi
callq 0x114930
shll $0x6, %eax
movb %al, %dl
movq 0x60(%rsp), %rax
movq 0x38(%rsp), %rcx
movb %dl, (%rax,%rcx)
jmp 0x113e0b
movq 0x58(%rsp), %rax
movq 0x2a0(%rax), %rdi
movq 0x40(%rsp), %rsi
callq 0x114930
shll $0x6, %eax
movzbl %al, %eax
movl %eax, 0x14(%rsp)
movq 0x58(%rsp), %rax
movq 0x2a0(%rax), %rdi
movq 0x40(%rsp), %rsi
addq $0x1, %rsi
callq 0x114930
movl %eax, %ecx
movl 0x14(%rsp), %eax
shll $0x4, %ecx
movzbl %cl, %ecx
orl %ecx, %eax
movb %al, %dl
movq 0x60(%rsp), %rax
movq 0x38(%rsp), %rcx
movb %dl, (%rax,%rcx)
jmp 0x113e0b
movq 0x58(%rsp), %rax
movq 0x2a0(%rax), %rdi
movq 0x40(%rsp), %rsi
callq 0x114930
shll $0x6, %eax
movzbl %al, %eax
movl %eax, 0xc(%rsp)
movq 0x58(%rsp), %rax
movq 0x2a0(%rax), %rdi
movq 0x40(%rsp), %rsi
addq $0x1, %rsi
callq 0x114930
movl %eax, %ecx
movl 0xc(%rsp), %eax
shll $0x4, %ecx
movzbl %cl, %ecx
orl %ecx, %eax
movl %eax, 0x10(%rsp)
movq 0x58(%rsp), %rax
movq 0x2a0(%rax), %rdi
movq 0x40(%rsp), %rsi
addq $0x2, %rsi
callq 0x114930
movl %eax, %ecx
movl 0x10(%rsp), %eax
shll $0x2, %ecx
movzbl %cl, %ecx
orl %ecx, %eax
movb %al, %dl
movq 0x60(%rsp), %rax
movq 0x38(%rsp), %rcx
movb %dl, (%rax,%rcx)
jmp 0x113e0d
jmp 0x113e0f
addq $0x68, %rsp
retq
nopw %cs:(%rax,%rax)