// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/core/score_matrix.c
// Function: parse_score_line
static int parse_score_line(GtScoreMatrix *sm, GtTokenizer *tz,
                            GtArray *index_to_alpha_char_mapping,
                            char *parsed_characters, GtError *err)
{
  unsigned int num_of_chars, i = 0;
  char amino_acid;
  int score, had_err = 0;
  GtStr *token;
  gt_assert(sm && tz && index_to_alpha_char_mapping);
  gt_error_check(err);
  token = gt_tokenizer_get_token(tz);
  gt_assert(token);
  if (gt_str_length(token) != 1) {
    gt_error_set(err, "illegal character token '%s' on line " GT_WU
                 " in file '%s'", gt_str_get(token),
                 gt_tokenizer_get_line_number(tz),
                 gt_tokenizer_get_filename(tz));
    had_err = -1;
  }
  amino_acid = gt_str_get(token)[0];
  /* check for character duplications */
  if (parsed_characters[(int) amino_acid]) {
    gt_error_set(err, "multiple character '%c' entry on line " GT_WU
                 " in file '%s'", amino_acid, gt_tokenizer_get_line_number(tz),
                 gt_tokenizer_get_filename(tz));
    had_err = -1;
  }
  parsed_characters[(int) amino_acid] = GT_UNDEF_CHAR;
  gt_str_delete(token);
  if (!had_err) {
    num_of_chars = gt_alphabet_num_of_chars(sm->alphabet);
    gt_tokenizer_next_token(tz);
    while ((token = gt_tokenizer_get_token(tz))) {
      unsigned int idx1, idx2;
      /* the tokenizer can return tokens which are empty except for a newline
         -> skip these */
      if (!strcmp(gt_str_get(token), "\n")) {
        gt_str_delete(token);
        gt_tokenizer_next_token(tz);
        if (gt_tokenizer_line_start(tz))
          break;
        continue;
      }
      /* token is not empty -> parse score */
      had_err = gt_parse_int_line(&score, gt_str_get(token),
                                  gt_tokenizer_get_line_number(tz),
                                  gt_tokenizer_get_filename(tz), err);
      if (had_err)
        break;
      idx1 = gt_alphabet_encode(sm->alphabet, amino_acid);
      idx2 = gt_alphabet_encode(sm->alphabet, *(char*)
                                gt_array_get(index_to_alpha_char_mapping, i));
      gt_score_matrix_set_score(sm,
                                idx1 == GT_WILDCARD ? num_of_chars : idx1,
                                idx2 == GT_WILDCARD ? num_of_chars : idx2,
                                score);
      i++;
      gt_str_delete(token);
      gt_tokenizer_next_token(tz);
      if (gt_tokenizer_line_start(tz))
        break;
    }
  }
  return had_err;
}

// Assembly:
subq $0xb8, %rsp
movq %rdi, 0xb0(%rsp)
movq %rsi, 0xa8(%rsp)
movq %rdx, 0xa0(%rsp)
movq %rcx, 0x98(%rsp)
movq %r8, 0x90(%rsp)
movl $0x0, 0x88(%rsp)
movl $0x0, 0x7c(%rsp)
cmpq $0x0, 0xb0(%rsp)
je 0xe2ea3
cmpq $0x0, 0xa8(%rsp)
je 0xe2ea3
cmpq $0x0, 0xa0(%rsp)
jne 0xe2edb
movq 0xd112e(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x7b1b2(%rip), %rsi     # 0x15e066
leaq 0x95de5(%rip), %rdx     # 0x178ca0
leaq 0x95e06(%rip), %rcx     # 0x178cc8
leaq 0x95b25(%rip), %r8      # 0x1789ee
movl $0x7e, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xe2edd
jmp 0xe2edf
cmpq $0x0, 0x90(%rsp)
je 0xe2f35
movq 0x90(%rsp), %rdi
callq 0xc270
testb $0x1, %al
jne 0xe2efd
jmp 0xe2f35
movq 0xd10d4(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x7b158(%rip), %rsi     # 0x15e066
leaq 0x7b733(%rip), %rdx     # 0x15e648
leaq 0x95dac(%rip), %rcx     # 0x178cc8
leaq 0x95acb(%rip), %r8      # 0x1789ee
movl $0x7f, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xe2f37
movq 0xa8(%rsp), %rdi
callq 0xe4ef0
movq %rax, 0x70(%rsp)
cmpq $0x0, 0x70(%rsp)
jne 0xe2f89
movq 0xd1080(%rip), %rax     # 0x1b3fd8
movq (%rax), %rdi
leaq 0x7b104(%rip), %rsi     # 0x15e066
leaq 0x9643a(%rip), %rdx     # 0x1793a3
leaq 0x95d58(%rip), %rcx     # 0x178cc8
leaq 0x95a77(%rip), %r8      # 0x1789ee
movl $0x81, %r9d
movb $0x0, %al
callq 0xb890
callq 0xb2e0
jmp 0xe2f8b
movq 0x70(%rsp), %rdi
callq 0x19a00
cmpq $0x1, %rax
je 0xe2ffe
movq 0x90(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x70(%rsp), %rdi
callq 0x19940
movq %rax, 0x58(%rsp)
movq 0xa8(%rsp), %rdi
callq 0xe5350
movq %rax, 0x60(%rsp)
movq 0xa8(%rsp), %rdi
callq 0xe53b0
movq 0x50(%rsp), %rdi
movq 0x58(%rsp), %rdx
movq 0x60(%rsp), %rcx
movq %rax, %r8
leaq 0x95be4(%rip), %rsi     # 0x178bd3
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x7c(%rsp) # imm = 0xFFFFFFFF
movq 0x70(%rsp), %rdi
callq 0x19940
movb (%rax), %al
movb %al, 0x87(%rsp)
movq 0x98(%rsp), %rax
movsbl 0x87(%rsp), %ecx
movslq %ecx, %rcx
cmpb $0x0, (%rax,%rcx)
je 0xe3089
movq 0x90(%rsp), %rax
movq %rax, 0x38(%rsp)
movsbl 0x87(%rsp), %eax
movl %eax, 0x44(%rsp)
movq 0xa8(%rsp), %rdi
callq 0xe5350
movq %rax, 0x48(%rsp)
movq 0xa8(%rsp), %rdi
callq 0xe53b0
movq 0x38(%rsp), %rdi
movl 0x44(%rsp), %edx
movq 0x48(%rsp), %rcx
movq %rax, %r8
leaq 0x95c5f(%rip), %rsi     # 0x178cd9
movb $0x0, %al
callq 0xc0d0
movl $0xffffffff, 0x7c(%rsp) # imm = 0xFFFFFFFF
movq 0x98(%rsp), %rax
movsbl 0x87(%rsp), %ecx
movslq %ecx, %rcx
movb $0x7f, (%rax,%rcx)
movq 0x70(%rsp), %rdi
callq 0x1afc0
cmpl $0x0, 0x7c(%rsp)
jne 0xe32ab
movq 0xb0(%rsp), %rax
movq (%rax), %rdi
callq 0x109da0
movl %eax, 0x8c(%rsp)
movq 0xa8(%rsp), %rdi
callq 0xe52e0
movq 0xa8(%rsp), %rdi
callq 0xe4ef0
movq %rax, 0x70(%rsp)
cmpq $0x0, %rax
je 0xe32a9
movq 0x70(%rsp), %rdi
callq 0x19940
movq %rax, %rdi
leaq 0x92adc(%rip), %rsi     # 0x175be5
callq 0xb850
cmpl $0x0, %eax
jne 0xe3144
movq 0x70(%rsp), %rdi
callq 0x1afc0
movq 0xa8(%rsp), %rdi
callq 0xe52e0
movq 0xa8(%rsp), %rdi
callq 0xe5280
testb $0x1, %al
jne 0xe313d
jmp 0xe3142
jmp 0xe32a9
jmp 0xe30d9
movq 0x70(%rsp), %rdi
callq 0x19940
movq %rax, 0x28(%rsp)
movq 0xa8(%rsp), %rdi
callq 0xe5350
movl %eax, 0x34(%rsp)
movq 0xa8(%rsp), %rdi
callq 0xe53b0
movq 0x28(%rsp), %rsi
movl 0x34(%rsp), %edx
movq %rax, %rcx
movq 0x90(%rsp), %r8
leaq 0x80(%rsp), %rdi
callq 0x161a0
movl %eax, 0x7c(%rsp)
cmpl $0x0, 0x7c(%rsp)
je 0xe31a2
jmp 0xe32a9
movq 0xb0(%rsp), %rax
movq (%rax), %rdi
movsbl 0x87(%rsp), %esi
callq 0x10abd0
movzbl %al, %eax
movl %eax, 0x6c(%rsp)
movq 0xb0(%rsp), %rax
movq (%rax), %rax
movq %rax, 0x18(%rsp)
movq 0xa0(%rsp), %rdi
movl 0x88(%rsp), %eax
movl %eax, %esi
callq 0x75c80
movq 0x18(%rsp), %rdi
movsbl (%rax), %esi
callq 0x10abd0
movzbl %al, %eax
movl %eax, 0x68(%rsp)
movq 0xb0(%rsp), %rax
movq %rax, 0x20(%rsp)
cmpl $0xfe, 0x6c(%rsp)
jne 0xe321f
movl 0x8c(%rsp), %eax
movl %eax, 0x14(%rsp)
jmp 0xe3227
movl 0x6c(%rsp), %eax
movl %eax, 0x14(%rsp)
movl 0x14(%rsp), %eax
movl %eax, 0x10(%rsp)
cmpl $0xfe, 0x68(%rsp)
jne 0xe3246
movl 0x8c(%rsp), %eax
movl %eax, 0xc(%rsp)
jmp 0xe324e
movl 0x68(%rsp), %eax
movl %eax, 0xc(%rsp)
movl 0x10(%rsp), %esi
movq 0x20(%rsp), %rdi
movl 0xc(%rsp), %edx
movl 0x80(%rsp), %ecx
callq 0xe2650
movl 0x88(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x88(%rsp)
movq 0x70(%rsp), %rdi
callq 0x1afc0
movq 0xa8(%rsp), %rdi
callq 0xe52e0
movq 0xa8(%rsp), %rdi
callq 0xe5280
testb $0x1, %al
jne 0xe32a2
jmp 0xe32a4
jmp 0xe32a9
jmp 0xe30d9
jmp 0xe32ab
movl 0x7c(%rsp), %eax
addq $0xb8, %rsp
retq
nopw (%rax,%rax)