// File: /workspace/github_c_makefile_star2_O3/genometools[P]genometools/src/extended/genome_node.c
// Function: gt_genome_node_unit_test
int gt_genome_node_unit_test(GtError *err)
{
  int had_err = 0;
  GtGenomeNodeClass *gnc;
  GtGenomeNode *gn;
  void *testptr1 = "foo bar",
       *testptr2 = NULL;
  const char *testkey1 = "key1",
             *testkey2 = "key2";
  gt_error_check(err);

  testptr2 = gt_malloc(sizeof (char)*4);

  /* this is a very simple GtGenomeNodeClass without any callbacks */
  gnc = gt_calloc(1, sizeof (GtGenomeNodeClass));
  gnc->size = sizeof (GtGenomeNode);

  gn = gt_genome_node_create(gnc);
  gt_ensure(gt_genome_node_get_user_data(gn, testkey1) == NULL);
  gt_ensure(gt_genome_node_get_user_data(gn, testkey2) == NULL);
  gt_ensure(gn->userdata_nof_items == 0);
  gt_ensure(gn->userdata == NULL);

  gt_genome_node_add_user_data(gn, testkey1, testptr1, NULL);
  gt_ensure(gt_genome_node_get_user_data(gn, testkey1) != NULL);
  gt_ensure(gt_genome_node_get_user_data(gn, testkey1) == testptr1);
  gt_ensure(gn->userdata_nof_items == 1);
  gt_ensure(gn->userdata != NULL);

  gt_genome_node_add_user_data(gn, testkey2, testptr2, gt_free_func);
  gt_ensure(gt_genome_node_get_user_data(gn, testkey2) != NULL);
  gt_ensure(gt_genome_node_get_user_data(gn, testkey2) == testptr2);
  gt_ensure(gn->userdata_nof_items == 2);

  gt_genome_node_release_user_data(gn, testkey1);
  gt_ensure(gt_genome_node_get_user_data(gn, testkey1) == NULL);
  gt_ensure(gn->userdata_nof_items == 1);

  gt_genome_node_release_user_data(gn, testkey2);
  gt_ensure(gt_genome_node_get_user_data(gn, testkey2) == NULL);
  gt_ensure(gn->userdata_nof_items == 0);
  gt_ensure(gn->userdata == NULL);

  testptr2 = gt_malloc(sizeof (char)*4);
  gt_genome_node_add_user_data(gn, testkey1, testptr1, NULL);
  gt_genome_node_add_user_data(gn, testkey2, testptr2, gt_free_func);
  gt_ensure(gn->userdata != NULL);
  gt_genome_node_delete(gn);

  gt_free(gnc);

  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %r15
testq %rdi, %rdi
je 0x41b84
movq %r15, %rdi
callq 0x34fea
testb %al, %al
jne 0x42107
leaq 0xa3e35(%rip), %rbx     # 0xe59c0
movl $0x4, %edi
movq %rbx, %rsi
movl $0x1e0, %edx            # imm = 0x1E0
callq 0x35862
movq %rax, %r12
movl $0x1, %edi
movl $0x40, %esi
movq %rbx, %rdx
movl $0x1e3, %ecx            # imm = 0x1E3
callq 0x359a6
movq %rax, %rbx
movq $0x30, (%rax)
movq %rax, %rdi
callq 0x414a6
movq %rax, %r14
leaq 0xa4174(%rip), %rsi     # 0xe5d47
movq %rax, %rdi
callq 0x41adc
testq %rax, %rax
je 0x41c0a
leaq 0xa1572(%rip), %rsi     # 0xe3159
leaq 0xa417c(%rip), %rdx     # 0xe5d6a
leaq 0xa415c(%rip), %rcx     # 0xe5d51
leaq 0xa3dc4(%rip), %r8      # 0xe59c0
movq %r15, %rdi
movl $0x1e7, %r9d            # imm = 0x1E7
jmp 0x41ca3
leaq 0xa413b(%rip), %rsi     # 0xe5d4c
movq %r14, %rdi
callq 0x41adc
testq %rax, %rax
je 0x41c45
leaq 0xa1534(%rip), %rsi     # 0xe3159
leaq 0xa4171(%rip), %rdx     # 0xe5d9d
leaq 0xa411e(%rip), %rcx     # 0xe5d51
leaq 0xa3d86(%rip), %r8      # 0xe59c0
movq %r15, %rdi
movl $0x1e8, %r9d            # imm = 0x1E8
jmp 0x41ca3
cmpl $0x0, 0x28(%r14)
je 0x41c73
leaq 0xa1506(%rip), %rsi     # 0xe3159
leaq 0xa4176(%rip), %rdx     # 0xe5dd0
leaq 0xa40f0(%rip), %rcx     # 0xe5d51
leaq 0xa3d58(%rip), %r8      # 0xe59c0
movq %r15, %rdi
movl $0x1e9, %r9d            # imm = 0x1E9
jmp 0x41ca3
cmpq $0x0, 0x10(%r14)
je 0x41d77
leaq 0xa14d4(%rip), %rsi     # 0xe3159
leaq 0xa4160(%rip), %rdx     # 0xe5dec
leaq 0xa40be(%rip), %rcx     # 0xe5d51
leaq 0xa3d26(%rip), %r8      # 0xe59c0
movq %r15, %rdi
movl $0x1ea, %r9d            # imm = 0x1EA
xorl %eax, %eax
callq 0x34f1f
leaq 0xa4096(%rip), %rsi     # 0xe5d47
leaq 0xaf5bb(%rip), %rdx     # 0xf1273
movq %r14, %rdi
xorl %ecx, %ecx
callq 0x419e9
leaq 0xa4083(%rip), %rsi     # 0xe5d4c
leaq -0xbfea(%rip), %rcx     # 0x35ce6
movq %r14, %rdi
movq %r12, %rdx
callq 0x419e9
leaq 0xa4065(%rip), %rsi     # 0xe5d47
movq %r14, %rdi
callq 0x41b08
leaq 0xa405b(%rip), %rsi     # 0xe5d4c
movq %r14, %rdi
callq 0x41b08
leaq 0xa3cc0(%rip), %rsi     # 0xe59c0
movl $0x4, %edi
movl $0x200, %edx            # imm = 0x200
callq 0x35862
movq %rax, %r15
leaq 0xa402e(%rip), %rsi     # 0xe5d47
leaq 0xaf553(%rip), %rdx     # 0xf1273
movq %r14, %rdi
xorl %ecx, %ecx
callq 0x419e9
leaq 0xa401b(%rip), %rsi     # 0xe5d4c
leaq -0xc052(%rip), %rcx     # 0x35ce6
movq %r14, %rdi
movq %r15, %rdx
callq 0x419e9
movl $0xffffffff, %r12d      # imm = 0xFFFFFFFF
movq %r14, %rdi
callq 0x4210c
leaq 0xa3c68(%rip), %rsi     # 0xe59c0
movq %rbx, %rdi
movl $0x206, %edx            # imm = 0x206
callq 0x35c27
movl %r12d, %eax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0xa3fc9(%rip), %rbp     # 0xe5d47
leaq 0xaf4ee(%rip), %r13     # 0xf1273
movq %r14, %rdi
movq %rbp, %rsi
movq %r13, %rdx
xorl %ecx, %ecx
callq 0x419e9
movq %r14, %rdi
movq %rbp, %rsi
callq 0x41adc
testq %rax, %rax
je 0x41de3
leaq 0xa3f9b(%rip), %rsi     # 0xe5d47
movq %r14, %rdi
callq 0x41adc
cmpq %r13, %rax
je 0x41e0d
leaq 0xa1399(%rip), %rsi     # 0xe3159
leaq 0xa406d(%rip), %rdx     # 0xe5e34
leaq 0xa3f83(%rip), %rcx     # 0xe5d51
leaq 0xa3beb(%rip), %r8      # 0xe59c0
movq %r15, %rdi
movl $0x1ee, %r9d            # imm = 0x1EE
jmp 0x41edd
leaq 0xa136f(%rip), %rsi     # 0xe3159
leaq 0xa4010(%rip), %rdx     # 0xe5e01
leaq 0xa3f59(%rip), %rcx     # 0xe5d51
leaq 0xa3bc1(%rip), %r8      # 0xe59c0
movq %r15, %rdi
movl $0x1ed, %r9d            # imm = 0x1ED
jmp 0x41edd
cmpl $0x1, 0x28(%r14)
jne 0x41e91
cmpq $0x0, 0x10(%r14)
je 0x41eb8
leaq 0xa3f26(%rip), %r13     # 0xe5d4c
leaq -0xc147(%rip), %rcx     # 0x35ce6
movq %r14, %rdi
movq %r13, %rsi
movq %r12, %rdx
callq 0x419e9
movq %r14, %rdi
movq %r13, %rsi
callq 0x41adc
testq %rax, %rax
je 0x41ee9
leaq 0xa3ef6(%rip), %rsi     # 0xe5d4c
movq %r14, %rdi
callq 0x41adc
cmpq %r12, %rax
je 0x41f10
leaq 0xa12eb(%rip), %rsi     # 0xe3159
leaq 0xa4045(%rip), %rdx     # 0xe5eba
leaq 0xa3ed5(%rip), %rcx     # 0xe5d51
leaq 0xa3b3d(%rip), %r8      # 0xe59c0
movq %r15, %rdi
movl $0x1f4, %r9d            # imm = 0x1F4
jmp 0x41f88
leaq 0xa12c1(%rip), %rsi     # 0xe3159
leaq 0xa3fcc(%rip), %rdx     # 0xe5e6b
leaq 0xa3eab(%rip), %rcx     # 0xe5d51
leaq 0xa3b13(%rip), %r8      # 0xe59c0
movq %r15, %rdi
movl $0x1ef, %r9d            # imm = 0x1EF
jmp 0x41edd
leaq 0xa129a(%rip), %rsi     # 0xe3159
leaq 0xa3e2e(%rip), %rdx     # 0xe5cf4
leaq 0xa3e84(%rip), %rcx     # 0xe5d51
leaq 0xa3aec(%rip), %r8      # 0xe59c0
movq %r15, %rdi
movl $0x1f0, %r9d            # imm = 0x1F0
xorl %eax, %eax
callq 0x34f1f
jmp 0x41cc2
leaq 0xa1269(%rip), %rsi     # 0xe3159
leaq 0xa3f90(%rip), %rdx     # 0xe5e87
leaq 0xa3e53(%rip), %rcx     # 0xe5d51
leaq 0xa3abb(%rip), %r8      # 0xe59c0
movq %r15, %rdi
movl $0x1f3, %r9d            # imm = 0x1F3
jmp 0x41f88
cmpl $0x2, 0x28(%r14)
jne 0x41f63
leaq 0xa3e29(%rip), %r12     # 0xe5d47
movq %r14, %rdi
movq %r12, %rsi
callq 0x41b08
movq %r14, %rdi
movq %r12, %rsi
callq 0x41adc
testq %rax, %rax
je 0x41f94
leaq 0xa1219(%rip), %rsi     # 0xe3159
leaq 0xa3e23(%rip), %rdx     # 0xe5d6a
leaq 0xa3e03(%rip), %rcx     # 0xe5d51
leaq 0xa3a6b(%rip), %r8      # 0xe59c0
movq %r15, %rdi
movl $0x1f8, %r9d            # imm = 0x1F8
jmp 0x4200c
leaq 0xa11ef(%rip), %rsi     # 0xe3159
leaq 0xa3f80(%rip), %rdx     # 0xe5ef1
leaq 0xa3dd9(%rip), %rcx     # 0xe5d51
leaq 0xa3a41(%rip), %r8      # 0xe59c0
movq %r15, %rdi
movl $0x1f5, %r9d            # imm = 0x1F5
xorl %eax, %eax
callq 0x34f1f
jmp 0x41cdb
cmpl $0x1, 0x28(%r14)
jne 0x41fe7
leaq 0xa3daa(%rip), %r12     # 0xe5d4c
movq %r14, %rdi
movq %r12, %rsi
callq 0x41b08
movq %r14, %rdi
movq %r12, %rsi
callq 0x41adc
testq %rax, %rax
je 0x42018
leaq 0xa1195(%rip), %rsi     # 0xe3159
leaq 0xa3dd2(%rip), %rdx     # 0xe5d9d
leaq 0xa3d7f(%rip), %rcx     # 0xe5d51
leaq 0xa39e7(%rip), %r8      # 0xe59c0
movq %r15, %rdi
movl $0x1fc, %r9d            # imm = 0x1FC
jmp 0x42072
leaq 0xa116b(%rip), %rsi     # 0xe3159
leaq 0xa3e76(%rip), %rdx     # 0xe5e6b
leaq 0xa3d55(%rip), %rcx     # 0xe5d51
leaq 0xa39bd(%rip), %r8      # 0xe59c0
movq %r15, %rdi
movl $0x1f9, %r9d            # imm = 0x1F9
xorl %eax, %eax
callq 0x34f1f
jmp 0x41cea
cmpl $0x0, 0x28(%r14)
je 0x42046
leaq 0xa1133(%rip), %rsi     # 0xe3159
leaq 0xa3da3(%rip), %rdx     # 0xe5dd0
leaq 0xa3d1d(%rip), %rcx     # 0xe5d51
leaq 0xa3985(%rip), %r8      # 0xe59c0
movq %r15, %rdi
movl $0x1fd, %r9d            # imm = 0x1FD
jmp 0x42072
cmpq $0x0, 0x10(%r14)
je 0x4207e
leaq 0xa1105(%rip), %rsi     # 0xe3159
leaq 0xa3d91(%rip), %rdx     # 0xe5dec
leaq 0xa3cef(%rip), %rcx     # 0xe5d51
leaq 0xa3957(%rip), %r8      # 0xe59c0
movq %r15, %rdi
movl $0x1fe, %r9d            # imm = 0x1FE
xorl %eax, %eax
callq 0x34f1f
jmp 0x41cf9
leaq 0xa393b(%rip), %rsi     # 0xe59c0
movl $0x4, %edi
movl $0x200, %edx            # imm = 0x200
callq 0x35862
movq %rax, %r13
leaq 0xa3ca9(%rip), %rsi     # 0xe5d47
leaq 0xaf1ce(%rip), %rdx     # 0xf1273
xorl %r12d, %r12d
movq %r14, %rdi
xorl %ecx, %ecx
callq 0x419e9
leaq 0xa3c93(%rip), %rsi     # 0xe5d4c
leaq -0xc3da(%rip), %rcx     # 0x35ce6
movq %r14, %rdi
movq %r13, %rdx
callq 0x419e9
cmpq $0x0, 0x10(%r14)
jne 0x41d49
leaq 0xa107c(%rip), %rsi     # 0xe3159
leaq 0xa3c10(%rip), %rdx     # 0xe5cf4
leaq 0xa3c66(%rip), %rcx     # 0xe5d51
leaq 0xa38ce(%rip), %r8      # 0xe59c0
movq %r15, %rdi
movl $0x203, %r9d            # imm = 0x203
xorl %eax, %eax
callq 0x34f1f
jmp 0x41d43
callq 0x113e0