// File: TheStanian[P]Args/Args/Args.cpp
// Function: operator<<(std::ostream&, ArgsHandler&)
std::ostream& operator<<(std::ostream& os, ArgsHandler &args) {
	os << "-----------------------------" << std::endl
			<< "This program was run as:" << std::endl << "    " << args.getExecutionPath() << std::endl
			<< "with the following flags and arguments:" << std::endl;
	if (args.getStartArguments().size() > 0) {
		os << "    flagless arguments:" << std::endl;
		for (std::string arg:args.getStartArguments()) {
			os << "        " << arg << std::endl;
		}
	}
	for (std::string flag:args.getFlags()) {
		os << "    flag \"" << flag << "\"";
		std::string flval = args.flags.find(flag)->second.value;
		if (flval != "") {
			os << " with value \"" << flval << "\"";
		}

		std::vector<std::string> flargs;
		for (int arg:(args.flags.find(flag)->second.arguments)) {
			flargs.push_back(args.arguments[arg]);
		}

		if (flargs.size() > 0) {
			os << ":";
		}

		os << std::endl;

		for (std::string arg:flargs) {
			os << "        " << arg << std::endl;
		}
	}
	os << "-----------------------------";
	return os;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x230, %rsp            # imm = 0x230
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x6d85(%rip), %rsi      # 0xc113
callq 0x21c0
movq %rax, %rdi
movq 0xdc1b(%rip), %rsi      # 0x12fb8
movq %rsi, -0x1b8(%rbp)
callq 0x2210
movq %rax, %rdi
leaq 0x6d7e(%rip), %rsi      # 0xc131
callq 0x21c0
movq -0x1b8(%rbp), %rsi
movq %rax, %rdi
callq 0x2210
movq %rax, %rdi
leaq 0x6dbd(%rip), %rsi      # 0xc18e
callq 0x21c0
movq %rax, -0x1b0(%rbp)
movq -0x10(%rbp), %rsi
leaq -0x30(%rbp), %rdi
movq %rdi, -0x1a8(%rbp)
callq 0x4af0
movq -0x1b0(%rbp), %rdi
movq -0x1a8(%rbp), %rsi
callq 0x21b0
movq %rax, -0x1a0(%rbp)
jmp 0x540d
movq -0x1a0(%rbp), %rdi
movq 0xdb9d(%rip), %rsi      # 0x12fb8
callq 0x2210
movq %rax, -0x1c0(%rbp)
jmp 0x5429
movq -0x1c0(%rbp), %rdi
leaq 0x6d13(%rip), %rsi      # 0xc14a
callq 0x21c0
movq %rax, -0x1c8(%rbp)
jmp 0x5445
movq -0x1c8(%rbp), %rdi
movq 0xdb65(%rip), %rsi      # 0x12fb8
callq 0x2210
jmp 0x545a
leaq -0x30(%rbp), %rdi
callq 0x2130
movq -0x10(%rbp), %rsi
leaq -0x58(%rbp), %rdi
callq 0x4cd0
leaq -0x58(%rbp), %rdi
callq 0x5d10
movq %rax, -0x1d0(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x2ec0
movq -0x1d0(%rbp), %rax
cmpq $0x0, %rax
jbe 0x55db
movq -0x8(%rbp), %rdi
leaq 0x6ccd(%rip), %rsi      # 0xc172
callq 0x21c0
movq %rax, %rdi
movq 0xdb04(%rip), %rsi      # 0x12fb8
callq 0x2210
movq -0x10(%rbp), %rsi
leaq -0x78(%rbp), %rdi
callq 0x4cd0
leaq -0x78(%rbp), %rax
movq %rax, -0x60(%rbp)
movq -0x60(%rbp), %rdi
callq 0x2de0
movq %rax, -0x80(%rbp)
movq -0x60(%rbp), %rdi
callq 0x2e10
movq %rax, -0x88(%rbp)
leaq -0x80(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x2e40
testb $0x1, %al
jne 0x5527
leaq -0x78(%rbp), %rdi
callq 0x2ec0
jmp 0x55d9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x2130
jmp 0x5a31
leaq -0x80(%rbp), %rdi
callq 0x2e80
movq %rax, %rsi
leaq -0xa8(%rbp), %rdi
callq 0x20d0
jmp 0x5541
movq -0x8(%rbp), %rdi
leaq 0x6c3e(%rip), %rsi      # 0xc18a
callq 0x21c0
movq %rax, -0x1d8(%rbp)
jmp 0x555a
movq -0x1d8(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x21b0
movq %rax, -0x1e0(%rbp)
jmp 0x5576
movq -0x1e0(%rbp), %rdi
movq 0xda34(%rip), %rsi      # 0x12fb8
callq 0x2210
jmp 0x558b
leaq -0xa8(%rbp), %rdi
callq 0x2130
leaq -0x80(%rbp), %rdi
callq 0x2ea0
jmp 0x54eb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x55cb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x2130
leaq -0x78(%rbp), %rdi
callq 0x2ec0
jmp 0x5a31
jmp 0x55db
movq -0x10(%rbp), %rsi
leaq -0xc8(%rbp), %rdi
callq 0x4de0
leaq -0xc8(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rdi
callq 0x2de0
movq %rax, -0xd0(%rbp)
movq -0xb0(%rbp), %rdi
callq 0x2e10
movq %rax, -0xd8(%rbp)
leaq -0xd0(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x2e40
testb $0x1, %al
jne 0x5647
leaq -0xc8(%rbp), %rdi
callq 0x2ec0
jmp 0x5a14
leaq -0xd0(%rbp), %rdi
callq 0x2e80
movq %rax, %rsi
leaq -0xf8(%rbp), %rdi
callq 0x20d0
jmp 0x5664
movq -0x8(%rbp), %rdi
leaq 0x6b24(%rip), %rsi      # 0xc193
callq 0x21c0
movq %rax, -0x1e8(%rbp)
jmp 0x567d
movq -0x1e8(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x21b0
movq %rax, -0x1f0(%rbp)
jmp 0x5699
movq -0x1f0(%rbp), %rdi
leaq 0x6b03(%rip), %rsi      # 0xc1aa
callq 0x21c0
jmp 0x56ae
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
leaq -0xf8(%rbp), %rsi
callq 0x62b0
movq %rax, -0x1f8(%rbp)
jmp 0x56cb
movq -0x1f8(%rbp), %rax
movq %rax, -0x120(%rbp)
leaq -0x120(%rbp), %rdi
callq 0x6310
movq %rax, %rsi
addq $0x40, %rsi
leaq -0x118(%rbp), %rdi
callq 0x20d0
jmp 0x56fa
leaq 0x6a11(%rip), %rsi      # 0xc112
leaq -0x118(%rbp), %rdi
callq 0x5c00
movb %al, -0x1f9(%rbp)
jmp 0x5715
movb -0x1f9(%rbp), %al
testb $0x1, %al
jne 0x5721
jmp 0x57a0
movq -0x8(%rbp), %rdi
leaq 0x6a72(%rip), %rsi      # 0xc19e
callq 0x21c0
movq %rax, -0x208(%rbp)
jmp 0x573a
movq -0x208(%rbp), %rdi
leaq -0x118(%rbp), %rsi
callq 0x21b0
movq %rax, -0x210(%rbp)
jmp 0x5756
movq -0x210(%rbp), %rdi
leaq 0x6a46(%rip), %rsi      # 0xc1aa
callq 0x21c0
jmp 0x576b
jmp 0x57a0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x5a06
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x59fa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x59ee
leaq -0x138(%rbp), %rdi
callq 0x5a40
movq -0x10(%rbp), %rdi
addq $0x18, %rdi
leaq -0xf8(%rbp), %rsi
callq 0x62b0
movq %rax, -0x218(%rbp)
jmp 0x57c9
movq -0x218(%rbp), %rax
movq %rax, -0x148(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x6310
addq $0x20, %rax
addq $0x40, %rax
movq %rax, -0x140(%rbp)
movq -0x140(%rbp), %rdi
callq 0x63e0
movq %rax, -0x150(%rbp)
movq -0x140(%rbp), %rdi
callq 0x6410
movq %rax, -0x158(%rbp)
leaq -0x150(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x6440
testb $0x1, %al
jne 0x5831
jmp 0x5887
leaq -0x150(%rbp), %rdi
callq 0x6480
movl (%rax), %eax
movl %eax, -0x15c(%rbp)
movq -0x10(%rbp), %rdi
movslq -0x15c(%rbp), %rsi
callq 0x64a0
movq %rax, %rsi
leaq -0x138(%rbp), %rdi
callq 0x5b90
jmp 0x5866
jmp 0x5868
leaq -0x150(%rbp), %rdi
callq 0x64c0
jmp 0x5818
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x59e2
leaq -0x138(%rbp), %rdi
callq 0x5d10
cmpq $0x0, %rax
jbe 0x58ad
movq -0x8(%rbp), %rdi
leaq 0x68a4(%rip), %rsi      # 0xc148
callq 0x21c0
jmp 0x58ab
jmp 0x58ad
movq -0x8(%rbp), %rdi
movq 0xd700(%rip), %rsi      # 0x12fb8
callq 0x2210
jmp 0x58bf
leaq -0x138(%rbp), %rax
movq %rax, -0x168(%rbp)
movq -0x168(%rbp), %rdi
callq 0x2de0
movq %rax, -0x170(%rbp)
movq -0x168(%rbp), %rdi
callq 0x2e10
movq %rax, -0x178(%rbp)
leaq -0x170(%rbp), %rdi
leaq -0x178(%rbp), %rsi
callq 0x2e40
testb $0x1, %al
jne 0x590f
jmp 0x59ad
leaq -0x170(%rbp), %rdi
callq 0x2e80
movq %rax, %rsi
leaq -0x198(%rbp), %rdi
callq 0x20d0
jmp 0x592c
movq -0x8(%rbp), %rdi
leaq 0x6853(%rip), %rsi      # 0xc18a
callq 0x21c0
movq %rax, -0x220(%rbp)
jmp 0x5945
movq -0x220(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x21b0
movq %rax, -0x228(%rbp)
jmp 0x5961
movq -0x228(%rbp), %rdi
movq 0xd649(%rip), %rsi      # 0x12fb8
callq 0x2210
jmp 0x5976
leaq -0x198(%rbp), %rdi
callq 0x2130
leaq -0x170(%rbp), %rdi
callq 0x2ea0
jmp 0x58f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x2130
jmp 0x59e2
leaq -0x138(%rbp), %rdi
callq 0x2ec0
leaq -0x118(%rbp), %rdi
callq 0x2130
leaq -0xf8(%rbp), %rdi
callq 0x2130
leaq -0xd0(%rbp), %rdi
callq 0x2ea0
jmp 0x561f
leaq -0x138(%rbp), %rdi
callq 0x2ec0
leaq -0x118(%rbp), %rdi
callq 0x2130
leaq -0xf8(%rbp), %rdi
callq 0x2130
leaq -0xc8(%rbp), %rdi
callq 0x2ec0
jmp 0x5a31
movq -0x8(%rbp), %rdi
leaq 0x66f4(%rip), %rsi      # 0xc113
callq 0x21c0
movq -0x8(%rbp), %rax
addq $0x230, %rsp            # imm = 0x230
popq %rbp
retq
movq -0x38(%rbp), %rdi
callq 0x2310
nopw (%rax,%rax)