// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/encseq.c
// Function: gt_encseq_assign_sequence_mapspec
static void gt_encseq_assign_sequence_mapspec(GtMapspec *mapspec,
                                              void *data,
                                              bool writemode)
{
  GtEncseq *encseq = (GtEncseq *) data;
  GtUword numofunits;
  unsigned int bitspersymbol;

 switch (encseq->sat) {
    case  GT_ACCESS_TYPE_DIRECTACCESS:
      numofunits = encseq->totallength;
      gt_mapspec_add_uchar(mapspec, encseq->plainseq, numofunits);
      break;
    case GT_ACCESS_TYPE_BYTECOMPRESS:
      bitspersymbol = gt_alphabet_bits_per_symbol(encseq->alpha);
      numofunits
        = (GtUword) sizeofbitarray(bitspersymbol,
                                         (BitOffset) encseq->totallength);
      if (!writemode) {
        gt_assert(encseq->bitpackarray == NULL);
        encseq->bitpackarray
          = bitpackarray_new(bitspersymbol, (BitOffset) encseq->totallength,
                             false);
      }
      gt_assert(encseq->bitpackarray != NULL);
      gt_mapspec_add_bitelem(mapspec,
                             BITPACKARRAYSTOREVAR(encseq->bitpackarray),
                             numofunits);
      break;
    case GT_ACCESS_TYPE_EQUALLENGTH:
      gt_mapspec_add_twobitencoding(mapspec, encseq->twobitencoding,
                                    encseq->unitsoftwobitencoding);
      break;
    case GT_ACCESS_TYPE_BITACCESS:
      gt_mapspec_add_twobitencoding(mapspec, encseq->twobitencoding,
                                    encseq->unitsoftwobitencoding);
      if (encseq->has_specialranges) {
        numofunits = (GtUword)
                      GT_NUMOFINTSFORBITS(encseq->totallength + GT_INTWORDSIZE);
        gt_mapspec_add_bitsequence(mapspec, encseq->specialbits, numofunits);
      }
      break;
    case GT_ACCESS_TYPE_UCHARTABLES:
    case GT_ACCESS_TYPE_USHORTTABLES:
    case GT_ACCESS_TYPE_UINT32TABLES:
      gt_mapspec_add_twobitencoding(mapspec, encseq->twobitencoding,
                                    encseq->unitsoftwobitencoding);
      addswtabletomapspectable(mapspec,
                               &encseq->wildcardrangetable,
                               true,
                               false,
                               encseq->totallength,
                               encseq->sat);
      break;
    default: break;
  }
}

// Assembly:
subq $0x48, %rsp
movb %dl, %al
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
andb $0x1, %al
movb %al, 0x37(%rsp)
movq 0x38(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0x28(%rsp), %rax
movl (%rax), %eax
movq %rax, 0x10(%rsp)
subq $0x6, %rax
ja 0x12da83
movq 0x10(%rsp), %rax
leaq 0x57c66(%rip), %rcx     # 0x185498
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x28(%rsp), %rax
movq 0x30(%rax), %rax
movq %rax, 0x20(%rsp)
movq 0x40(%rsp), %rdi
movq 0x28(%rsp), %rsi
addq $0x290, %rsi            # imm = 0x290
movq 0x20(%rsp), %rdx
callq 0x1465c0
jmp 0x12da85
movq 0x28(%rsp), %rax
movq 0x220(%rax), %rdi
callq 0x109f00
movl %eax, 0x1c(%rsp)
movl 0x1c(%rsp), %edi
movq 0x28(%rsp), %rax
movq 0x30(%rax), %rsi
callq 0x11ce50
movq %rax, 0x20(%rsp)
testb $0x1, 0x37(%rsp)
jne 0x12d90a
jmp 0x12d89e
movq 0x28(%rsp), %rax
cmpq $0x0, 0x2a0(%rax)
je 0x12d8e5
movq 0x86724(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x307a8(%rip), %rsi     # 0x15e066
leaq 0x5b246(%rip), %rdx     # 0x188b0b
leaq 0x5b25c(%rip), %rcx     # 0x188b28
leaq 0x57d8b(%rip), %r8      # 0x18565e
movl $0x556, %r9d            # imm = 0x556
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x12d8e7
movl 0x1c(%rsp), %edi
movq 0x28(%rsp), %rax
movq 0x30(%rax), %rsi
xorl %edx, %edx
callq 0x12da90
movq %rax, %rcx
movq 0x28(%rsp), %rax
movq %rcx, 0x2a0(%rax)
jmp 0x12d90c
movq 0x28(%rsp), %rax
cmpq $0x0, 0x2a0(%rax)
jne 0x12d953
movq 0x866b6(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x3073a(%rip), %rsi     # 0x15e066
leaq 0x5b217(%rip), %rdx     # 0x188b4a
leaq 0x5b1ee(%rip), %rcx     # 0x188b28
leaq 0x57d1d(%rip), %r8      # 0x18565e
movl $0x55b, %r9d            # imm = 0x55B
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x12d955
movq 0x40(%rsp), %rdi
movq 0x28(%rsp), %rax
movq 0x2a0(%rax), %rsi
movq 0x20(%rsp), %rdx
callq 0x147580
jmp 0x12da85
movq 0x40(%rsp), %rdi
movq 0x28(%rsp), %rsi
addq $0x280, %rsi            # imm = 0x280
movq 0x28(%rsp), %rax
movq 0x288(%rax), %rdx
callq 0x147200
jmp 0x12da85
movq 0x40(%rsp), %rdi
movq 0x28(%rsp), %rsi
addq $0x280, %rsi            # imm = 0x280
movq 0x28(%rsp), %rax
movq 0x288(%rax), %rdx
callq 0x147200
movq 0x28(%rsp), %rax
testb $0x1, 0x28(%rax)
je 0x12da2f
movq 0x28(%rsp), %rax
movq 0x30(%rax), %rax
addq $0x40, %rax
shrq $0x6, %rax
cmpq $0x0, %rax
jne 0x12d9ec
movl $0x1, %eax
movq %rax, 0x8(%rsp)
jmp 0x12da0a
movq 0x28(%rsp), %rax
movq 0x30(%rax), %rax
addq $0x40, %rax
subq $0x1, %rax
shrq $0x6, %rax
addq $0x1, %rax
movq %rax, 0x8(%rsp)
movq 0x8(%rsp), %rax
movq %rax, 0x20(%rsp)
movq 0x40(%rsp), %rdi
movq 0x28(%rsp), %rsi
addq $0x2b0, %rsi            # imm = 0x2B0
movq 0x20(%rsp), %rdx
callq 0x147040
jmp 0x12da85
movq 0x40(%rsp), %rdi
movq 0x28(%rsp), %rsi
addq $0x280, %rsi            # imm = 0x280
movq 0x28(%rsp), %rax
movq 0x288(%rax), %rdx
callq 0x147200
movq 0x40(%rsp), %rdi
movq 0x28(%rsp), %rsi
addq $0x2b8, %rsi            # imm = 0x2B8
movq 0x28(%rsp), %rax
movq 0x30(%rax), %r8
movq 0x28(%rsp), %rax
movl (%rax), %r9d
movl $0x1, %edx
xorl %ecx, %ecx
callq 0x12db60
jmp 0x12da85
jmp 0x12da85
addq $0x48, %rsp
retq
nopw (%rax,%rax)