// File: /workspace/github_cpp_makefile_star2_O2/medvedevgroup[P]varmatch/src/wholegenome.cpp
// Function: WholeGenome::test()
int WholeGenome::test() {
	genome_sequences[0] = "GTCAGCCGG";
	DiploidVariant d1(1, "T", vector<string> ({"A", "C"}), true, true, 0,0,0);
	DiploidVariant d2(4, "G", vector<string> ({"C", ""}), true, false, 0,0,0);
	DiploidVariant d3(5, "C", vector<string> ({"T", ""}), true, false, 0,0,0); // this is false negative
	DiploidVariant d4(6, "C", vector<string> ({"G", ""}), true, false, 0,0,0);
	DiploidVariant d5(7, "G", vector<string> ({"A", ""}), true, false, 0,0,0);
	DiploidVariant d6(1, "T", vector<string> ({"A", "C"}), true, true, 0,0,1);
	DiploidVariant d7(3, "AG", vector<string> ({"A", ""}), true, false, 1,0,1);
	DiploidVariant d8(7, "G", vector<string> ({"GA", ""}), true, false, 0,1,1);

    //complex_match_records = new vector<string>*[1];
    //complex_match_records[0] = new vector<string>;
	//vector<DiploidVariant> var_list = { d2,d3,d4,d5,d7,d8 };
	vector<DiploidVariant> var_list = { d1,d2,d3,d4,d5,d6,d7,d8 };
	//cout << MatchingSingleClusterBaseExtending(var_list, 0) << endl;
	//cout << complex_match_records[0]->at(0) << endl;
	return 0;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x780, %rsp            # imm = 0x780
addq $0x118, %rdi            # imm = 0x118
leaq 0x360(%rsp), %rsi
andl $0x0, (%rsi)
callq 0x1aa34
leaq 0xbf39(%rip), %rsi      # 0x2284d
movq %rax, %rdi
callq 0x55b0
leaq 0xbb3c(%rip), %rsi      # 0x2245f
leaq 0x1e0(%rsp), %rdi
leaq 0x6d0(%rsp), %rdx
callq 0x72ee
leaq 0xbf1c(%rip), %rsi      # 0x2285b
leaq 0x360(%rsp), %rdi
leaq 0x678(%rsp), %rdx
callq 0x72ee
leaq 0x380(%rsp), %rdi
leaq 0xaf20(%rip), %rsi      # 0x21883
leaq 0x620(%rsp), %rdx
callq 0x72ee
leaq 0xe8(%rsp), %rdi
leaq 0x360(%rsp), %rsi
pushq $0x2
popq %rdx
leaq 0x308(%rsp), %rcx
callq 0x1a34c
andl $0x0, 0x18(%rsp)
andl $0x0, 0x10(%rsp)
andl $0x0, 0x8(%rsp)
andl $0x0, (%rsp)
leaq 0x728(%rsp), %rdi
leaq 0x1e0(%rsp), %rdx
leaq 0xe8(%rsp), %rcx
pushq $0x1
popq %rsi
xorps %xmm0, %xmm0
movl %esi, %r8d
movl %esi, %r9d
callq 0x19b60
leaq 0xe8(%rsp), %rdi
callq 0xadcc
pushq $0x20
popq %rbx
leaq (%rsp,%rbx), %rdi
addq $0x360, %rdi            # imm = 0x360
callq 0x55e8
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x169dc
leaq 0x1e0(%rsp), %rdi
callq 0x55e8
leaq 0xbe4e(%rip), %rsi      # 0x22858
leaq 0x1c0(%rsp), %rdi
leaq 0x678(%rsp), %rdx
callq 0x72ee
leaq 0xae5d(%rip), %rsi      # 0x21883
leaq 0x360(%rsp), %rdi
leaq 0x620(%rsp), %rdx
callq 0x72ee
leaq 0x380(%rsp), %rdi
leaq 0xbb60(%rip), %rsi      # 0x225aa
leaq 0x308(%rsp), %rdx
callq 0x72ee
leaq 0xd0(%rsp), %rdi
leaq 0x360(%rsp), %rsi
pushq $0x2
popq %rdx
leaq 0x2b0(%rsp), %rcx
callq 0x1a34c
andl $0x0, 0x18(%rsp)
andl $0x0, 0x10(%rsp)
andl $0x0, 0x8(%rsp)
andl $0x0, (%rsp)
leaq 0x6d0(%rsp), %rdi
pushq $0x4
popq %rsi
leaq 0x1c0(%rsp), %rdx
leaq 0xd0(%rsp), %rcx
pushq $0x1
popq %r8
xorps %xmm0, %xmm0
xorl %r9d, %r9d
callq 0x19b60
leaq 0xd0(%rsp), %rdi
callq 0xadcc
pushq $0x20
popq %rbx
leaq (%rsp,%rbx), %rdi
addq $0x360, %rdi            # imm = 0x360
callq 0x55e8
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x16ac4
leaq 0x1c0(%rsp), %rdi
callq 0x55e8
leaq 0xad91(%rip), %rsi      # 0x21883
leaq 0x1a0(%rsp), %rdi
leaq 0x620(%rsp), %rdx
callq 0x72ee
leaq 0xb951(%rip), %rsi      # 0x2245f
leaq 0x360(%rsp), %rdi
leaq 0x308(%rsp), %rdx
callq 0x72ee
leaq 0x380(%rsp), %rdi
leaq 0xba78(%rip), %rsi      # 0x225aa
leaq 0x2b0(%rsp), %rdx
callq 0x72ee
leaq 0xb8(%rsp), %rdi
leaq 0x360(%rsp), %rsi
pushq $0x2
popq %rdx
leaq 0x258(%rsp), %rcx
callq 0x1a34c
andl $0x0, 0x18(%rsp)
andl $0x0, 0x10(%rsp)
andl $0x0, 0x8(%rsp)
andl $0x0, (%rsp)
leaq 0x678(%rsp), %rdi
pushq $0x5
popq %rsi
leaq 0x1a0(%rsp), %rdx
leaq 0xb8(%rsp), %rcx
pushq $0x1
popq %r8
xorps %xmm0, %xmm0
xorl %r9d, %r9d
callq 0x19b60
leaq 0xb8(%rsp), %rdi
callq 0xadcc
pushq $0x20
popq %rbx
leaq (%rsp,%rbx), %rdi
addq $0x360, %rdi            # imm = 0x360
callq 0x55e8
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x16bac
leaq 0x1a0(%rsp), %rdi
callq 0x55e8
leaq 0xaca9(%rip), %rsi      # 0x21883
leaq 0x180(%rsp), %rdi
leaq 0x308(%rsp), %rdx
callq 0x72ee
leaq 0xbc62(%rip), %rsi      # 0x22858
leaq 0x360(%rsp), %rdi
leaq 0x2b0(%rsp), %rdx
callq 0x72ee
leaq 0x380(%rsp), %rdi
leaq 0xb990(%rip), %rsi      # 0x225aa
leaq 0x258(%rsp), %rdx
callq 0x72ee
leaq 0xa0(%rsp), %rdi
leaq 0x360(%rsp), %rsi
pushq $0x2
popq %rdx
leaq 0x200(%rsp), %rcx
callq 0x1a34c
andl $0x0, 0x18(%rsp)
andl $0x0, 0x10(%rsp)
andl $0x0, 0x8(%rsp)
andl $0x0, (%rsp)
leaq 0x620(%rsp), %rdi
pushq $0x6
popq %rsi
leaq 0x180(%rsp), %rdx
leaq 0xa0(%rsp), %rcx
pushq $0x1
popq %r8
xorps %xmm0, %xmm0
xorl %r9d, %r9d
callq 0x19b60
leaq 0xa0(%rsp), %rdi
callq 0xadcc
pushq $0x20
popq %rbx
leaq (%rsp,%rbx), %rdi
addq $0x360, %rdi            # imm = 0x360
callq 0x55e8
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x16c94
leaq 0x180(%rsp), %rdi
callq 0x55e8
leaq 0xbb96(%rip), %rsi      # 0x22858
leaq 0x160(%rsp), %rdi
leaq 0x2b0(%rsp), %rdx
callq 0x72ee
leaq 0xbb7d(%rip), %rsi      # 0x2285b
leaq 0x360(%rsp), %rdi
leaq 0x258(%rsp), %rdx
callq 0x72ee
leaq 0x380(%rsp), %rdi
leaq 0xb8a8(%rip), %rsi      # 0x225aa
leaq 0x200(%rsp), %rdx
callq 0x72ee
leaq 0x88(%rsp), %rdi
leaq 0x360(%rsp), %rsi
pushq $0x2
popq %rdx
leaq 0x28(%rsp), %rcx
callq 0x1a34c
andl $0x0, 0x18(%rsp)
andl $0x0, 0x10(%rsp)
andl $0x0, 0x8(%rsp)
andl $0x0, (%rsp)
leaq 0x308(%rsp), %rdi
pushq $0x7
popq %rsi
leaq 0x160(%rsp), %rdx
leaq 0x88(%rsp), %rcx
pushq $0x1
popq %r8
xorps %xmm0, %xmm0
xorl %r9d, %r9d
callq 0x19b60
leaq 0x88(%rsp), %rdi
callq 0xadcc
pushq $0x20
popq %rbx
leaq (%rsp,%rbx), %rdi
addq $0x360, %rdi            # imm = 0x360
callq 0x55e8
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x16d79
leaq 0x160(%rsp), %rdi
callq 0x55e8
leaq 0xb6b8(%rip), %rsi      # 0x2245f
leaq 0x140(%rsp), %rdi
leaq 0x258(%rsp), %rdx
callq 0x72ee
leaq 0xba98(%rip), %rsi      # 0x2285b
leaq 0x360(%rsp), %rdi
leaq 0x200(%rsp), %rdx
callq 0x72ee
leaq 0x380(%rsp), %rdi
leaq 0xaa9c(%rip), %rsi      # 0x21883
leaq 0x28(%rsp), %rdx
callq 0x72ee
leaq 0x70(%rsp), %rdi
leaq 0x360(%rsp), %rsi
pushq $0x2
popq %rdx
leaq 0x25(%rsp), %rcx
callq 0x1a34c
andl $0x0, 0x18(%rsp)
andl $0x0, 0x8(%rsp)
andl $0x0, (%rsp)
movl $0x1, 0x10(%rsp)
leaq 0x2b0(%rsp), %rdi
leaq 0x140(%rsp), %rdx
leaq 0x70(%rsp), %rcx
pushq $0x1
popq %rbx
xorps %xmm0, %xmm0
movl %ebx, %esi
movl %ebx, %r8d
movl %ebx, %r9d
callq 0x19b60
leaq 0x70(%rsp), %rdi
callq 0xadcc
pushq $0x20
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x360, %rdi            # imm = 0x360
callq 0x55e8
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x16e57
leaq 0x140(%rsp), %rdi
callq 0x55e8
leaq 0xb9d2(%rip), %rsi      # 0x22857
leaq 0x120(%rsp), %rdi
leaq 0x200(%rsp), %rdx
callq 0x72ee
leaq 0xb9ba(%rip), %rsi      # 0x2285b
leaq 0x360(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x72ee
leaq 0x380(%rsp), %rdi
leaq 0xb6e8(%rip), %rsi      # 0x225aa
leaq 0x25(%rsp), %rdx
callq 0x72ee
leaq 0x58(%rsp), %rdi
leaq 0x360(%rsp), %rsi
pushq $0x2
popq %rdx
leaq 0x26(%rsp), %rcx
callq 0x1a34c
andl $0x0, 0x18(%rsp)
movl %ebx, 0x10(%rsp)
andl $0x0, 0x8(%rsp)
movl %ebx, (%rsp)
leaq 0x258(%rsp), %rdi
pushq $0x3
popq %rsi
leaq 0x120(%rsp), %rdx
leaq 0x58(%rsp), %rcx
xorps %xmm0, %xmm0
movl %ebx, %r8d
xorl %r9d, %r9d
callq 0x19b60
leaq 0x58(%rsp), %rdi
callq 0xadcc
pushq $0x20
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x360, %rdi            # imm = 0x360
callq 0x55e8
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x16f2b
leaq 0x120(%rsp), %rdi
callq 0x55e8
leaq 0xb8ff(%rip), %rsi      # 0x22858
leaq 0x100(%rsp), %rdi
leaq 0x28(%rsp), %rdx
callq 0x72ee
leaq 0xb8e8(%rip), %rsi      # 0x2285a
leaq 0x360(%rsp), %rdi
leaq 0x25(%rsp), %rdx
callq 0x72ee
leaq 0x380(%rsp), %rdi
leaq 0xb617(%rip), %rsi      # 0x225aa
leaq 0x26(%rsp), %rdx
callq 0x72ee
leaq 0x40(%rsp), %rdi
leaq 0x360(%rsp), %rsi
pushq $0x2
popq %rdx
leaq 0x27(%rsp), %rcx
callq 0x1a34c
andl $0x0, 0x18(%rsp)
movl %ebx, 0x10(%rsp)
andl $0x0, (%rsp)
movl %ebx, 0x8(%rsp)
leaq 0x200(%rsp), %rdi
pushq $0x7
popq %rsi
leaq 0x100(%rsp), %rdx
leaq 0x40(%rsp), %rcx
xorps %xmm0, %xmm0
movl %ebx, %r8d
xorl %r9d, %r9d
callq 0x19b60
leaq 0x40(%rsp), %rdi
callq 0xadcc
pushq $0x20
popq %rbx
leaq (%rsp,%rbx), %rdi
addq $0x360, %rdi            # imm = 0x360
callq 0x55e8
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x16ffb
leaq 0x100(%rsp), %rdi
callq 0x55e8
leaq 0x360(%rsp), %r14
leaq 0x728(%rsp), %rsi
movq %r14, %rdi
callq 0x1a174
leaq 0x3b8(%rsp), %r15
leaq 0x6d0(%rsp), %rsi
movq %r15, %rdi
callq 0x1a174
leaq 0x410(%rsp), %r15
leaq 0x678(%rsp), %rsi
movq %r15, %rdi
callq 0x1a174
leaq 0x468(%rsp), %r15
leaq 0x620(%rsp), %rsi
movq %r15, %rdi
callq 0x1a174
leaq 0x4c0(%rsp), %r15
leaq 0x308(%rsp), %rsi
movq %r15, %rdi
callq 0x1a174
leaq 0x518(%rsp), %r15
leaq 0x2b0(%rsp), %rsi
movq %r15, %rdi
callq 0x1a174
leaq 0x570(%rsp), %r15
leaq 0x258(%rsp), %rsi
movq %r15, %rdi
callq 0x1a174
leaq 0x5c8(%rsp), %r15
leaq 0x200(%rsp), %rsi
movq %r15, %rdi
callq 0x1a174
leaq 0x28(%rsp), %rdi
leaq 0x360(%rsp), %rsi
pushq $0x8
popq %rdx
leaq 0x25(%rsp), %rcx
callq 0x1a8d2
movl $0x268, %ebx            # imm = 0x268
leaq (%rsp,%rbx), %rdi
addq $0x360, %rdi            # imm = 0x360
callq 0x19c16
addq $-0x58, %rbx
cmpq $-0x58, %rbx
jne 0x17101
leaq 0x28(%rsp), %rdi
callq 0x19a38
leaq 0x200(%rsp), %rdi
callq 0x19c16
leaq 0x258(%rsp), %rdi
callq 0x19c16
leaq 0x2b0(%rsp), %rdi
callq 0x19c16
leaq 0x308(%rsp), %rdi
callq 0x19c16
leaq 0x620(%rsp), %rdi
callq 0x19c16
leaq 0x678(%rsp), %rdi
callq 0x19c16
leaq 0x6d0(%rsp), %rdi
callq 0x19c16
leaq 0x728(%rsp), %rdi
callq 0x19c16
xorl %eax, %eax
addq $0x780, %rsp            # imm = 0x780
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
movl $0x268, %r14d           # imm = 0x268
leaq (%rsp,%r14), %rdi
addq $0x360, %rdi            # imm = 0x360
callq 0x19c16
addq $-0x58, %r14
cmpq $-0x58, %r14
jne 0x171a5
jmp 0x174f4
movq %rax, %rbx
jmp 0x174f4
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0xadcc
jmp 0x171de
movq %rax, %rbx
pushq $0x20
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x360, %rdi            # imm = 0x360
callq 0x55e8
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x171e2
jmp 0x17213
movq %rax, %rbx
leaq 0x360(%rsp), %rdi
callq 0x55e8
jmp 0x17213
movq %rax, %rbx
leaq 0x100(%rsp), %rdi
callq 0x55e8
jmp 0x17501
movq %rax, %rbx
jmp 0x17501
movq %rax, %rbx
leaq 0x58(%rsp), %rdi
callq 0xadcc
jmp 0x1723f
movq %rax, %rbx
pushq $0x20
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x360, %rdi            # imm = 0x360
callq 0x55e8
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x17243
jmp 0x17274
movq %rax, %rbx
leaq 0x360(%rsp), %rdi
callq 0x55e8
jmp 0x17274
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
callq 0x55e8
jmp 0x1750e
movq %rax, %rbx
jmp 0x1750e
movq %rax, %rbx
leaq 0x70(%rsp), %rdi
callq 0xadcc
jmp 0x172a0
movq %rax, %rbx
pushq $0x20
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x360, %rdi            # imm = 0x360
callq 0x55e8
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x172a4
jmp 0x172d5
movq %rax, %rbx
leaq 0x360(%rsp), %rdi
callq 0x55e8
jmp 0x172d5
movq %rax, %rbx
leaq 0x140(%rsp), %rdi
callq 0x55e8
jmp 0x1751b
movq %rax, %rbx
jmp 0x1751b
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0xadcc
jmp 0x17304
movq %rax, %rbx
pushq $0x20
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x360, %rdi            # imm = 0x360
callq 0x55e8
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x17308
jmp 0x17339
movq %rax, %rbx
leaq 0x360(%rsp), %rdi
callq 0x55e8
jmp 0x17339
movq %rax, %rbx
leaq 0x160(%rsp), %rdi
callq 0x55e8
jmp 0x17528
movq %rax, %rbx
jmp 0x17528
movq %rax, %rbx
leaq 0xa0(%rsp), %rdi
callq 0xadcc
jmp 0x17368
movq %rax, %rbx
pushq $0x20
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x360, %rdi            # imm = 0x360
callq 0x55e8
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x1736c
jmp 0x1739d
movq %rax, %rbx
leaq 0x360(%rsp), %rdi
callq 0x55e8
jmp 0x1739d
movq %rax, %rbx
leaq 0x180(%rsp), %rdi
callq 0x55e8
jmp 0x17535
movq %rax, %rbx
jmp 0x17535
movq %rax, %rbx
leaq 0xb8(%rsp), %rdi
callq 0xadcc
jmp 0x173cc
movq %rax, %rbx
pushq $0x20
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x360, %rdi            # imm = 0x360
callq 0x55e8
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x173d0
jmp 0x17401
movq %rax, %rbx
leaq 0x360(%rsp), %rdi
callq 0x55e8
jmp 0x17401
movq %rax, %rbx
leaq 0x1a0(%rsp), %rdi
callq 0x55e8
jmp 0x17542
movq %rax, %rbx
jmp 0x17542
movq %rax, %rbx
leaq 0xd0(%rsp), %rdi
callq 0xadcc
jmp 0x17430
movq %rax, %rbx
pushq $0x20
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x360, %rdi            # imm = 0x360
callq 0x55e8
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x17434
jmp 0x17465
movq %rax, %rbx
leaq 0x360(%rsp), %rdi
callq 0x55e8
jmp 0x17465
movq %rax, %rbx
leaq 0x1c0(%rsp), %rdi
callq 0x55e8
jmp 0x1754f
movq %rax, %rbx
jmp 0x1754f
movq %rax, %rbx
leaq 0xe8(%rsp), %rdi
callq 0xadcc
jmp 0x17494
movq %rax, %rbx
pushq $0x20
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x360, %rdi            # imm = 0x360
callq 0x55e8
addq $-0x20, %r14
cmpq $-0x20, %r14
jne 0x17498
jmp 0x174c9
movq %rax, %rbx
leaq 0x360(%rsp), %rdi
callq 0x55e8
jmp 0x174c9
movq %rax, %rbx
leaq 0x1e0(%rsp), %rdi
callq 0x55e8
jmp 0x1755c
movq %rax, %rbx
jmp 0x1755c
movq %rax, %rbx
addq $-0x58, %r15
movq %r15, %rdi
callq 0x19c16
cmpq %r14, %r15
jne 0x174e3
leaq 0x200(%rsp), %rdi
callq 0x19c16
leaq 0x258(%rsp), %rdi
callq 0x19c16
leaq 0x2b0(%rsp), %rdi
callq 0x19c16
leaq 0x308(%rsp), %rdi
callq 0x19c16
leaq 0x620(%rsp), %rdi
callq 0x19c16
leaq 0x678(%rsp), %rdi
callq 0x19c16
leaq 0x6d0(%rsp), %rdi
callq 0x19c16
leaq 0x728(%rsp), %rdi
callq 0x19c16
movq %rbx, %rdi
callq 0x5540