// File: /workspace/github_c_makefile_star2_O2/genometools[P]genometools/src/extended/rcr.c
// Function: gt_rcr_decoder_new
GtRcrDecoder *gt_rcr_decoder_new(const char *name, const GtEncseq *ref,
                                 GtTimer *timer, GtError *err)
{
  bool is_not_at_pageborder;
  GtUword pagesize = gt_pagesize();
  GtWord filepos;
  GtRcrDecoder *rcr_dec;

  gt_assert(name);

  if (timer != NULL)
    gt_timer_show_progress(timer, "initializing RcrDecoder", stdout);
  gt_error_check(err);
  if (!(gt_alphabet_is_dna(gt_encseq_alphabet(ref)))) {
    gt_error_set(err, "alphabet has to be DNA");
    return NULL;
  }
  rcr_dec = gt_rcr_decoder_init(name, ref, err);

  rcr_read_header(rcr_dec);

  gt_assert(rcr_dec != NULL && rcr_dec->fp != NULL);
  filepos = ftell(rcr_dec->fp);
  is_not_at_pageborder = (filepos % pagesize) != 0;
  if (is_not_at_pageborder)
    filepos = (filepos / pagesize + 1) * pagesize;

  gt_safe_assign(rcr_dec->startofencoding, filepos);
  gt_fa_fclose(rcr_dec->fp);
  return rcr_dec;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rcx, %r15
movq %rdx, %rbx
movq %rsi, %r12
movq %rdi, %r13
callq 0x6be41
testq %r13, %r13
je 0x10b6c4
movq %rax, %r14
testq %rbx, %rbx
je 0x10b032
movq 0x32ce90(%rip), %rax    # 0x437eb0
movq (%rax), %rdx
leaq 0x2240e5(%rip), %rsi    # 0x32f10f
movq %rbx, %rdi
callq 0xaf86f
testq %r15, %r15
je 0x10b047
movq %r15, %rdi
callq 0x89eb7
testb %al, %al
jne 0x10b6f2
movq %r12, %rdi
callq 0x754dd
movq %rax, %rdi
callq 0x5741b
testb %al, %al
je 0x10b1b0
movq %r14, 0x28(%rsp)
movq %r12, %rdi
callq 0x754dd
movq %rax, %rdi
callq 0x56cd2
movl %eax, %ebx
leaq 0x223fb6(%rip), %rbp    # 0x32f033
movl $0xe8, %edi
movq %rbp, %rsi
movl $0x81f, %edx            # imm = 0x81F
callq 0x93160
movq %rax, %r14
movq %r13, 0x58(%rax)
movq %r13, %rdi
callq 0xacbd1
movq %rax, 0x48(%r14)
leaq 0x224250(%rip), %rsi    # 0x32f2f9
movq %rax, %rdi
callq 0xacbfb
movq %r12, 0x50(%r14)
incq %rbx
xorps %xmm0, %xmm0
movups %xmm0, 0x8(%r14)
movups %xmm0, 0x18(%r14)
movups %xmm0, 0x28(%r14)
pushq $0x8
popq %rsi
movq %rbx, %rdi
movq %rbp, %rdx
movl $0x82d, %ecx            # imm = 0x82D
callq 0x9334a
movq %rax, 0x60(%r14)
movq 0x48(%r14), %rdi
callq 0xad1fa
leaq 0x23a9ac(%rip), %rsi    # 0x345a9d
movq %rax, %rdi
movq %rbp, %rdx
movl $0x830, %ecx            # imm = 0x830
movq %r15, %r8
callq 0x8a156
movq %rax, %rbx
movq %rax, (%r14)
testq %rax, %rax
jne 0x10b11a
movq %r14, %rdi
callq 0x10c978
xorl %r14d, %r14d
leaq 0xb8(%r14), %rdi
pushq $0x8
popq %rsi
pushq $0x1
popq %rdx
movq %rbx, %rcx
callq 0xb2fab
cmpq $0x1, %rax
jne 0x10b720
leaq 0xe0(%r14), %rbx
movq (%r14), %rcx
pushq $0x1
popq %rdx
movq %rbx, %rdi
movq %rdx, %rsi
callq 0xb2fab
cmpq $0x1, %rax
jne 0x10b751
cmpb $0x1, (%rbx)
jne 0x10b1c9
leaq 0xd0(%r14), %rdi
movq (%r14), %rcx
pushq $0x8
popq %rsi
pushq $0x1
popq %rdx
callq 0xb2fab
cmpq $0x1, %rax
je 0x10b293
movq 0x32cde2(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d9e83(%rip), %rsi    # 0x2e5013
leaq 0x217d42(%rip), %rdx    # 0x322ed9
leaq 0x2244ee(%rip), %rcx    # 0x32f68c
leaq 0x223e8e(%rip), %r8     # 0x32f033
movl $0x593, %r9d            # imm = 0x593
jmp 0x10b6b8
leaq 0x223ebf(%rip), %rsi    # 0x32f076
xorl %r14d, %r14d
movq %r15, %rdi
xorl %eax, %eax
callq 0x89dbb
jmp 0x10b58b
callq 0x6d958
movq %rax, %r15
movq (%r14), %rcx
leaq 0x18(%rsp), %rdi
pushq $0x8
popq %rsi
pushq $0x1
popq %rdx
callq 0xb2fab
cmpq $0x1, %rax
jne 0x10b998
movq (%r14), %rcx
leaq 0x30(%rsp), %rdi
pushq $0x8
popq %rsi
pushq $0x1
popq %rdx
callq 0xb2fab
cmpq $0x1, %rax
jne 0x10b9c9
xorl %r12d, %r12d
pushq $0x8
popq %r13
pushq $0x1
popq %rbp
leaq 0x8(%rsp), %rbx
cmpq 0x18(%rsp), %r12
jae 0x10b270
movq (%r14), %rcx
leaq 0x10(%rsp), %rdi
movq %r13, %rsi
movq %rbp, %rdx
callq 0xb2fab
cmpq $0x1, %rax
jne 0x10b5ff
movq (%r14), %rcx
movq %rbx, %rdi
movq %r13, %rsi
movq %rbp, %rdx
callq 0xb2fab
cmpq $0x1, %rax
jne 0x10b630
movq 0x10(%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r15, %rdi
callq 0x6d975
incq %r12
jmp 0x10b21a
movq 0x30(%rsp), %rdx
incq %rdx
leaq 0x183d(%rip), %rsi      # 0x10cabc
movq %r15, %rdi
callq 0xf04b4
movq %rax, 0x20(%r14)
movq %r15, %rdi
callq 0x6e064
leaq 0xe1(%r14), %rbx
movq (%r14), %rcx
pushq $0x1
popq %rdx
movq %rbx, %rdi
movq %rdx, %rsi
callq 0xb2fab
cmpq $0x1, %rax
jne 0x10b782
leaq 0xe2(%r14), %r15
movq (%r14), %rcx
pushq $0x1
popq %rdx
movq %r15, %rdi
movq %rdx, %rsi
callq 0xb2fab
cmpq $0x1, %rax
jne 0x10b7b3
cmpb $0x0, (%rbx)
jne 0x10b2e6
cmpb $0x1, (%r15)
jne 0x10b390
callq 0x6d958
movq %rax, %r15
movq (%r14), %rcx
leaq 0x18(%rsp), %rdi
pushq $0x8
popq %rsi
pushq $0x1
popq %rdx
callq 0xb2fab
cmpq $0x1, %rax
jne 0x10b967
xorl %r12d, %r12d
pushq $0x8
popq %r13
pushq $0x1
popq %rbp
leaq 0x8(%rsp), %rbx
cmpq 0x18(%rsp), %r12
jae 0x10b370
movq (%r14), %rcx
leaq 0x10(%rsp), %rdi
movq %r13, %rsi
movq %rbp, %rdx
callq 0xb2fab
cmpq $0x1, %rax
jne 0x10b59d
movq (%r14), %rcx
movq %rbx, %rdi
movq %r13, %rsi
movq %rbp, %rdx
callq 0xb2fab
cmpq $0x1, %rax
jne 0x10b5ce
movq 0x10(%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r15, %rdi
callq 0x6d975
incq %r12
jmp 0x10b31a
leaq 0x1745(%rip), %rsi      # 0x10cabc
movl $0x100, %edx            # imm = 0x100
movq %r15, %rdi
callq 0xf04b4
movq %rax, 0x28(%r14)
movq %r15, %rdi
callq 0x6e064
leaq 0xe3(%r14), %rbx
movq (%r14), %rcx
pushq $0x1
popq %rdx
movq %rbx, %rdi
movq %rdx, %rsi
callq 0xb2fab
cmpq $0x1, %rax
jne 0x10b7e4
cmpb $0x1, (%rbx)
jne 0x10b465
callq 0x6d958
movq %rax, %r15
movq (%r14), %rcx
leaq 0x18(%rsp), %rdi
pushq $0x8
popq %rsi
pushq $0x1
popq %rdx
callq 0xb2fab
cmpq $0x1, %rax
jne 0x10b9fa
xorl %r12d, %r12d
pushq $0x8
popq %r13
pushq $0x1
popq %rbp
leaq 0x8(%rsp), %rbx
cmpq 0x18(%rsp), %r12
jae 0x10b445
movq (%r14), %rcx
leaq 0x10(%rsp), %rdi
movq %r13, %rsi
movq %rbp, %rdx
callq 0xb2fab
cmpq $0x1, %rax
jne 0x10b65e
movq (%r14), %rcx
movq %rbx, %rdi
movq %r13, %rsi
movq %rbp, %rdx
callq 0xb2fab
cmpq $0x1, %rax
jne 0x10b68c
movq 0x10(%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %r15, %rdi
callq 0x6d975
incq %r12
jmp 0x10b3ef
leaq 0x1670(%rip), %rsi      # 0x10cabc
movl $0x100, %edx            # imm = 0x100
movq %r15, %rdi
callq 0xf04b4
movq %rax, 0x30(%r14)
movq %r15, %rdi
callq 0x6e064
movq (%r14), %rcx
leaq 0x20(%rsp), %rdi
pushq $0x8
popq %rsi
pushq $0x1
popq %rdx
callq 0xb2fab
cmpq $0x1, %rax
jne 0x10b815
leaq 0x20(%rsp), %rbx
movq (%rbx), %rdi
callq 0xe6f70
movq %rax, 0x10(%r14)
movq (%r14), %rcx
pushq $0x8
popq %rsi
pushq $0x1
popq %rdx
movq %rbx, %rdi
callq 0xb2fab
cmpq $0x1, %rax
jne 0x10b846
movq 0x20(%rsp), %rdi
cmpq $-0x1, %rdi
je 0x10b4c2
callq 0xe6f70
movq %rax, 0x18(%r14)
leaq 0x68(%r14), %rbx
movq (%r14), %rcx
pushq $0x8
popq %rsi
pushq $0xa
popq %rdx
movq %rbx, %rdi
callq 0xb2fab
cmpq $0xa, %rax
jne 0x10b877
leaq 0x15d9(%rip), %rsi      # 0x10cac1
pushq $0xa
popq %rdx
movq %rbx, %rdi
callq 0xf04b4
movq %rax, 0x38(%r14)
movq 0x50(%r14), %rdi
callq 0x754dd
movq %rax, %rdi
callq 0x56cd2
movl %eax, %ebx
movq (%r14), %rcx
movq 0x60(%r14), %rdi
incl %ebx
pushq $0x8
popq %rsi
movq %rbx, %rdx
callq 0xb2fab
cmpq %rbx, %rax
jne 0x10b8a8
movq 0x60(%r14), %rdi
leaq 0x158f(%rip), %rsi      # 0x10cac1
movq %rbx, %rdx
callq 0xf04b4
movq %rax, 0x40(%r14)
testq %rax, %rax
je 0x10b8d9
movq (%r14), %rdi
testq %rdi, %rdi
je 0x10b90a
callq 0x17030
movq %rax, %rcx
xorl %edx, %edx
movq 0x28(%rsp), %rsi
divq %rsi
incq %rax
imulq %rsi, %rax
testq %rdx, %rdx
cmoveq %rcx, %rax
testq %rax, %rax
js 0x10b93b
movq %rax, 0xd8(%r14)
movq (%r14), %rdi
callq 0x8a4fd
movq %r14, %rax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x32c9c4(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d9a65(%rip), %rsi    # 0x2e5013
leaq 0x217924(%rip), %rdx    # 0x322ed9
leaq 0x2240d0(%rip), %rcx    # 0x32f68c
leaq 0x223a70(%rip), %r8     # 0x32f033
movl $0x5b8, %r9d            # imm = 0x5B8
jmp 0x10b6b8
movq 0x32c993(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d9a34(%rip), %rsi    # 0x2e5013
leaq 0x2178f3(%rip), %rdx    # 0x322ed9
leaq 0x22409f(%rip), %rcx    # 0x32f68c
leaq 0x223a3f(%rip), %r8     # 0x32f033
movl $0x5ba, %r9d            # imm = 0x5BA
jmp 0x10b6b8
movq 0x32c962(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d9a03(%rip), %rsi    # 0x2e5013
leaq 0x2178c2(%rip), %rdx    # 0x322ed9
leaq 0x22406e(%rip), %rcx    # 0x32f68c
leaq 0x223a0e(%rip), %r8     # 0x32f033
movl $0x59f, %r9d            # imm = 0x59F
jmp 0x10b6b8
movq 0x32c931(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d99d2(%rip), %rsi    # 0x2e5013
leaq 0x217891(%rip), %rdx    # 0x322ed9
leaq 0x22403d(%rip), %rcx    # 0x32f68c
leaq 0x2239dd(%rip), %r8     # 0x32f033
movl $0x5a1, %r9d            # imm = 0x5A1
jmp 0x10b6b8
movq 0x32c903(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d99a4(%rip), %rsi    # 0x2e5013
leaq 0x217863(%rip), %rdx    # 0x322ed9
leaq 0x22400f(%rip), %rcx    # 0x32f68c
leaq 0x2239af(%rip), %r8     # 0x32f033
movl $0x5cb, %r9d            # imm = 0x5CB
jmp 0x10b6b8
movq 0x32c8d5(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d9976(%rip), %rsi    # 0x2e5013
leaq 0x217835(%rip), %rdx    # 0x322ed9
leaq 0x223fe1(%rip), %rcx    # 0x32f68c
leaq 0x223981(%rip), %r8     # 0x32f033
movl $0x5cd, %r9d            # imm = 0x5CD
xorl %eax, %eax
callq 0x17a50
callq 0x17390
movq 0x32c89d(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d993e(%rip), %rsi    # 0x2e5013
leaq 0x21748f(%rip), %rdx    # 0x322b6b
leaq 0x223a19(%rip), %rcx    # 0x32f0fc
leaq 0x223949(%rip), %r8     # 0x32f033
movl $0x840, %r9d            # imm = 0x840
jmp 0x10b6b8
movq 0x32c86f(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d9910(%rip), %rsi    # 0x2e5013
leaq 0x1d9ab5(%rip), %rdx    # 0x2e51bf
leaq 0x2239eb(%rip), %rcx    # 0x32f0fc
leaq 0x22391b(%rip), %r8     # 0x32f033
movl $0x844, %r9d            # imm = 0x844
jmp 0x10b6b8
movq 0x32c841(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d98e2(%rip), %rsi    # 0x2e5013
leaq 0x2177a1(%rip), %rdx    # 0x322ed9
leaq 0x223f4d(%rip), %rcx    # 0x32f68c
leaq 0x2238ed(%rip), %r8     # 0x32f033
movl $0x58d, %r9d            # imm = 0x58D
jmp 0x10b6b8
movq 0x32c810(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d98b1(%rip), %rsi    # 0x2e5013
leaq 0x217770(%rip), %rdx    # 0x322ed9
leaq 0x223f1c(%rip), %rcx    # 0x32f68c
leaq 0x2238bc(%rip), %r8     # 0x32f033
movl $0x58f, %r9d            # imm = 0x58F
jmp 0x10b6b8
movq 0x32c7df(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d9880(%rip), %rsi    # 0x2e5013
leaq 0x21773f(%rip), %rdx    # 0x322ed9
leaq 0x223eeb(%rip), %rcx    # 0x32f68c
leaq 0x22388b(%rip), %r8     # 0x32f033
movl $0x5ab, %r9d            # imm = 0x5AB
jmp 0x10b6b8
movq 0x32c7ae(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d984f(%rip), %rsi    # 0x2e5013
leaq 0x21770e(%rip), %rdx    # 0x322ed9
leaq 0x223eba(%rip), %rcx    # 0x32f68c
leaq 0x22385a(%rip), %r8     # 0x32f033
movl $0x5ae, %r9d            # imm = 0x5AE
jmp 0x10b6b8
movq 0x32c77d(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d981e(%rip), %rsi    # 0x2e5013
leaq 0x2176dd(%rip), %rdx    # 0x322ed9
leaq 0x223e89(%rip), %rcx    # 0x32f68c
leaq 0x223829(%rip), %r8     # 0x32f033
movl $0x5c3, %r9d            # imm = 0x5C3
jmp 0x10b6b8
movq 0x32c74c(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d97ed(%rip), %rsi    # 0x2e5013
leaq 0x2176ac(%rip), %rdx    # 0x322ed9
leaq 0x223e58(%rip), %rcx    # 0x32f68c
leaq 0x2237f8(%rip), %r8     # 0x32f033
movl $0x5d5, %r9d            # imm = 0x5D5
jmp 0x10b6b8
movq 0x32c71b(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d97bc(%rip), %rsi    # 0x2e5013
leaq 0x21767b(%rip), %rdx    # 0x322ed9
leaq 0x223e27(%rip), %rcx    # 0x32f68c
leaq 0x2237c7(%rip), %r8     # 0x32f033
movl $0x5da, %r9d            # imm = 0x5DA
jmp 0x10b6b8
movq 0x32c6ea(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d978b(%rip), %rsi    # 0x2e5013
leaq 0x223e0d(%rip), %rdx    # 0x32f69c
leaq 0x223df6(%rip), %rcx    # 0x32f68c
leaq 0x223796(%rip), %r8     # 0x32f033
movl $0x5e3, %r9d            # imm = 0x5E3
jmp 0x10b6b8
movq 0x32c6b9(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d975a(%rip), %rsi    # 0x2e5013
leaq 0x223dff(%rip), %rdx    # 0x32f6bf
leaq 0x223dc5(%rip), %rcx    # 0x32f68c
leaq 0x223765(%rip), %r8     # 0x32f033
movl $0x5ef, %r9d            # imm = 0x5EF
jmp 0x10b6b8
movq 0x32c688(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d9729(%rip), %rsi    # 0x2e5013
leaq 0x223df0(%rip), %rdx    # 0x32f6e1
leaq 0x223d94(%rip), %rcx    # 0x32f68c
leaq 0x223734(%rip), %r8     # 0x32f033
movl $0x5f5, %r9d            # imm = 0x5F5
jmp 0x10b6b8
movq 0x32c657(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d96f8(%rip), %rsi    # 0x2e5013
leaq 0x223805(%rip), %rdx    # 0x32f127
leaq 0x2237d3(%rip), %rcx    # 0x32f0fc
leaq 0x223703(%rip), %r8     # 0x32f033
movl $0x84d, %r9d            # imm = 0x84D
jmp 0x10b6b8
movq 0x32c626(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1dd46b(%rip), %rsi    # 0x2e8db7
leaq 0x2236e0(%rip), %rdx    # 0x32f033
movl $0x853, %ecx            # imm = 0x853
xorl %eax, %eax
callq 0x17a50
pushq $0x1
popq %rdi
callq 0x178f0
movq 0x32c5fa(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d969b(%rip), %rsi    # 0x2e5013
leaq 0x21755a(%rip), %rdx    # 0x322ed9
leaq 0x223d06(%rip), %rcx    # 0x32f68c
leaq 0x2236a6(%rip), %r8     # 0x32f033
movl $0x5b4, %r9d            # imm = 0x5B4
jmp 0x10b6b8
movq 0x32c5c9(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d966a(%rip), %rsi    # 0x2e5013
leaq 0x217529(%rip), %rdx    # 0x322ed9
leaq 0x223cd5(%rip), %rcx    # 0x32f68c
leaq 0x223675(%rip), %r8     # 0x32f033
movl $0x598, %r9d            # imm = 0x598
jmp 0x10b6b8
movq 0x32c598(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d9639(%rip), %rsi    # 0x2e5013
leaq 0x2174f8(%rip), %rdx    # 0x322ed9
leaq 0x223ca4(%rip), %rcx    # 0x32f68c
leaq 0x223644(%rip), %r8     # 0x32f033
movl $0x59b, %r9d            # imm = 0x59B
jmp 0x10b6b8
movq 0x32c567(%rip), %rax    # 0x437f68
movq (%rax), %rdi
leaq 0x1d9608(%rip), %rsi    # 0x2e5013
leaq 0x2174c7(%rip), %rdx    # 0x322ed9
leaq 0x223c73(%rip), %rcx    # 0x32f68c
leaq 0x223613(%rip), %r8     # 0x32f033
movl $0x5c8, %r9d            # imm = 0x5C8
jmp 0x10b6b8