// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/encseq.c
// Function: gt_encseq_assign_header_mapspec
static void gt_encseq_assign_header_mapspec(GtMapspec *mapspec,
                                             GtEncseqHeaderPtr *headerptr,
                                             bool writemode,
                                             GtEncseqAccessType sat,
                                             GtUword totallength,
                                             unsigned int numofchars,
                                             GtUword numofdbsequences,
                                             GtUword numofdbfiles,
                                             GtUword lengthofdbfilenames,
                                             GtUword minseqlen,
                                             GtUword maxseqlen,
                                             unsigned char maxsubalphasize,
                                             GtUword numofallchars,
                                             GtSpecialcharinfo *specialcharinfo,
                                             const GtStrArray *filenametab,
                                             GtUword lengthofalphadef,
                                             char *alphadef,
                                             GtUword alphatype)
{
  if (writemode) {
    GtUword idx, offset = 0;

    headerptr->is64bitptr = gt_malloc(sizeof (*headerptr->is64bitptr));
    headerptr->is64bitptr[0] = (GtUchar) (sizeof (GtUword) == (size_t) 8
                                         ? 1
                                         : 0);

    headerptr->versionptr = gt_malloc(sizeof (*headerptr->versionptr));
    headerptr->versionptr[0] = (GtUword) GT_ENCSEQ_VERSION;

    headerptr->satcharptr = gt_malloc(sizeof (*headerptr->satcharptr));
    headerptr->satcharptr[0] = (GtUword) sat;

    headerptr->totallengthptr = gt_malloc(sizeof (*headerptr->totallengthptr));
    headerptr->totallengthptr[0] = totallength;

    headerptr->numofdbsequencesptr
      = gt_malloc(sizeof (*headerptr->numofdbsequencesptr));
    headerptr->numofdbsequencesptr[0] = numofdbsequences;

    headerptr->numofdbfilesptr
      = gt_malloc(sizeof (*headerptr->numofdbfilesptr));
    headerptr->numofdbfilesptr[0] = numofdbfiles;

    headerptr->lengthofdbfilenamesptr
      = gt_malloc(sizeof (*headerptr->lengthofdbfilenamesptr));
    headerptr->lengthofdbfilenamesptr[0] = lengthofdbfilenames;

    headerptr->minseqlenptr = gt_malloc(sizeof (*headerptr->minseqlenptr));
    headerptr->minseqlenptr[0] = minseqlen;

    headerptr->maxseqlenptr = gt_malloc(sizeof (*headerptr->maxseqlenptr));
    headerptr->maxseqlenptr[0] = maxseqlen;

    headerptr->specialcharinfoptr
      = gt_malloc(sizeof (*headerptr->specialcharinfoptr));
    headerptr->specialcharinfoptr[0] = *specialcharinfo;

    headerptr->lengthofalphadefptr
      = gt_malloc(sizeof (*headerptr->lengthofalphadefptr));
    headerptr->lengthofalphadefptr[0] = lengthofalphadef;

    headerptr->alphatypeptr
      = gt_malloc(sizeof (*headerptr->alphatypeptr));
    headerptr->alphatypeptr[0] = alphatype;

    if (alphadef != NULL) {
      headerptr->alphadef = gt_malloc(sizeof (*headerptr->alphadef) *
                                           lengthofalphadef);
      memcpy(headerptr->alphadef, alphadef, sizeof (*headerptr->alphadef) *
                                           lengthofalphadef);
    } else {
      headerptr->alphadef = NULL;
    }

    headerptr->maxsubalphasizeptr =
                             gt_malloc(sizeof (*headerptr->maxsubalphasizeptr));
    headerptr->maxsubalphasizeptr[0] = (GtUchar) maxsubalphasize;

    headerptr->numofallcharsptr =
                             gt_malloc(sizeof (*headerptr->numofallcharsptr));
    headerptr->numofallcharsptr[0] = numofallchars;

    headerptr->firstfilename = gt_malloc(sizeof (*headerptr->firstfilename) *
                                         lengthofdbfilenames);
    gt_assert(gt_str_array_size(filenametab) == numofdbfiles);

    for (idx = 0; idx < numofdbfiles; idx++) {
      strcpy(headerptr->firstfilename+offset,
             gt_str_array_get(filenametab, idx));
      offset += gt_str_length(gt_str_array_get_str(filenametab, idx))+1;
    }
  }
  gt_mapspec_add_uchar(mapspec, headerptr->is64bitptr, 1UL);
  gt_mapspec_add_ulong(mapspec, headerptr->versionptr, 1UL);
  gt_mapspec_add_ulong(mapspec, headerptr->satcharptr, 1UL);
  gt_mapspec_add_ulong(mapspec, headerptr->totallengthptr, 1UL);
  gt_mapspec_add_ulong(mapspec, headerptr->numofdbsequencesptr, 1UL);
  gt_mapspec_add_ulong(mapspec, headerptr->numofdbfilesptr, 1UL);
  gt_mapspec_add_ulong(mapspec, headerptr->lengthofdbfilenamesptr, 1UL);
  gt_mapspec_add_specialcharinfo(mapspec, headerptr->specialcharinfoptr, 1UL);
  gt_mapspec_add_ulong(mapspec, headerptr->minseqlenptr, 1UL);
  gt_mapspec_add_ulong(mapspec, headerptr->maxseqlenptr, 1UL);
  gt_mapspec_add_ulong(mapspec, headerptr->alphatypeptr, 1UL);
  gt_mapspec_add_ulong(mapspec, headerptr->lengthofalphadefptr, 1UL);
  gt_mapspec_add_char(mapspec, headerptr->alphadef, lengthofalphadef);
  gt_mapspec_add_char(mapspec, headerptr->firstfilename, lengthofdbfilenames);
  gt_mapspec_add_uchar(mapspec, headerptr->maxsubalphasizeptr, 1UL);
  gt_mapspec_add_ulong(mapspec, headerptr->numofallcharsptr, 1UL);
  gt_mapspec_add_filelengthvalues(mapspec, headerptr->filelengthtab,
                                  numofdbfiles);
  gt_mapspec_add_ulong(mapspec, headerptr->characterdistribution,
                       (GtUword) numofchars);
}

// Assembly:
subq $0x48, %rsp
movb %dl, %al
movq 0xa8(%rsp), %rdx
movq 0xa0(%rsp), %rdx
movq 0x98(%rsp), %rdx
movq 0x90(%rsp), %rdx
movq 0x88(%rsp), %rdx
movq 0x80(%rsp), %rdx
movb 0x78(%rsp), %dl
movq 0x70(%rsp), %rdx
movq 0x68(%rsp), %rdx
movq 0x60(%rsp), %rdx
movq 0x58(%rsp), %rdx
movq 0x50(%rsp), %rdx
movq %rdi, 0x40(%rsp)
movq %rsi, 0x38(%rsp)
andb $0x1, %al
movb %al, 0x37(%rsp)
movl %ecx, 0x30(%rsp)
movq %r8, 0x28(%rsp)
movl %r9d, 0x24(%rsp)
testb $0x1, 0x37(%rsp)
je 0x12d633
movq $0x0, 0x10(%rsp)
movl $0x1, %edi
leaq 0x5844d(%rip), %rsi     # 0x18565e
movl $0x4c2, %edx            # imm = 0x4C2
callq 0xd2e0
movq %rax, %rcx
movq 0x38(%rsp), %rax
movq %rcx, (%rax)
movq 0x38(%rsp), %rax
movq (%rax), %rax
movb $0x1, (%rax)
movl $0x8, %edi
leaq 0x58421(%rip), %rsi     # 0x18565e
movl $0x4c7, %edx            # imm = 0x4C7
callq 0xd2e0
movq %rax, %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x8(%rax)
movq 0x38(%rsp), %rax
movq 0x8(%rax), %rax
movq $0x3, (%rax)
movl $0x8, %edi
leaq 0x583ef(%rip), %rsi     # 0x18565e
movl $0x4ca, %edx            # imm = 0x4CA
callq 0xd2e0
movq %rax, %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x10(%rax)
movl 0x30(%rsp), %eax
movl %eax, %ecx
movq 0x38(%rsp), %rax
movq 0x10(%rax), %rax
movq %rcx, (%rax)
movl $0x8, %edi
leaq 0x583bb(%rip), %rsi     # 0x18565e
movl $0x4cd, %edx            # imm = 0x4CD
callq 0xd2e0
movq %rax, %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x18(%rax)
movq 0x28(%rsp), %rcx
movq 0x38(%rsp), %rax
movq 0x18(%rax), %rax
movq %rcx, (%rax)
movl $0x8, %edi
leaq 0x58388(%rip), %rsi     # 0x18565e
movl $0x4d1, %edx            # imm = 0x4D1
callq 0xd2e0
movq %rax, %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x20(%rax)
movq 0x50(%rsp), %rcx
movq 0x38(%rsp), %rax
movq 0x20(%rax), %rax
movq %rcx, (%rax)
movl $0x8, %edi
leaq 0x58355(%rip), %rsi     # 0x18565e
movl $0x4d5, %edx            # imm = 0x4D5
callq 0xd2e0
movq %rax, %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x28(%rax)
movq 0x58(%rsp), %rcx
movq 0x38(%rsp), %rax
movq 0x28(%rax), %rax
movq %rcx, (%rax)
movl $0x8, %edi
leaq 0x58322(%rip), %rsi     # 0x18565e
movl $0x4d9, %edx            # imm = 0x4D9
callq 0xd2e0
movq %rax, %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x30(%rax)
movq 0x60(%rsp), %rcx
movq 0x38(%rsp), %rax
movq 0x30(%rax), %rax
movq %rcx, (%rax)
movl $0x8, %edi
leaq 0x582ef(%rip), %rsi     # 0x18565e
movl $0x4dc, %edx            # imm = 0x4DC
callq 0xd2e0
movq %rax, %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x38(%rax)
movq 0x68(%rsp), %rcx
movq 0x38(%rsp), %rax
movq 0x38(%rax), %rax
movq %rcx, (%rax)
movl $0x8, %edi
leaq 0x582bc(%rip), %rsi     # 0x18565e
movl $0x4df, %edx            # imm = 0x4DF
callq 0xd2e0
movq %rax, %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x40(%rax)
movq 0x70(%rsp), %rcx
movq 0x38(%rsp), %rax
movq 0x40(%rax), %rax
movq %rcx, (%rax)
movl $0x70, %edi
leaq 0x58289(%rip), %rsi     # 0x18565e
movl $0x4e3, %edx            # imm = 0x4E3
callq 0xd2e0
movq %rax, %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x68(%rax)
movq 0x38(%rsp), %rax
movq 0x68(%rax), %rdi
movq 0x88(%rsp), %rsi
movl $0x70, %edx
callq 0xb500
movl $0x8, %edi
leaq 0x5824c(%rip), %rsi     # 0x18565e
movl $0x4e7, %edx            # imm = 0x4E7
callq 0xd2e0
movq %rax, %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x50(%rax)
movq 0x98(%rsp), %rcx
movq 0x38(%rsp), %rax
movq 0x50(%rax), %rax
movq %rcx, (%rax)
movl $0x8, %edi
leaq 0x58216(%rip), %rsi     # 0x18565e
movl $0x4eb, %edx            # imm = 0x4EB
callq 0xd2e0
movq %rax, %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x48(%rax)
movq 0xa8(%rsp), %rcx
movq 0x38(%rsp), %rax
movq 0x48(%rax), %rax
movq %rcx, (%rax)
cmpq $0x0, 0xa0(%rsp)
je 0x12d4ca
movq 0x98(%rsp), %rdi
shlq $0x0, %rdi
leaq 0x581ce(%rip), %rsi     # 0x18565e
movl $0x4f0, %edx            # imm = 0x4F0
callq 0xd2e0
movq %rax, %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x78(%rax)
movq 0x38(%rsp), %rax
movq 0x78(%rax), %rdi
movq 0xa0(%rsp), %rsi
movq 0x98(%rsp), %rdx
shlq $0x0, %rdx
callq 0xb500
jmp 0x12d4d7
movq 0x38(%rsp), %rax
movq $0x0, 0x78(%rax)
movl $0x1, %edi
leaq 0x5817b(%rip), %rsi     # 0x18565e
movl $0x4f8, %edx            # imm = 0x4F8
callq 0xd2e0
movq %rax, %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x60(%rax)
movb 0x78(%rsp), %cl
movq 0x38(%rsp), %rax
movq 0x60(%rax), %rax
movb %cl, (%rax)
movl $0x8, %edi
leaq 0x5814a(%rip), %rsi     # 0x18565e
movl $0x4fc, %edx            # imm = 0x4FC
callq 0xd2e0
movq %rax, %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x58(%rax)
movq 0x80(%rsp), %rcx
movq 0x38(%rsp), %rax
movq 0x58(%rax), %rax
movq %rcx, (%rax)
movq 0x60(%rsp), %rdi
shlq $0x0, %rdi
leaq 0x58110(%rip), %rsi     # 0x18565e
movl $0x500, %edx            # imm = 0x500
callq 0xd2e0
movq %rax, %rcx
movq 0x38(%rsp), %rax
movq %rcx, 0x70(%rax)
movq 0x90(%rsp), %rdi
callq 0x1b720
cmpq 0x58(%rsp), %rax
je 0x12d5b0
movq 0x86a59(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x30add(%rip), %rsi     # 0x15e066
leaq 0x5b52c(%rip), %rdx     # 0x188abc
leaq 0x5b554(%rip), %rcx     # 0x188aeb
leaq 0x580c0(%rip), %r8      # 0x18565e
movl $0x501, %r9d            # imm = 0x501
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0x12d5b2
movq $0x0, 0x18(%rsp)
movq 0x18(%rsp), %rax
cmpq 0x58(%rsp), %rax
jae 0x12d631
movq 0x38(%rsp), %rax
movq 0x70(%rax), %rax
addq 0x10(%rsp), %rax
movq %rax, 0x8(%rsp)
movq 0x90(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x1b320
movq 0x8(%rsp), %rdi
movq %rax, %rsi
callq 0xb5e0
movq 0x90(%rsp), %rdi
movq 0x18(%rsp), %rsi
callq 0x1b3c0
movq %rax, %rdi
callq 0x19a00
addq $0x1, %rax
addq 0x10(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x18(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x18(%rsp)
jmp 0x12d5bb
jmp 0x12d633
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
movl $0x1, %edx
callq 0x1465c0
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
addq $0x8, %rsi
movl $0x1, %edx
callq 0x146940
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
addq $0x10, %rsi
movl $0x1, %edx
callq 0x146940
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
addq $0x18, %rsi
movl $0x1, %edx
callq 0x146940
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
addq $0x20, %rsi
movl $0x1, %edx
callq 0x146940
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
addq $0x28, %rsi
movl $0x1, %edx
callq 0x146940
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
addq $0x30, %rsi
movl $0x1, %edx
callq 0x146940
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
addq $0x68, %rsi
movl $0x1, %edx
callq 0x1473c0
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
addq $0x38, %rsi
movl $0x1, %edx
callq 0x146940
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
addq $0x40, %rsi
movl $0x1, %edx
callq 0x146940
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
addq $0x48, %rsi
movl $0x1, %edx
callq 0x146940
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
addq $0x50, %rsi
movl $0x1, %edx
callq 0x146940
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
addq $0x78, %rsi
movq 0x98(%rsp), %rdx
callq 0x146400
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
addq $0x70, %rsi
movq 0x60(%rsp), %rdx
callq 0x146400
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
addq $0x60, %rsi
movl $0x1, %edx
callq 0x1465c0
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
addq $0x58, %rsi
movl $0x1, %edx
callq 0x146940
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
addq $0x80, %rsi
movq 0x58(%rsp), %rdx
callq 0x147740
movq 0x40(%rsp), %rdi
movq 0x38(%rsp), %rsi
addq $0x88, %rsi
movl 0x24(%rsp), %eax
movl %eax, %edx
callq 0x146940
addq $0x48, %rsp
retq
nop