// File: /workspace/github_cpp_makefile_star2_O3/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 0x2b0e(%rip), %rdi      # 0x3fd8
leaq 0xb33(%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 0xaf8(%rip), %rsi       # 0x2016
leaq 0xaf6(%rip), %rdx       # 0x201b
leaq -0x30(%rbp), %rdi
callq 0x1c92
leaq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x12e6
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x1550
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0xabe(%rip), %rsi       # 0x201c
leaq 0xabd(%rip), %rdx       # 0x2022
callq 0x1c92
leaq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x12e6
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x158c
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0xa89(%rip), %rsi       # 0x2023
leaq 0xa89(%rip), %rdx       # 0x202a
callq 0x1c92
leaq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x12e6
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x15c8
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0xa40(%rip), %rsi       # 0x2016
leaq 0xa3e(%rip), %rdx       # 0x201b
callq 0x1c92
leaq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x13b6
testb %al, %al
je 0x180b
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x160c
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0xa48(%rip), %rsi       # 0x2062
leaq 0xa44(%rip), %rdx       # 0x2065
callq 0x1c92
leaq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x13b6
testb %al, %al
jne 0x182a
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x1650
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x9c5(%rip), %rsi       # 0x2023
leaq 0x9c5(%rip), %rdx       # 0x202a
callq 0x1c92
leaq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x13b6
testb %al, %al
je 0x1849
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x1694
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0xa03(%rip), %rsi       # 0x20a5
leaq 0xa03(%rip), %rdx       # 0x20ac
callq 0x1c92
leaq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x13b6
testb %al, %al
jne 0x1868
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x16d8
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x936(%rip), %rsi       # 0x201c
leaq 0x935(%rip), %rdx       # 0x2022
callq 0x1c92
leaq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x13b6
testb %al, %al
je 0x1887
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x171c
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x938(%rip), %rsi       # 0x2062
leaq 0x934(%rip), %rdx       # 0x2065
callq 0x1c92
leaq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1438
testb %al, %al
je 0x18a6
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x1760
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x8ae(%rip), %rsi       # 0x201c
leaq 0x8ad(%rip), %rdx       # 0x2022
callq 0x1c92
leaq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1438
testb %al, %al
je 0x18c5
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x17a4
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
leaq -0x30(%rbp), %rdi
movq %r14, (%rdi)
leaq 0x982(%rip), %rsi       # 0x2134
leaq 0x97f(%rip), %rdx       # 0x2138
callq 0x1c92
leaq -0x38(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x1438
testb %al, %al
jne 0x18e4
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x17e8
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
movq 0x27e9(%rip), %rdi      # 0x3fd8
leaq 0x966(%rip), %rsi       # 0x215c
movl $0xf, %edx
callq 0x10e0
xorl %eax, %eax
addq $0x30, %rsp
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x819(%rip), %rdi       # 0x202b
leaq 0x831(%rip), %rsi       # 0x204a
leaq 0x837(%rip), %rcx       # 0x2057
movl $0x11, %edx
callq 0x1070
leaq 0x835(%rip), %rdi       # 0x2066
leaq 0x812(%rip), %rsi       # 0x204a
leaq 0x818(%rip), %rcx       # 0x2057
movl $0x12, %edx
callq 0x1070
leaq 0x834(%rip), %rdi       # 0x2084
leaq 0x7f3(%rip), %rsi       # 0x204a
leaq 0x7f9(%rip), %rcx       # 0x2057
movl $0x13, %edx
callq 0x1070
leaq 0x83e(%rip), %rdi       # 0x20ad
leaq 0x7d4(%rip), %rsi       # 0x204a
leaq 0x7da(%rip), %rcx       # 0x2057
movl $0x15, %edx
callq 0x1070
leaq 0x841(%rip), %rdi       # 0x20cf
leaq 0x7b5(%rip), %rsi       # 0x204a
leaq 0x7bb(%rip), %rcx       # 0x2057
movl $0x16, %edx
callq 0x1070
leaq 0x842(%rip), %rdi       # 0x20ef
leaq 0x796(%rip), %rsi       # 0x204a
leaq 0x79c(%rip), %rcx       # 0x2057
movl $0x18, %edx
callq 0x1070
leaq 0x844(%rip), %rdi       # 0x2110
leaq 0x777(%rip), %rsi       # 0x204a
leaq 0x77d(%rip), %rcx       # 0x2057
movl $0x19, %edx
callq 0x1070
leaq 0x84e(%rip), %rdi       # 0x2139
leaq 0x758(%rip), %rsi       # 0x204a
leaq 0x75e(%rip), %rcx       # 0x2057
movl $0x1a, %edx
callq 0x1070
jmp 0x192b
jmp 0x1945
jmp 0x192b
jmp 0x1945
jmp 0x192b
jmp 0x1945
jmp 0x192b
jmp 0x1945
jmp 0x192b
jmp 0x1945
jmp 0x192b
jmp 0x1945
jmp 0x192b
jmp 0x1945
jmp 0x192b
jmp 0x1945
jmp 0x192b
jmp 0x1945
jmp 0x192b
jmp 0x1945
movq %rax, %rbx
movq -0x30(%rbp), %rdi
cmpq %r14, %rdi
je 0x1948
movq -0x20(%rbp), %rsi
incq %rsi
callq 0x10d0
jmp 0x1948
movq %rax, %rbx
movq %rbx, %rdi
callq 0x1130