// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/extended/union_find.c
// Function: gt_union_find_unit_test
int gt_union_find_unit_test(GtError *err)
{
  GtUword i;
  GtUnionFind *uf;
  int had_err = 0;
  gt_error_check(err);

  /* one element */
  uf = gt_union_find_new(1);
  gt_ensure(gt_union_find_find(uf, 0) == 0);
  gt_union_find_delete(uf);

  /* two elements */
  if (!had_err) {
    uf = gt_union_find_new(2);
    gt_ensure(gt_union_find_find(uf, 0) != gt_union_find_find(uf, 1));
    gt_union_find_union(uf, 0, 1);
    gt_ensure(gt_union_find_find(uf, 0) == gt_union_find_find(uf, 1));
    gt_union_find_delete(uf);
  }

  /* many elements */
  if (!had_err) {
    uf = gt_union_find_new(UNION_FIND_TEST_SIZE);
    for (i = 1; !had_err && i < UNION_FIND_TEST_SIZE; i++)
      gt_ensure(gt_union_find_find(uf, 0) != gt_union_find_find(uf,
                                                                         i));
    for (i = 1; !had_err && i < UNION_FIND_TEST_SIZE; i++)
      gt_union_find_union(uf, 0, i);
    for (i = 1; !had_err && i < UNION_FIND_TEST_SIZE; i++)
      gt_ensure(gt_union_find_find(uf, 0) == gt_union_find_find(uf,
                                                                         i));
    gt_union_find_delete(uf);
  }

  return had_err;
}

// Assembly:
subq $0x58, %rsp
movq %rdi, 0x50(%rsp)
movl $0x0, 0x3c(%rsp)
cmpq $0x0, 0x50(%rsp)
je 0x28e731
movq 0x50(%rsp), %rdi
callq 0x33160
testb $0x1, %al
jne 0x28e6f9
jmp 0x28e731
movq 0x36d8c8(%rip), %rax    # 0x5fbfc8
movq (%rax), %rdi
leaq 0x26ce93(%rip), %rsi    # 0x4fb59d
leaq 0x26d05f(%rip), %rdx    # 0x4fb770
leaq 0x2b32da(%rip), %rcx    # 0x5419f2
leaq 0x2b3223(%rip), %r8     # 0x541942
movl $0x67, %r9d
movb $0x0, %al
callq 0x33960
callq 0x2f830
jmp 0x28e733
movl $0x1, %edi
callq 0x28e330
movq %rax, 0x40(%rsp)
cmpl $0x0, 0x3c(%rsp)
jne 0x28e795
movq 0x40(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x28e550
cmpq $0x0, %rax
je 0x28e793
movq 0x50(%rsp), %rdi
leaq 0x26d3ad(%rip), %rsi    # 0x4fbb16
leaq 0x2b329a(%rip), %rdx    # 0x541a0a
leaq 0x2b327b(%rip), %rcx    # 0x5419f2
leaq 0x2b31c4(%rip), %r8     # 0x541942
movl $0x6b, %r9d
movb $0x0, %al
callq 0x31a40
movl $0xffffffff, 0x3c(%rsp) # imm = 0xFFFFFFFF
jmp 0x28e795
jmp 0x28e797
movq 0x40(%rsp), %rdi
callq 0x28e510
cmpl $0x0, 0x3c(%rsp)
jne 0x28e8b8
movl $0x2, %edi
callq 0x28e330
movq %rax, 0x40(%rsp)
cmpl $0x0, 0x3c(%rsp)
jne 0x28e829
movq 0x40(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x28e550
movq %rax, 0x30(%rsp)
movq 0x40(%rsp), %rdi
movl $0x1, %esi
callq 0x28e550
movq %rax, %rcx
movq 0x30(%rsp), %rax
cmpq %rcx, %rax
jne 0x28e827
movq 0x50(%rsp), %rdi
leaq 0x26d319(%rip), %rsi    # 0x4fbb16
leaq 0x2b3225(%rip), %rdx    # 0x541a29
leaq 0x2b31e7(%rip), %rcx    # 0x5419f2
leaq 0x2b3130(%rip), %r8     # 0x541942
movl $0x71, %r9d
movb $0x0, %al
callq 0x31a40
movl $0xffffffff, 0x3c(%rsp) # imm = 0xFFFFFFFF
jmp 0x28e829
jmp 0x28e82b
movq 0x40(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x1, %edx
callq 0x28e610
cmpl $0x0, 0x3c(%rsp)
jne 0x28e8ac
movq 0x40(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x28e550
movq %rax, 0x28(%rsp)
movq 0x40(%rsp), %rdi
movl $0x1, %esi
callq 0x28e550
movq %rax, %rcx
movq 0x28(%rsp), %rax
cmpq %rcx, %rax
je 0x28e8aa
movq 0x50(%rsp), %rdi
leaq 0x26d296(%rip), %rsi    # 0x4fbb16
leaq 0x2b31d9(%rip), %rdx    # 0x541a60
leaq 0x2b3164(%rip), %rcx    # 0x5419f2
leaq 0x2b30ad(%rip), %r8     # 0x541942
movl $0x73, %r9d
movb $0x0, %al
callq 0x31a40
movl $0xffffffff, 0x3c(%rsp) # imm = 0xFFFFFFFF
jmp 0x28e8ac
jmp 0x28e8ae
movq 0x40(%rsp), %rdi
callq 0x28e510
cmpl $0x0, 0x3c(%rsp)
jne 0x28eaa3
movl $0x400, %edi            # imm = 0x400
callq 0x28e330
movq %rax, 0x40(%rsp)
movq $0x1, 0x48(%rsp)
xorl %eax, %eax
cmpl $0x0, 0x3c(%rsp)
movb %al, 0x27(%rsp)
jne 0x28e8f8
cmpq $0x400, 0x48(%rsp)      # imm = 0x400
setb %al
movb %al, 0x27(%rsp)
movb 0x27(%rsp), %al
testb $0x1, %al
jne 0x28e905
jmp 0x28e98c
jmp 0x28e907
cmpl $0x0, 0x3c(%rsp)
jne 0x28e975
movq 0x40(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x28e550
movq %rax, 0x18(%rsp)
movq 0x40(%rsp), %rdi
movq 0x48(%rsp), %rsi
callq 0x28e550
movq %rax, %rcx
movq 0x18(%rsp), %rax
cmpq %rcx, %rax
jne 0x28e973
movq 0x50(%rsp), %rdi
leaq 0x26d1cd(%rip), %rsi    # 0x4fbb16
leaq 0x2b3147(%rip), %rdx    # 0x541a97
leaq 0x2b309b(%rip), %rcx    # 0x5419f2
leaq 0x2b2fe4(%rip), %r8     # 0x541942
movl $0x7c, %r9d
movb $0x0, %al
callq 0x31a40
movl $0xffffffff, 0x3c(%rsp) # imm = 0xFFFFFFFF
jmp 0x28e975
jmp 0x28e977
jmp 0x28e979
movq 0x48(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x48(%rsp)
jmp 0x28e8db
movq $0x1, 0x48(%rsp)
xorl %eax, %eax
cmpl $0x0, 0x3c(%rsp)
movb %al, 0x17(%rsp)
jne 0x28e9b2
cmpq $0x400, 0x48(%rsp)      # imm = 0x400
setb %al
movb %al, 0x17(%rsp)
movb 0x17(%rsp), %al
testb $0x1, %al
jne 0x28e9bc
jmp 0x28e9df
movq 0x40(%rsp), %rdi
movq 0x48(%rsp), %rdx
xorl %eax, %eax
movl %eax, %esi
callq 0x28e610
movq 0x48(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x48(%rsp)
jmp 0x28e995
movq $0x1, 0x48(%rsp)
xorl %eax, %eax
cmpl $0x0, 0x3c(%rsp)
movb %al, 0x16(%rsp)
jne 0x28ea05
cmpq $0x400, 0x48(%rsp)      # imm = 0x400
setb %al
movb %al, 0x16(%rsp)
movb 0x16(%rsp), %al
testb $0x1, %al
jne 0x28ea12
jmp 0x28ea99
jmp 0x28ea14
cmpl $0x0, 0x3c(%rsp)
jne 0x28ea82
movq 0x40(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0x28e550
movq %rax, 0x8(%rsp)
movq 0x40(%rsp), %rdi
movq 0x48(%rsp), %rsi
callq 0x28e550
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
je 0x28ea80
movq 0x50(%rsp), %rdi
leaq 0x26d0c0(%rip), %rsi    # 0x4fbb16
leaq 0x2b3071(%rip), %rdx    # 0x541ace
leaq 0x2b2f8e(%rip), %rcx    # 0x5419f2
leaq 0x2b2ed7(%rip), %r8     # 0x541942
movl $0x81, %r9d
movb $0x0, %al
callq 0x31a40
movl $0xffffffff, 0x3c(%rsp) # imm = 0xFFFFFFFF
jmp 0x28ea82
jmp 0x28ea84
jmp 0x28ea86
movq 0x48(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x48(%rsp)
jmp 0x28e9e8
movq 0x40(%rsp), %rdi
callq 0x28e510
movl 0x3c(%rsp), %eax
addq $0x58, %rsp
retq
nopl (%rax)