// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/extended/spec_results.c
// Function: gt_spec_aspect_make_node_model
static int gt_spec_aspect_make_node_model(void *key, void *value, void *data,
                                          GT_UNUSED GtError *err)
{
  GtGenomeNode *gn = (GtGenomeNode*) key;
  GtSpecAspectNodeResult *sanr = (GtSpecAspectNodeResult*) value;
  GtSpecResultsReportInfo *info = (GtSpecResultsReportInfo*) data;
  const char *tmp = NULL;
  bool has_id = false;
  GtUword i = 0;

  if (gt_feature_node_try_cast(gn)) {
    if ((tmp = gt_feature_node_get_attribute((GtFeatureNode*) gn, "ID"))) {
      has_id = true;
    }
  }
  if (gt_str_array_size(sanr->failure_messages) > 0
        || gt_str_array_size(sanr->runtime_error_messages) > 0) {
    lua_pushnumber(info->L, info->node_i++);
    lua_newtable(info->L);
    if (has_id) {
      lua_pushstring(info->L, "ID");
      lua_pushstring(info->L, tmp);
      lua_rawset(info->L, -3);
    }
    lua_pushstring(info->L, "filename");
    lua_pushstring(info->L, gt_genome_node_get_filename(gn));
    lua_rawset(info->L, -3);
    lua_pushstring(info->L, "linenumber");
    lua_pushnumber(info->L, gt_genome_node_get_line_number(gn));
    lua_rawset(info->L, -3);
    lua_pushstring(info->L, "node");
    gt_lua_genome_node_push(info->L, gt_genome_node_ref(gn));
    lua_rawset(info->L, -3);
    lua_pushstring(info->L, "failure_messages");
    lua_newtable(info->L);
    for (i = 0; i < gt_str_array_size(sanr->failure_messages); i++) {
      lua_pushnumber(info->L, i+1);
      lua_pushstring(info->L, gt_str_array_get(sanr->failure_messages, i));
      lua_rawset(info->L, -3);
    }
    lua_rawset(info->L, -3);
    lua_pushstring(info->L, "runtime_error_messages");
    lua_newtable(info->L);
    for (i = 0; i < gt_str_array_size(sanr->runtime_error_messages); i++) {
      lua_pushnumber(info->L, i+1);
      lua_pushstring(info->L, gt_str_array_get(sanr->runtime_error_messages,
                                               i));
      lua_rawset(info->L, -3);
    }
    lua_rawset(info->L, -3);
    lua_rawset(info->L, -3);
  }
  return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, %r15
callq 0x14aefc
testq %rax, %rax
je 0x17f12e
leaq 0x264c52(%rip), %rsi    # 0x3e3d6c
movq %r15, %rdi
callq 0x14918c
movq %rax, %r12
testq %rax, %rax
setne %r13b
jmp 0x17f134
xorl %r12d, %r12d
xorl %r13d, %r13d
movq (%r14), %rdi
callq 0x121e78
testq %rax, %rax
jne 0x17f153
movq 0x8(%r14), %rdi
callq 0x121e78
testq %rax, %rax
je 0x17f3be
movq 0x10(%rbx), %rax
movq 0x18(%rbx), %rdi
leaq 0x1(%rax), %rcx
movq %rax, %xmm1
punpckldq 0x1d1774(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x1d177c(%rip), %xmm1   # 0x3508f0
movq %rcx, 0x10(%rbx)
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
callq 0x22debe
movq 0x18(%rbx), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22e8fc
testb %r13b, %r13b
je 0x17f1c5
movq 0x18(%rbx), %rdi
leaq 0x264bc6(%rip), %rsi    # 0x3e3d6c
callq 0x22e0c4
movq 0x18(%rbx), %rdi
movq %r12, %rsi
callq 0x22e0c4
movq 0x18(%rbx), %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x22ecef
movq 0x18(%rbx), %rdi
leaq 0x250688(%rip), %rsi    # 0x3cf858
callq 0x22e0c4
movq 0x18(%rbx), %r12
movq %r15, %rdi
callq 0x14b86c
movq %r12, %rdi
movq %rax, %rsi
callq 0x22e0c4
movq 0x18(%rbx), %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x22ecef
movq 0x18(%rbx), %rdi
leaq 0x21da62(%rip), %rsi    # 0x39cc67
callq 0x22e0c4
movq 0x18(%rbx), %r12
movq %r15, %rdi
callq 0x14b88c
movl %eax, %eax
xorps %xmm0, %xmm0
cvtsi2sd %rax, %xmm0
movq %r12, %rdi
callq 0x22debe
movq 0x18(%rbx), %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x22ecef
movq 0x18(%rbx), %rdi
leaq 0x24ea6e(%rip), %rsi    # 0x3cdcaf
callq 0x22e0c4
movq 0x18(%rbx), %r12
movq %r15, %rdi
callq 0x14b5fc
movq %r12, %rdi
movq %rax, %rsi
callq 0x18f4ad
movq 0x18(%rbx), %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x22ecef
movq 0x18(%rbx), %rdi
leaq 0x21d9fc(%rip), %rsi    # 0x39cc72
callq 0x22e0c4
movq 0x18(%rbx), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22e8fc
movq (%r14), %rdi
callq 0x121e78
testq %rax, %rax
je 0x17f2fe
xorl %r15d, %r15d
movq 0x18(%rbx), %rdi
leaq 0x1(%r15), %r13
movq %r13, %xmm1
punpckldq 0x1d1633(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x1d163b(%rip), %xmm1   # 0x3508f0
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
callq 0x22debe
movq 0x18(%rbx), %r12
movq (%r14), %rdi
movq %r15, %rsi
callq 0x121cfa
movq %r12, %rdi
movq %rax, %rsi
callq 0x22e0c4
movq 0x18(%rbx), %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x22ecef
movq (%r14), %rdi
callq 0x121e78
movq %r13, %r15
cmpq %rax, %r13
jb 0x17f298
movq 0x18(%rbx), %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x22ecef
movq 0x18(%rbx), %rdi
leaq 0x21d96c(%rip), %rsi    # 0x39cc83
callq 0x22e0c4
movq 0x18(%rbx), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x22e8fc
movq 0x8(%r14), %rdi
callq 0x121e78
testq %rax, %rax
je 0x17f3a2
xorl %r15d, %r15d
movq 0x18(%rbx), %rdi
leaq 0x1(%r15), %r13
movq %r13, %xmm1
punpckldq 0x1d1591(%rip), %xmm1 # xmm1 = xmm1[0],mem[0],xmm1[1],mem[1]
subpd 0x1d1599(%rip), %xmm1   # 0x3508f0
movapd %xmm1, %xmm0
unpckhpd %xmm1, %xmm0            # xmm0 = xmm0[1],xmm1[1]
addsd %xmm1, %xmm0
callq 0x22debe
movq 0x18(%rbx), %r12
movq 0x8(%r14), %rdi
movq %r15, %rsi
callq 0x121cfa
movq %r12, %rdi
movq %rax, %rsi
callq 0x22e0c4
movq 0x18(%rbx), %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x22ecef
movq 0x8(%r14), %rdi
callq 0x121e78
movq %r13, %r15
cmpq %rax, %r13
jb 0x17f33a
movq 0x18(%rbx), %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x22ecef
movq 0x18(%rbx), %rdi
movl $0xfffffffd, %esi       # imm = 0xFFFFFFFD
callq 0x22ecef
xorl %eax, %eax
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
retq
nop