// File: /workspace/github_cpp_makefile_star2_O1/srcmake[P]tries/src/main.cpp
// Function: main
int main()  
	{
	cout << "Program started.\n";

	Trie trie;
	
	trie.Insert("apple");
	trie.Insert("banana");
	trie.Insert("apricot");

	assert(trie.Contains("apple") == true);
	assert(trie.Contains("app") == false);
	assert(trie.Contains("apricot") == true);

	assert(trie.Contains("bananas") == false);
	assert(trie.Contains("banana") == true);
	
	assert(trie.PrefixExists("app") == true);
	assert(trie.PrefixExists("banana") == true);
	assert(trie.PrefixExists("bann") == false);

	cout << "Program ended.\n";	
	return 0;
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x30, %rsp
movq 0x29c5(%rip), %rdi      # 0x3fd8
leaq 0x9ea(%rip), %rsi       # 0x2004
movl $0x11, %edx
callq 0x10e0
movl $0x40, %edi
callq 0x10c0
leaq 0x38(%rax), %rcx
movq %rcx, 0x8(%rax)
movq $0x1, 0x10(%rax)
xorps %xmm0, %xmm0
movups %xmm0, 0x18(%rax)
movl $0x3f800000, 0x28(%rax) # imm = 0x3F800000
movups %xmm0, 0x30(%rax)
movb $0x0, 0x1(%rax)
movq %rax, -0x38(%rbp)
leaq -0x20(%rbp), %r14
movq %r14, -0x10(%r14)
leaq 0x9af(%rip), %rsi       # 0x2016
leaq 0x9ad(%rip), %rdx       # 0x201b
leaq -0x30(%rbp), %rdi
callq 0x1daa
leaq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x12e6
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x1699
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x975(%rip), %rsi       # 0x201c
leaq 0x974(%rip), %rdx       # 0x2022
callq 0x1daa
leaq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x12e6
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x16d5
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x940(%rip), %rsi       # 0x2023
leaq 0x940(%rip), %rdx       # 0x202a
callq 0x1daa
leaq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x12e6
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x1711
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x8f7(%rip), %rsi       # 0x2016
leaq 0x8f5(%rip), %rdx       # 0x201b
callq 0x1daa
leaq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1410
testb %al, %al
je 0x1954
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x1755
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x8ff(%rip), %rsi       # 0x2062
leaq 0x8fb(%rip), %rdx       # 0x2065
callq 0x1daa
leaq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1410
testb %al, %al
jne 0x1973
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x1799
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x87c(%rip), %rsi       # 0x2023
leaq 0x87c(%rip), %rdx       # 0x202a
callq 0x1daa
leaq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1410
testb %al, %al
je 0x1992
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x17dd
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x8ba(%rip), %rsi       # 0x20a5
leaq 0x8ba(%rip), %rdx       # 0x20ac
callq 0x1daa
leaq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1410
testb %al, %al
jne 0x19b1
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x1821
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x7ed(%rip), %rsi       # 0x201c
leaq 0x7ec(%rip), %rdx       # 0x2022
callq 0x1daa
leaq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1410
testb %al, %al
je 0x19d0
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x1865
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x7ef(%rip), %rsi       # 0x2062
leaq 0x7eb(%rip), %rdx       # 0x2065
callq 0x1daa
leaq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1508
testb %al, %al
je 0x19ef
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x18a9
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x765(%rip), %rsi       # 0x201c
leaq 0x764(%rip), %rdx       # 0x2022
callq 0x1daa
leaq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1508
testb %al, %al
je 0x1a0e
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x18ed
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x839(%rip), %rsi       # 0x2134
leaq 0x836(%rip), %rdx       # 0x2138
callq 0x1daa
leaq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1508
testb %al, %al
jne 0x1a2d
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x1931
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
movq 0x26a0(%rip), %rdi      # 0x3fd8
leaq 0x81d(%rip), %rsi       # 0x215c
movl $0xf, %edx
callq 0x10e0
xorl %eax, %eax
addq $0x30, %rsp
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x6d0(%rip), %rdi       # 0x202b
leaq 0x6e8(%rip), %rsi       # 0x204a
leaq 0x6ee(%rip), %rcx       # 0x2057
movl $0x11, %edx
callq 0x1070
leaq 0x6ec(%rip), %rdi       # 0x2066
leaq 0x6c9(%rip), %rsi       # 0x204a
leaq 0x6cf(%rip), %rcx       # 0x2057
movl $0x12, %edx
callq 0x1070
leaq 0x6eb(%rip), %rdi       # 0x2084
leaq 0x6aa(%rip), %rsi       # 0x204a
leaq 0x6b0(%rip), %rcx       # 0x2057
movl $0x13, %edx
callq 0x1070
leaq 0x6f5(%rip), %rdi       # 0x20ad
leaq 0x68b(%rip), %rsi       # 0x204a
leaq 0x691(%rip), %rcx       # 0x2057
movl $0x15, %edx
callq 0x1070
leaq 0x6f8(%rip), %rdi       # 0x20cf
leaq 0x66c(%rip), %rsi       # 0x204a
leaq 0x672(%rip), %rcx       # 0x2057
movl $0x16, %edx
callq 0x1070
leaq 0x6f9(%rip), %rdi       # 0x20ef
leaq 0x64d(%rip), %rsi       # 0x204a
leaq 0x653(%rip), %rcx       # 0x2057
movl $0x18, %edx
callq 0x1070
leaq 0x6fb(%rip), %rdi       # 0x2110
leaq 0x62e(%rip), %rsi       # 0x204a
leaq 0x634(%rip), %rcx       # 0x2057
movl $0x19, %edx
callq 0x1070
leaq 0x705(%rip), %rdi       # 0x2139
leaq 0x60f(%rip), %rsi       # 0x204a
leaq 0x615(%rip), %rcx       # 0x2057
movl $0x1a, %edx
callq 0x1070
jmp 0x1a74
jmp 0x1a8e
jmp 0x1a74
jmp 0x1a8e
jmp 0x1a74
jmp 0x1a8e
jmp 0x1a74
jmp 0x1a8e
jmp 0x1a74
jmp 0x1a8e
jmp 0x1a74
jmp 0x1a8e
jmp 0x1a74
jmp 0x1a8e
jmp 0x1a74
jmp 0x1a8e
jmp 0x1a74
jmp 0x1a8e
jmp 0x1a74
jmp 0x1a8e
movq %rax, %rbx
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x1a91
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
jmp 0x1a91
movq %rax, %rbx
movq %rbx, %rdi
callq 0x1130