// File: PrarabdhJoshi[P]DatabaseImplementation/./test.h
// Function: setup(char const*, char const*, char const*)
void setup (const char *catalog_path, const char *dbfile_dir, const char *tpch_dir) {
	cout << " \n** IMPORTANT: MAKE SURE THE INFORMATION BELOW IS CORRECT **\n";
	cout << " catalog location: \t" << catalog_path << endl;
	cout << " tpch files dir: \t" << tpch_dir << endl;
	cout << " heap files dir: \t" << dbfile_dir << endl;
	cout << " \n\n";

	s = new relation (supplier, new Schema (catalog_path, supplier), dbfile_dir);
	ps = new relation (partsupp, new Schema (catalog_path, partsupp), dbfile_dir);
	p = new relation (part, new Schema (catalog_path, part), dbfile_dir);
	n = new relation (nation, new Schema (catalog_path, nation), dbfile_dir);
	li = new relation (lineitem, new Schema (catalog_path, lineitem), dbfile_dir);
	r = new relation (region, new Schema (catalog_path, region), dbfile_dir);
	o = new relation (orders, new Schema (catalog_path, orders), dbfile_dir);
	c = new relation (customer, new Schema (catalog_path, customer), dbfile_dir);
}

// Assembly:
subq $0xf8, %rsp
movq %rdi, 0xf0(%rsp)
movq %rsi, 0xe8(%rsp)
movq %rdx, 0xe0(%rsp)
movq 0x5dc2(%rip), %rdi      # 0xffb8
movq %rdi, 0xb0(%rsp)
leaq 0x28f4(%rip), %rsi      # 0xcaf9
callq 0x2140
movq 0xb0(%rsp), %rdi
leaq 0x291f(%rip), %rsi      # 0xcb38
callq 0x2140
movq %rax, %rdi
movq 0xf0(%rsp), %rsi
callq 0x2140
movq %rax, %rdi
movq 0x5d68(%rip), %rsi      # 0xffa0
movq %rsi, 0xa8(%rsp)
callq 0x2180
movq 0xb0(%rsp), %rdi
leaq 0x28f9(%rip), %rsi      # 0xcb4d
callq 0x2140
movq %rax, %rdi
movq 0xe0(%rsp), %rsi
callq 0x2140
movq 0xa8(%rsp), %rsi
movq %rax, %rdi
callq 0x2180
movq 0xb0(%rsp), %rdi
leaq 0x28d8(%rip), %rsi      # 0xcb60
callq 0x2140
movq %rax, %rdi
movq 0xe8(%rsp), %rsi
callq 0x2140
movq 0xa8(%rsp), %rsi
movq %rax, %rdi
callq 0x2180
movq 0xb0(%rsp), %rdi
leaq 0x28b7(%rip), %rsi      # 0xcb73
callq 0x2140
movl $0x80, %edi
callq 0x2160
movq %rax, 0xb8(%rsp)
movq 0x5ef6(%rip), %rax      # 0x101d0
movq %rax, 0xc0(%rsp)
movl $0x18, %edi
callq 0x2160
movq %rax, 0xc8(%rsp)
jmp 0xa2f6
movq 0xc8(%rsp), %rdi
movq 0xf0(%rsp), %rsi
movq 0x5ec3(%rip), %rdx      # 0x101d0
callq 0x5d50
jmp 0xa314
movq 0xc8(%rsp), %rdx
movq 0xc0(%rsp), %rsi
movq 0xb8(%rsp), %rdi
movq 0xe8(%rsp), %rcx
callq 0xb160
jmp 0xa33b
movq 0xb8(%rsp), %rax
movq %rax, 0x5f86(%rip)      # 0x102d0
movl $0x80, %edi
callq 0x2160
movq %rax, 0x90(%rsp)
movq 0x5e75(%rip), %rax      # 0x101d8
movq %rax, 0x98(%rsp)
movl $0x18, %edi
callq 0x2160
movq %rax, 0xa0(%rsp)
jmp 0xa37f
movq 0xa0(%rsp), %rdi
movq 0xf0(%rsp), %rsi
movq 0x5e42(%rip), %rdx      # 0x101d8
callq 0x5d50
jmp 0xa39d
movq 0xa0(%rsp), %rdx
movq 0x98(%rsp), %rsi
movq 0x90(%rsp), %rdi
movq 0xe8(%rsp), %rcx
callq 0xb160
jmp 0xa3c4
movq 0x90(%rsp), %rax
movq %rax, 0x5f0d(%rip)      # 0x102e0
movl $0x80, %edi
callq 0x2160
movq %rax, 0x78(%rsp)
movq 0x5df7(%rip), %rax      # 0x101e0
movq %rax, 0x80(%rsp)
movl $0x18, %edi
callq 0x2160
movq %rax, 0x88(%rsp)
jmp 0xa405
movq 0x88(%rsp), %rdi
movq 0xf0(%rsp), %rsi
movq 0x5dc4(%rip), %rdx      # 0x101e0
callq 0x5d50
jmp 0xa423
movq 0x88(%rsp), %rdx
movq 0x80(%rsp), %rsi
movq 0x78(%rsp), %rdi
movq 0xe8(%rsp), %rcx
callq 0xb160
jmp 0xa447
movq 0x78(%rsp), %rax
movq %rax, 0x5e85(%rip)      # 0x102d8
movl $0x80, %edi
callq 0x2160
movq %rax, 0x60(%rsp)
movq 0x5d7f(%rip), %rax      # 0x101e8
movq %rax, 0x68(%rsp)
movl $0x18, %edi
callq 0x2160
movq %rax, 0x70(%rsp)
jmp 0xa47f
movq 0x70(%rsp), %rdi
movq 0xf0(%rsp), %rsi
movq 0x5d55(%rip), %rdx      # 0x101e8
callq 0x5d50
jmp 0xa49a
movq 0x70(%rsp), %rdx
movq 0x68(%rsp), %rsi
movq 0x60(%rsp), %rdi
movq 0xe8(%rsp), %rcx
callq 0xb160
jmp 0xa4b8
movq 0x60(%rsp), %rax
movq %rax, 0x5e24(%rip)      # 0x102e8
movl $0x80, %edi
callq 0x2160
movq %rax, 0x48(%rsp)
movq 0x5d2e(%rip), %rax      # 0x10208
movq %rax, 0x50(%rsp)
movl $0x18, %edi
callq 0x2160
movq %rax, 0x58(%rsp)
jmp 0xa4f0
movq 0x58(%rsp), %rdi
movq 0xf0(%rsp), %rsi
movq 0x5d04(%rip), %rdx      # 0x10208
callq 0x5d50
jmp 0xa50b
movq 0x58(%rsp), %rdx
movq 0x50(%rsp), %rsi
movq 0x48(%rsp), %rdi
movq 0xe8(%rsp), %rcx
callq 0xb160
jmp 0xa529
movq 0x48(%rsp), %rax
movq %rax, 0x5dbb(%rip)      # 0x102f0
movl $0x80, %edi
callq 0x2160
movq %rax, 0x30(%rsp)
movq 0x5cb5(%rip), %rax      # 0x10200
movq %rax, 0x38(%rsp)
movl $0x18, %edi
callq 0x2160
movq %rax, 0x40(%rsp)
jmp 0xa561
movq 0x40(%rsp), %rdi
movq 0xf0(%rsp), %rsi
movq 0x5c8b(%rip), %rdx      # 0x10200
callq 0x5d50
jmp 0xa57c
movq 0x40(%rsp), %rdx
movq 0x38(%rsp), %rsi
movq 0x30(%rsp), %rdi
movq 0xe8(%rsp), %rcx
callq 0xb160
jmp 0xa59a
movq 0x30(%rsp), %rax
movq %rax, 0x5d52(%rip)      # 0x102f8
movl $0x80, %edi
callq 0x2160
movq %rax, 0x18(%rsp)
movq 0x5c3c(%rip), %rax      # 0x101f8
movq %rax, 0x20(%rsp)
movl $0x18, %edi
callq 0x2160
movq %rax, 0x28(%rsp)
jmp 0xa5d2
movq 0x28(%rsp), %rdi
movq 0xf0(%rsp), %rsi
movq 0x5c12(%rip), %rdx      # 0x101f8
callq 0x5d50
jmp 0xa5ed
movq 0x28(%rsp), %rdx
movq 0x20(%rsp), %rsi
movq 0x18(%rsp), %rdi
movq 0xe8(%rsp), %rcx
callq 0xb160
jmp 0xa60b
movq 0x18(%rsp), %rax
movq %rax, 0x5ce9(%rip)      # 0x10300
movl $0x80, %edi
callq 0x2160
movq %rax, (%rsp)
movq 0x5bc4(%rip), %rax      # 0x101f0
movq %rax, 0x8(%rsp)
movl $0x18, %edi
callq 0x2160
movq %rax, 0x10(%rsp)
jmp 0xa642
movq 0x10(%rsp), %rdi
movq 0xf0(%rsp), %rsi
movq 0x5b9a(%rip), %rdx      # 0x101f0
callq 0x5d50
jmp 0xa65d
movq 0x10(%rsp), %rdx
movq 0x8(%rsp), %rsi
movq (%rsp), %rdi
movq 0xe8(%rsp), %rcx
callq 0xb160
jmp 0xa67a
movq (%rsp), %rax
movq %rax, 0x5c83(%rip)      # 0x10308
addq $0xf8, %rsp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd8(%rsp)
movl %eax, 0xd4(%rsp)
jmp 0xa6c9
movq 0xc8(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd8(%rsp)
movl %eax, 0xd4(%rsp)
movl $0x18, %esi
callq 0x2170
movq 0xb8(%rsp), %rdi
movl $0x80, %esi
callq 0x2170
jmp 0xa8fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd8(%rsp)
movl %eax, 0xd4(%rsp)
jmp 0xa71c
movq 0xa0(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd8(%rsp)
movl %eax, 0xd4(%rsp)
movl $0x18, %esi
callq 0x2170
movq 0x90(%rsp), %rdi
movl $0x80, %esi
callq 0x2170
jmp 0xa8fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd8(%rsp)
movl %eax, 0xd4(%rsp)
jmp 0xa76f
movq 0x88(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd8(%rsp)
movl %eax, 0xd4(%rsp)
movl $0x18, %esi
callq 0x2170
movq 0x78(%rsp), %rdi
movl $0x80, %esi
callq 0x2170
jmp 0xa8fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd8(%rsp)
movl %eax, 0xd4(%rsp)
jmp 0xa7bc
movq 0x70(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd8(%rsp)
movl %eax, 0xd4(%rsp)
movl $0x18, %esi
callq 0x2170
movq 0x60(%rsp), %rdi
movl $0x80, %esi
callq 0x2170
jmp 0xa8fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd8(%rsp)
movl %eax, 0xd4(%rsp)
jmp 0xa809
movq 0x58(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd8(%rsp)
movl %eax, 0xd4(%rsp)
movl $0x18, %esi
callq 0x2170
movq 0x48(%rsp), %rdi
movl $0x80, %esi
callq 0x2170
jmp 0xa8fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd8(%rsp)
movl %eax, 0xd4(%rsp)
jmp 0xa856
movq 0x40(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd8(%rsp)
movl %eax, 0xd4(%rsp)
movl $0x18, %esi
callq 0x2170
movq 0x30(%rsp), %rdi
movl $0x80, %esi
callq 0x2170
jmp 0xa8fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd8(%rsp)
movl %eax, 0xd4(%rsp)
jmp 0xa8a3
movq 0x28(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd8(%rsp)
movl %eax, 0xd4(%rsp)
movl $0x18, %esi
callq 0x2170
movq 0x18(%rsp), %rdi
movl $0x80, %esi
callq 0x2170
jmp 0xa8fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd8(%rsp)
movl %eax, 0xd4(%rsp)
jmp 0xa8ed
movq 0x10(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xd8(%rsp)
movl %eax, 0xd4(%rsp)
movl $0x18, %esi
callq 0x2170
movq (%rsp), %rdi
movl $0x80, %esi
callq 0x2170
movq 0xd8(%rsp), %rdi
callq 0x22b0
nopl (%rax,%rax)