// File: MarkCBell[P]twister/./twister/kernel/twister_main.cpp
// Function: print_help(std::ostream&)
void print_help(std::ostream &o)
{
	o << std::endl;
	o << "Twister:  A program for generating SnapPea triangulation files from mapping" << std::endl;
	o << "class group data. By Mark Bell, Tracy Hall and Saul Schleimer." << std::endl;
	o << std::endl;
	// In different environments the commands will look different.
	#if OS_ENVIRONMENT == 0  // Windows.
		o << "Usage: Twister.exe [options]" << std::endl;
	#elif OS_ENVIRONMENT == 1  // UNIX.
		o << "Usage: Twister.out [options]" << std::endl;
	#endif
	o << std::endl;
	o << "Options:" << std::endl;
	o << " --help   Display this information." << std::endl;
	o << " --version   Display the current version number." << std::endl;
	o << std::endl;
	o << " -f, --surface \"surface\"   Use the specified surface file."  << std::endl;
	o << " -o, --output \"file\"   Write results to the specified file."  << std::endl;
	o << " -ow, --output-warnings \"file\" Write warnings and errors to the specified file." << std::endl;
	o << " -b, --bundle \"monodromy\"   Create a surface bundle." << std::endl;
	o << " -s, --splitting \"gluing\"   Create a Heegaard splitting." << std::endl;
	o << " -h, --handles \"handles\"   Attach 2-handles." << std::endl;
	o << " -n, --name \"name\"   Name of the 3-manifold." << std::endl;
	o << std::endl;
	o << " -p   Turn off peripheral curve calculations." << std::endl;
	o << " -w, --warnings   Turn off warnings." << std::endl;
	o << " -O, --optimisations   Turn off optimisations." << std::endl;
	o << " -d, --debugging \"level\"  Set debugging level." << std::endl;
	o << std::endl;
	o << "\"surface\" is the path to a .sur file and must be provided." << std::endl;
	o << std::endl;
	o << "\"monodromy\" and \"gluing\" are words of annulus and rectangle names (or " << std::endl;
	o << "inverses) separated by '*'. These are read from left to right and determine a" << std::endl;
	o << "sequence of (half) Dehn twists and, when prefixed with an \"!\", drillings. " << std::endl;
	o << "For example, \"a*B*a*B*A*A*!a*!b\" will perform 6 twists and then drill twice." << std::endl;
	o << std::endl;
	o << "\"handles\" is a word of annulus names (or inverses) separated by '*'. For " << std::endl;
	o << "example, 'a*c*A' means attach three 2-handles, two above and one below." << std::endl;
	o << std::endl;
	o << "monodromy, gluing and handles all support macros, specified in the surface" << std::endl;
	o << "file, as well as nested powers that are indicated by the format:" << std::endl;
	o << "\t(command)^power" << std::endl;
	o << std::endl;
	o << "Examples:" << std::endl;
	// In different environments the examples will look different.
	#if OS_ENVIRONMENT == 0  // Windows.
		o << "   Twister.exe -f \".\\Surfaces\\S_1_1.sur\" -b \"a*B\" " << std::endl;
		o << "produces a triangulation of the figure eight knot complement." << std::endl;
		o << "   Twister.exe -f \".\\Surfaces\\S_2.sur\" -s \"\" -h \"a*B*c\" " << std::endl;
		o << "produces a triangulation of the genus two splitting of the solid torus." << std::endl;
	#elif OS_ENVIRONMENT == 1  // UNIX.
		o << "   Twister.out -f \"Surfaces/S_1_1.sur\" -b \"a*B\" " << std::endl;
		o << "produces a triangulation of the figure eight knot complement." << std::endl;
		o << "   Twister.out -f \"Surfaces/S_2.sur\" -s \"\" -h \"a*B*c\" " << std::endl;
		o << "produces a triangulation of the genus two splitting of the solid torus." << std::endl;
	#endif
	
	return;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq 0x106f1(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x30c9(%rip), %rsi      # 0x279a0
callq 0x32f0
movq %rax, %rdi
movq 0x106d2(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x30f6(%rip), %rsi      # 0x279ec
callq 0x32f0
movq %rax, %rdi
movq 0x106b3(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
movq 0x106a3(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x3106(%rip), %rsi      # 0x27a2b
callq 0x32f0
movq %rax, %rdi
movq 0x10684(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
movq 0x10674(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x30f4(%rip), %rsi      # 0x27a48
callq 0x32f0
movq %rax, %rdi
movq 0x10655(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x30de(%rip), %rsi      # 0x27a51
callq 0x32f0
movq %rax, %rdi
movq 0x10636(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x30e3(%rip), %rsi      # 0x27a75
callq 0x32f0
movq %rax, %rdi
movq 0x10617(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
movq 0x10607(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x30e5(%rip), %rsi      # 0x27aa6
callq 0x32f0
movq %rax, %rdi
movq 0x105e8(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x3101(%rip), %rsi      # 0x27ae1
callq 0x32f0
movq %rax, %rdi
movq 0x105c9(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x311e(%rip), %rsi      # 0x27b1d
callq 0x32f0
movq %rax, %rdi
movq 0x105aa(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x314f(%rip), %rsi      # 0x27b6d
callq 0x32f0
movq %rax, %rdi
movq 0x1058b(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x3165(%rip), %rsi      # 0x27ba2
callq 0x32f0
movq %rax, %rdi
movq 0x1056c(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x317f(%rip), %rsi      # 0x27bdb
callq 0x32f0
movq %rax, %rdi
movq 0x1054d(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x318d(%rip), %rsi      # 0x27c08
callq 0x32f0
movq %rax, %rdi
movq 0x1052e(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
movq 0x1051e(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x318b(%rip), %rsi      # 0x27c35
callq 0x32f0
movq %rax, %rdi
movq 0x104ff(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x319a(%rip), %rsi      # 0x27c63
callq 0x32f0
movq %rax, %rdi
movq 0x104e0(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x31a0(%rip), %rsi      # 0x27c88
callq 0x32f0
movq %rax, %rdi
movq 0x104c1(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x31b0(%rip), %rsi      # 0x27cb7
callq 0x32f0
movq %rax, %rdi
movq 0x104a2(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
movq 0x10492(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x31b0(%rip), %rsi      # 0x27ce6
callq 0x32f0
movq %rax, %rdi
movq 0x10473(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
movq 0x10463(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x31bc(%rip), %rsi      # 0x27d21
callq 0x32f0
movq %rax, %rdi
movq 0x10444(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x31e4(%rip), %rsi      # 0x27d68
callq 0x32f0
movq %rax, %rdi
movq 0x10425(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x3213(%rip), %rsi      # 0x27db6
callq 0x32f0
movq %rax, %rdi
movq 0x10406(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x323f(%rip), %rsi      # 0x27e01
callq 0x32f0
movq %rax, %rdi
movq 0x103e7(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
movq 0x103d7(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x325d(%rip), %rsi      # 0x27e4e
callq 0x32f0
movq %rax, %rdi
movq 0x103b8(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x3288(%rip), %rsi      # 0x27e98
callq 0x32f0
movq %rax, %rdi
movq 0x10399(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
movq 0x10389(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x32a1(%rip), %rsi      # 0x27ee0
callq 0x32f0
movq %rax, %rdi
movq 0x1036a(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x32cd(%rip), %rsi      # 0x27f2b
callq 0x32f0
movq %rax, %rdi
movq 0x1034b(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x32ef(%rip), %rsi      # 0x27f6c
callq 0x32f0
movq %rax, %rdi
movq 0x1032c(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
movq 0x1031c(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x32d1(%rip), %rsi      # 0x27f7d
callq 0x32f0
movq %rax, %rdi
movq 0x102fd(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x32bc(%rip), %rsi      # 0x27f87
callq 0x32f0
movq %rax, %rdi
movq 0x102de(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x32d0(%rip), %rsi      # 0x27fba
callq 0x32f0
movq %rax, %rdi
movq 0x102bf(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x32ef(%rip), %rsi      # 0x27ff8
callq 0x32f0
movq %rax, %rdi
movq 0x102a0(%rip), %rsi     # 0x34fb8
callq 0x3340
movq -0x8(%rbp), %rdi
leaq 0x3309(%rip), %rsi      # 0x28031
callq 0x32f0
movq %rax, %rdi
movq 0x10281(%rip), %rsi     # 0x34fb8
callq 0x3340
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)