// File: /workspace/github_c_makefile_star2_O1/genometools[P]genometools/src/extended/multieoplist.c
// Function: gt_multieoplist_unit_test
int gt_multieoplist_unit_test(GtError *err)
{
  int had_err = 0;
  GtUword idx, num;
  GtMultieoplist *list = gt_multieoplist_new(),
                 *list2 = NULL;

  gt_error_check(err);

  gt_multieoplist_add_deletion(list);
  gt_ensure(gt_multieoplist_get_num_entries(list) == (GtUword) 1);
  gt_ensure(list->meoplist.spaceEop[0] >> GT_MEOPS_STEPS_BITS == GT_MEOPS_DEL);
  gt_ensure((int) (list->meoplist.spaceEop[0] & GT_MEOPS_STEPS_MASK) == 1);
  if (!had_err) {
    GtMultieop meop = gt_multieoplist_get_entry(list, 0);
    gt_ensure(meop.type = Deletion);
    gt_ensure(meop.steps == (GtUword) 1UL);
  }

  for (idx = 0; idx < (GtUword) GT_MEOPS_STEPS_MASK; idx++) {
    gt_multieoplist_add_deletion(list);
  }
  gt_ensure(gt_multieoplist_get_num_entries(list) == (GtUword) 2);
  gt_ensure(list->meoplist.spaceEop[1] >> GT_MEOPS_STEPS_BITS == GT_MEOPS_DEL);
  gt_ensure((GtUword) (list->meoplist.spaceEop[1] & GT_MEOPS_STEPS_MASK) ==
            (GtUword) 1);
  gt_ensure((GtUword) (list->meoplist.spaceEop[0] & GT_MEOPS_STEPS_MASK) ==
            (GtUword) GT_MEOPS_STEPS_MASK);
  gt_ensure(gt_multieoplist_get_repdel_length(list) ==
            (GtUword) GT_MEOPS_STEPS_MASK + 1);

  if (!had_err)
    gt_multieoplist_add_eops(list, Match, (GtUword) (GT_MEOPS_STEPS_MASK >> 1));
  gt_ensure(gt_multieoplist_get_num_entries(list) == (GtUword) 3);
  gt_ensure(list->meoplist.spaceEop[2] >> GT_MEOPS_STEPS_BITS ==
            GT_MEOPS_MATCH);
  gt_ensure((GtUword) (list->meoplist.spaceEop[2] & GT_MEOPS_STEPS_MASK) ==
            (GtUword) GT_MEOPS_STEPS_MASK >> 1);

  if (!had_err)
    gt_multieoplist_add_eops(list, Match, (GtUword) (GT_MEOPS_STEPS_MASK << 1));
  gt_ensure(gt_multieoplist_get_num_entries(list) == (GtUword) 5);
  gt_ensure(list->meoplist.spaceEop[4] >> GT_MEOPS_STEPS_BITS ==
            GT_MEOPS_MATCH);
  gt_ensure((list->meoplist.spaceEop[4] & GT_MEOPS_STEPS_MASK) ==
            GT_MEOPS_STEPS_MASK >> 1);

  if (!had_err) {
    list2 = gt_multieoplist_clone(list2, list);
  }

  gt_ensure(gt_multieoplist_get_length(list) ==
            gt_multieoplist_get_length(list2));
  gt_ensure(gt_multieoplist_get_repdel_length(list) ==
            gt_multieoplist_get_repdel_length(list2));
  if (!had_err) {
    num = gt_multieoplist_get_num_entries(list);

    for (idx = 0; idx < num; idx++) {
      GtMultieop eop1 = gt_multieoplist_get_entry(list, idx),
                 eop2 = gt_multieoplist_get_entry(list2, idx);
      gt_ensure(eop1.type == eop2.type);
      gt_ensure(eop1.steps == eop2.steps);
    }
  }

  if (!had_err) {
    gt_multieoplist_combine(list, list2, true);
  }
  gt_multieoplist_delete(list);
  gt_multieoplist_delete(list2);

  had_err = gt_multieoplist_unit_test_2(err);
  return had_err;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %r12
leaq 0x22bbf5(%rip), %rsi    # 0x395f48
movl $0x20, %edi
movl $0x2a, %edx
callq 0x1092b2
movq %rax, %r14
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movups %xmm0, 0x10(%rax)
testq %r12, %r12
je 0x16a384
movq %r12, %rdi
callq 0x101a9a
testb %al, %al
jne 0x16a8f0
movl $0x1, %edx
movq %r14, %rdi
movl $0x3, %esi
callq 0x169d2b
cmpq $0x1, 0x18(%r14)
jne 0x16a3f6
movq 0x8(%r14), %rax
movb (%rax), %al
movl %eax, %ecx
andb $-0x40, %cl
negb %cl
jno 0x16a41f
andb $0x3f, %al
cmpb $0x1, %al
jne 0x16a448
movq %r14, %rdi
xorl %esi, %esi
callq 0x169f76
cmpq $0x1, %rdx
sete %bl
je 0x16a476
leaq 0x1fd166(%rip), %rsi    # 0x36753a
leaq 0x22be9b(%rip), %rdx    # 0x396276
leaq 0x22bdc5(%rip), %rcx    # 0x3961a7
leaq 0x22bb5f(%rip), %r8     # 0x395f48
xorl %ebx, %ebx
movq %r12, %rdi
movl $0x1c2, %r9d            # imm = 0x1C2
jmp 0x16a46f
leaq 0x1fd13d(%rip), %rsi    # 0x36753a
leaq 0x22bdbd(%rip), %rdx    # 0x3961c1
leaq 0x22bd9c(%rip), %rcx    # 0x3961a7
leaq 0x22bb36(%rip), %r8     # 0x395f48
xorl %ebx, %ebx
movq %r12, %rdi
movl $0x1bc, %r9d            # imm = 0x1BC
jmp 0x16a46f
leaq 0x1fd114(%rip), %rsi    # 0x36753a
leaq 0x22bdc9(%rip), %rdx    # 0x3961f6
leaq 0x22bd73(%rip), %rcx    # 0x3961a7
leaq 0x22bb0d(%rip), %r8     # 0x395f48
xorl %ebx, %ebx
movq %r12, %rdi
movl $0x1bd, %r9d            # imm = 0x1BD
jmp 0x16a46f
leaq 0x1fd0eb(%rip), %rsi    # 0x36753a
leaq 0x22bde2(%rip), %rdx    # 0x396238
leaq 0x22bd4a(%rip), %rcx    # 0x3961a7
leaq 0x22bae4(%rip), %r8     # 0x395f48
xorl %ebx, %ebx
movq %r12, %rdi
movl $0x1be, %r9d            # imm = 0x1BE
xorl %eax, %eax
callq 0x1019cf
movl $0x3f, %r15d
movl $0x1, %edx
movq %r14, %rdi
movl $0x3, %esi
callq 0x169d2b
decq %r15
jne 0x16a47c
testb %bl, %bl
je 0x16a575
cmpq $0x2, 0x18(%r14)
jne 0x16a57c
movq 0x8(%r14), %rax
movb 0x1(%rax), %cl
movl %ecx, %edx
andb $-0x40, %dl
negb %dl
jno 0x16a5a8
andb $0x3f, %cl
cmpb $0x1, %cl
jne 0x16a5d4
movb (%rax), %al
notb %al
testb $0x3f, %al
jne 0x16a600
movq %r14, %rdi
callq 0x169eab
cmpq $0x40, %rax
jne 0x16a62c
movl $0x1f, %edx
movq %r14, %rdi
xorl %esi, %esi
callq 0x169d2b
cmpq $0x3, 0x18(%r14)
jne 0x16a658
movq 0x8(%r14), %rax
movb 0x2(%rax), %al
cmpb $0x40, %al
jae 0x16a684
cmpb $0x1f, %al
jne 0x16a6ad
movl $0x7e, %edx
movq %r14, %rdi
xorl %esi, %esi
callq 0x169d2b
cmpq $0x5, 0x18(%r14)
jne 0x16a6d6
movq 0x8(%r14), %rax
movb 0x4(%rax), %al
cmpb $0x40, %al
jae 0x16a6ff
movb $0x1, %bpl
cmpb $0x1f, %al
je 0x16a72d
leaq 0x1fcfea(%rip), %rsi    # 0x36753a
leaq 0x22bffe(%rip), %rdx    # 0x396555
leaq 0x22bc49(%rip), %rcx    # 0x3961a7
leaq 0x22b9e3(%rip), %r8     # 0x395f48
xorl %ebp, %ebp
movq %r12, %rdi
movl $0x1df, %r9d            # imm = 0x1DF
jmp 0x16a726
xorl %ebp, %ebp
jmp 0x16a72d
leaq 0x1fcfb7(%rip), %rsi    # 0x36753a
leaq 0x22bd08(%rip), %rdx    # 0x396292
leaq 0x22bc16(%rip), %rcx    # 0x3961a7
leaq 0x22b9b0(%rip), %r8     # 0x395f48
xorl %ebp, %ebp
movq %r12, %rdi
movl $0x1c8, %r9d            # imm = 0x1C8
jmp 0x16a726
leaq 0x1fcf8b(%rip), %rsi    # 0x36753a
leaq 0x22bd11(%rip), %rdx    # 0x3962c7
leaq 0x22bbea(%rip), %rcx    # 0x3961a7
leaq 0x22b984(%rip), %r8     # 0x395f48
xorl %ebp, %ebp
movq %r12, %rdi
movl $0x1c9, %r9d            # imm = 0x1C9
jmp 0x16a726
leaq 0x1fcf5f(%rip), %rsi    # 0x36753a
leaq 0x22bd27(%rip), %rdx    # 0x396309
leaq 0x22bbbe(%rip), %rcx    # 0x3961a7
leaq 0x22b958(%rip), %r8     # 0x395f48
xorl %ebp, %ebp
movq %r12, %rdi
movl $0x1cb, %r9d            # imm = 0x1CB
jmp 0x16a726
leaq 0x1fcf33(%rip), %rsi    # 0x36753a
leaq 0x22bd47(%rip), %rdx    # 0x396355
leaq 0x22bb92(%rip), %rcx    # 0x3961a7
leaq 0x22b92c(%rip), %r8     # 0x395f48
xorl %ebp, %ebp
movq %r12, %rdi
movl $0x1cd, %r9d            # imm = 0x1CD
jmp 0x16a726
leaq 0x1fcf07(%rip), %rsi    # 0x36753a
leaq 0x22bd79(%rip), %rdx    # 0x3963b3
leaq 0x22bb66(%rip), %rcx    # 0x3961a7
leaq 0x22b900(%rip), %r8     # 0x395f48
xorl %ebp, %ebp
movq %r12, %rdi
movl $0x1cf, %r9d            # imm = 0x1CF
jmp 0x16a726
leaq 0x1fcedb(%rip), %rsi    # 0x36753a
leaq 0x22bd9a(%rip), %rdx    # 0x396400
leaq 0x22bb3a(%rip), %rcx    # 0x3961a7
leaq 0x22b8d4(%rip), %r8     # 0x395f48
xorl %ebp, %ebp
movq %r12, %rdi
movl $0x1d3, %r9d            # imm = 0x1D3
jmp 0x16a726
leaq 0x1fceaf(%rip), %rsi    # 0x36753a
leaq 0x22bda3(%rip), %rdx    # 0x396435
leaq 0x22bb0e(%rip), %rcx    # 0x3961a7
leaq 0x22b8a8(%rip), %r8     # 0x395f48
xorl %ebp, %ebp
movq %r12, %rdi
movl $0x1d5, %r9d            # imm = 0x1D5
jmp 0x16a726
leaq 0x1fce86(%rip), %rsi    # 0x36753a
leaq 0x22bdbe(%rip), %rdx    # 0x396479
leaq 0x22bae5(%rip), %rcx    # 0x3961a7
leaq 0x22b87f(%rip), %r8     # 0x395f48
xorl %ebp, %ebp
movq %r12, %rdi
movl $0x1d7, %r9d            # imm = 0x1D7
jmp 0x16a726
leaq 0x1fce5d(%rip), %rsi    # 0x36753a
leaq 0x22bdf8(%rip), %rdx    # 0x3964dc
leaq 0x22babc(%rip), %rcx    # 0x3961a7
leaq 0x22b856(%rip), %r8     # 0x395f48
xorl %ebp, %ebp
movq %r12, %rdi
movl $0x1db, %r9d            # imm = 0x1DB
jmp 0x16a726
leaq 0x1fce34(%rip), %rsi    # 0x36753a
leaq 0x22be04(%rip), %rdx    # 0x396511
leaq 0x22ba93(%rip), %rcx    # 0x3961a7
leaq 0x22b82d(%rip), %r8     # 0x395f48
xorl %ebp, %ebp
movq %r12, %rdi
movl $0x1dd, %r9d            # imm = 0x1DD
xorl %eax, %eax
callq 0x1019cf
testb %bpl, %bpl
je 0x16a741
xorl %edi, %edi
movq %r14, %rsi
callq 0x169c0b
movq %rax, %rbx
jmp 0x16a743
xorl %ebx, %ebx
testb %bpl, %bpl
je 0x16a8ca
movq %r12, (%rsp)
movq %r14, %rdi
callq 0x169f3d
movq %rax, %r12
movq %rbx, %rdi
callq 0x169f3d
cmpq %rax, %r12
jne 0x16a86f
movq %r14, %rdi
callq 0x169eab
movq %rax, %r12
movq %rbx, %rdi
callq 0x169eab
cmpq %rax, %r12
jne 0x16a89a
movq 0x18(%r14), %rax
movq %rax, 0x10(%rsp)
testq %rax, %rax
movq (%rsp), %r12
je 0x16a85d
movq %rbx, 0x8(%rsp)
xorl %ebx, %ebx
xorl %r12d, %r12d
movl %ebx, %r15d
movq %r14, %rdi
movq %r12, %rsi
callq 0x169f76
movl %eax, %r13d
movq %rdx, %rbp
movq 0x8(%rsp), %rdi
movq %r12, %rsi
callq 0x169f76
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
testl %r15d, %r15d
je 0x16a7d7
xorl %ebp, %ebp
jmp 0x16a841
cmpl %eax, %r13d
jne 0x16a7e8
cmpq %rdx, %rbp
jne 0x16a812
xorl %ebx, %ebx
movb $0x1, %bpl
jmp 0x16a841
xorl %ebp, %ebp
movq (%rsp), %rdi
leaq 0x1fcd45(%rip), %rsi    # 0x36753a
leaq 0x22be42(%rip), %rdx    # 0x39663e
leaq 0x22b9a4(%rip), %rcx    # 0x3961a7
leaq 0x22b73e(%rip), %r8     # 0x395f48
movl $0x1ef, %r9d            # imm = 0x1EF
jmp 0x16a83a
xorl %ebp, %ebp
movq (%rsp), %rdi
leaq 0x1fcd1b(%rip), %rsi    # 0x36753a
leaq 0x22be2f(%rip), %rdx    # 0x396655
leaq 0x22b97a(%rip), %rcx    # 0x3961a7
leaq 0x22b714(%rip), %r8     # 0x395f48
movl $0x1f0, %r9d            # imm = 0x1F0
xorl %eax, %eax
callq 0x1019cf
incq %r12
cmpq %r12, 0x10(%rsp)
jne 0x16a7a8
testb %bpl, %bpl
movq (%rsp), %r12
movq 0x8(%rsp), %rbx
je 0x16a8ca
movq %r14, %rdi
movq %rbx, %rsi
movl $0x1, %edx
callq 0x16a0d1
jmp 0x16a8ca
leaq 0x1fccc4(%rip), %rsi    # 0x36753a
leaq 0x22bd27(%rip), %rdx    # 0x3965a4
leaq 0x22b923(%rip), %rcx    # 0x3961a7
leaq 0x22b6bd(%rip), %r8     # 0x395f48
movq (%rsp), %r12
movq %r12, %rdi
movl $0x1e6, %r9d            # imm = 0x1E6
jmp 0x16a8c3
leaq 0x1fcc99(%rip), %rsi    # 0x36753a
leaq 0x22bd42(%rip), %rdx    # 0x3965ea
leaq 0x22b8f8(%rip), %rcx    # 0x3961a7
leaq 0x22b692(%rip), %r8     # 0x395f48
movq (%rsp), %r12
movq %r12, %rdi
movl $0x1e8, %r9d            # imm = 0x1E8
xorl %eax, %eax
callq 0x1019cf
movq %r14, %rdi
callq 0x169cb5
movq %rbx, %rdi
callq 0x169cb5
movq %r12, %rdi
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x16a266
callq 0x4e994
nopl (%rax)