// File: Manca[P]algorithms2/./lib/UnionFind.hpp
// Function: DataStructures::TestCase1()
bool TestCase1()
    {
        // test on 10 elements starting from 0
        UnionFind uf(10);

        assert(uf.Find(0) == 0);
        assert(uf.Find(9) == 9);

        uf.Union(0, 9);
        assert(uf.Find(9) == 0);
        assert(uf.count() == 9);

        uf.Union(9, 3);
        assert(uf.Find(9) == 0);
        assert(uf.count() == 8);

        uf.Union(4, 5);
        uf.Union(4, 9);
        uf.Union(5, 7);
        assert(uf.Find(9) == 4);
        assert(uf.Find(3) == 4);
        assert(uf.Find(0) == 4);
        uf.Union(3, 4);
        assert(uf.count() == 5);
        uf.Union(0, 7);
        assert(uf.count() == 5);

        return true;
    }

// Assembly:
subq $0x58, %rsp
leaq 0x40(%rsp), %rdi
movq %rdi, 0x28(%rsp)
movl $0xa, %esi
callq 0x10ca0
movq 0x28(%rsp), %rdi
xorl %esi, %esi
callq 0x10d70
movl %eax, 0x30(%rsp)
jmp 0x4f3a
movl 0x30(%rsp), %eax
cmpl $0x0, %eax
jne 0x4f45
jmp 0x4f81
leaq 0x2b32a(%rip), %rdi     # 0x30276
leaq 0x2b333(%rip), %rsi     # 0x30286
movl $0x5c, %edx
leaq 0x2b33b(%rip), %rcx     # 0x3029a
callq 0x3200
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x38(%rsp)
movl %eax, 0x34(%rsp)
leaq 0x40(%rsp), %rdi
callq 0x10ec0
jmp 0x5285
leaq 0x40(%rsp), %rdi
movl $0x9, %esi
callq 0x10d70
movl %eax, 0x24(%rsp)
jmp 0x4f96
movl 0x24(%rsp), %eax
cmpl $0x9, %eax
jne 0x4fa1
jmp 0x4fc0
leaq 0x2b313(%rip), %rdi     # 0x302bb
leaq 0x2b2d7(%rip), %rsi     # 0x30286
movl $0x5d, %edx
leaq 0x2b2df(%rip), %rcx     # 0x3029a
callq 0x3200
leaq 0x40(%rsp), %rdi
xorl %esi, %esi
movl $0x9, %edx
callq 0x10dc0
jmp 0x4fd3
leaq 0x40(%rsp), %rdi
movl $0x9, %esi
callq 0x10d70
movl %eax, 0x20(%rsp)
jmp 0x4fe8
movl 0x20(%rsp), %eax
cmpl $0x0, %eax
jne 0x4ff3
jmp 0x5012
leaq 0x2b2d1(%rip), %rdi     # 0x302cb
leaq 0x2b285(%rip), %rsi     # 0x30286
movl $0x60, %edx
leaq 0x2b28d(%rip), %rcx     # 0x3029a
callq 0x3200
leaq 0x40(%rsp), %rdi
callq 0x10eb0
movl %eax, 0x1c(%rsp)
jmp 0x5022
movl 0x1c(%rsp), %eax
cmpl $0x9, %eax
jne 0x502d
jmp 0x504c
leaq 0x2b2a7(%rip), %rdi     # 0x302db
leaq 0x2b24b(%rip), %rsi     # 0x30286
movl $0x61, %edx
leaq 0x2b253(%rip), %rcx     # 0x3029a
callq 0x3200
leaq 0x40(%rsp), %rdi
movl $0x9, %esi
movl $0x3, %edx
callq 0x10dc0
jmp 0x5062
leaq 0x40(%rsp), %rdi
movl $0x9, %esi
callq 0x10d70
movl %eax, 0x18(%rsp)
jmp 0x5077
movl 0x18(%rsp), %eax
cmpl $0x0, %eax
jne 0x5082
jmp 0x50a1
leaq 0x2b242(%rip), %rdi     # 0x302cb
leaq 0x2b1f6(%rip), %rsi     # 0x30286
movl $0x64, %edx
leaq 0x2b1fe(%rip), %rcx     # 0x3029a
callq 0x3200
leaq 0x40(%rsp), %rdi
callq 0x10eb0
movl %eax, 0x14(%rsp)
jmp 0x50b1
movl 0x14(%rsp), %eax
cmpl $0x8, %eax
jne 0x50bc
jmp 0x50db
leaq 0x2b228(%rip), %rdi     # 0x302eb
leaq 0x2b1bc(%rip), %rsi     # 0x30286
movl $0x65, %edx
leaq 0x2b1c4(%rip), %rcx     # 0x3029a
callq 0x3200
leaq 0x40(%rsp), %rdi
movl $0x4, %esi
movl $0x5, %edx
callq 0x10dc0
jmp 0x50f1
leaq 0x40(%rsp), %rdi
movl $0x4, %esi
movl $0x9, %edx
callq 0x10dc0
jmp 0x5107
leaq 0x40(%rsp), %rdi
movl $0x5, %esi
movl $0x7, %edx
callq 0x10dc0
jmp 0x511d
leaq 0x40(%rsp), %rdi
movl $0x9, %esi
callq 0x10d70
movl %eax, 0x10(%rsp)
jmp 0x5132
movl 0x10(%rsp), %eax
cmpl $0x4, %eax
jne 0x513d
jmp 0x515c
leaq 0x2b1b7(%rip), %rdi     # 0x302fb
leaq 0x2b13b(%rip), %rsi     # 0x30286
movl $0x6a, %edx
leaq 0x2b143(%rip), %rcx     # 0x3029a
callq 0x3200
leaq 0x40(%rsp), %rdi
movl $0x3, %esi
callq 0x10d70
movl %eax, 0xc(%rsp)
jmp 0x5171
movl 0xc(%rsp), %eax
cmpl $0x4, %eax
jne 0x517c
jmp 0x519b
leaq 0x2b188(%rip), %rdi     # 0x3030b
leaq 0x2b0fc(%rip), %rsi     # 0x30286
movl $0x6b, %edx
leaq 0x2b104(%rip), %rcx     # 0x3029a
callq 0x3200
leaq 0x40(%rsp), %rdi
xorl %esi, %esi
callq 0x10d70
movl %eax, 0x8(%rsp)
jmp 0x51ad
movl 0x8(%rsp), %eax
cmpl $0x4, %eax
jne 0x51b8
jmp 0x51d7
leaq 0x2b15c(%rip), %rdi     # 0x3031b
leaq 0x2b0c0(%rip), %rsi     # 0x30286
movl $0x6c, %edx
leaq 0x2b0c8(%rip), %rcx     # 0x3029a
callq 0x3200
leaq 0x40(%rsp), %rdi
movl $0x3, %esi
movl $0x4, %edx
callq 0x10dc0
jmp 0x51ed
leaq 0x40(%rsp), %rdi
callq 0x10eb0
movl %eax, 0x4(%rsp)
jmp 0x51fd
movl 0x4(%rsp), %eax
cmpl $0x5, %eax
jne 0x5208
jmp 0x5227
leaq 0x2b11c(%rip), %rdi     # 0x3032b
leaq 0x2b070(%rip), %rsi     # 0x30286
movl $0x6e, %edx
leaq 0x2b078(%rip), %rcx     # 0x3029a
callq 0x3200
leaq 0x40(%rsp), %rdi
xorl %esi, %esi
movl $0x7, %edx
callq 0x10dc0
jmp 0x523a
leaq 0x40(%rsp), %rdi
callq 0x10eb0
movl %eax, (%rsp)
jmp 0x5249
movl (%rsp), %eax
cmpl $0x5, %eax
jne 0x5253
jmp 0x5272
leaq 0x2b0d1(%rip), %rdi     # 0x3032b
leaq 0x2b025(%rip), %rsi     # 0x30286
movl $0x70, %edx
leaq 0x2b02d(%rip), %rcx     # 0x3029a
callq 0x3200
leaq 0x40(%rsp), %rdi
callq 0x10ec0
movb $0x1, %al
andb $0x1, %al
addq $0x58, %rsp
retq
movq 0x38(%rsp), %rdi
callq 0x3460
nop