// File: Albuso0[P]support/commandline.cpp
// Function: std::CommandLine::Parse(int, char**)
void CommandLine::Parse (int iargc, char *argv[])
	{
		int argc = iargc;
		for (argc--, argv++; argc > 0; argc--, argv++)
		{
			// remove "--" or "-" heading.
			std::string param = *argv;
			std::string::size_type cur = param.find ("--");
			if (cur == 0)
				param = param.substr (2, param.size () - 2);
			else
			{
				cur = param.find ("-");
				if (cur == 0)
					param = param.substr (1, param.size () - 1);
				else
					continue; // invalid argument. ignore.
			}
			// parse "name=value"
			cur = param.find ("=");
			std::string name, value;
			if (cur == std::string::npos)
			{
				name = param;
				value = "";
			}
			else
			{
				name = param.substr (0, cur);
				value = param.substr (cur + 1, param.size () - (cur+1));
			}
                        if (name == "PrintHelp" || name == "help" || name == "h")
                        {
                            // method below never returns.
                            PrintHelp (std::cout);
                            exit (0);
                        } 
			// read value
			for (Items::const_iterator i = m_items.begin (); i != m_items.end (); ++i)
			{
				if ((*i)->m_name == name)
				{
					if (!(*i)->Parse (value))
					{
						std::cerr << "Invalid argument value: "<< name << "=" << value << std::endl;
						PrintHelp (std::cerr);
						exit (1);
					}
				}
			}
		}
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1e0, %rsp            # imm = 0x1E0
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x170(%rbp)
movl -0xc(%rbp), %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x1c(%rbp)
movq -0x18(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x18(%rbp)
cmpl $0x0, -0x1c(%rbp)
jle 0x922d
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x180(%rbp)
leaq -0x41(%rbp), %rdi
movq %rdi, -0x178(%rbp)
callq 0x3450
movq -0x180(%rbp), %rsi
movq -0x178(%rbp), %rdx
leaq -0x40(%rbp), %rdi
callq 0x7970
jmp 0x8d1d
leaq -0x41(%rbp), %rdi
callq 0x3300
leaq -0x40(%rbp), %rdi
leaq 0x25e5(%rip), %rsi      # 0xb316
xorl %eax, %eax
movl %eax, %edx
callq 0x34b0
movq %rax, -0x60(%rbp)
cmpq $0x0, -0x60(%rbp)
jne 0x8db9
leaq -0x40(%rbp), %rdi
movq %rdi, -0x188(%rbp)
callq 0x31d0
movq -0x188(%rbp), %rsi
movq %rax, %rcx
addq $-0x2, %rcx
leaq -0x80(%rbp), %rdi
movl $0x2, %edx
callq 0x32c0
jmp 0x8d73
leaq -0x40(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x3370
leaq -0x80(%rbp), %rdi
callq 0x3190
jmp 0x8e37
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x41(%rbp), %rdi
callq 0x3300
jmp 0x9236
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x9222
leaq -0x40(%rbp), %rdi
leaq 0x2553(%rip), %rsi      # 0xb317
xorl %eax, %eax
movl %eax, %edx
callq 0x34b0
movq %rax, -0x60(%rbp)
cmpq $0x0, -0x60(%rbp)
jne 0x8e26
leaq -0x40(%rbp), %rdi
movq %rdi, -0x190(%rbp)
callq 0x31d0
movq -0x190(%rbp), %rsi
movq %rax, %rcx
decq %rcx
leaq -0xa0(%rbp), %rdi
movl $0x1, %edx
callq 0x32c0
jmp 0x8e08
leaq -0x40(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x3370
leaq -0xa0(%rbp), %rdi
callq 0x3190
jmp 0x8e35
movl $0x4, -0xa4(%rbp)
jmp 0x91d7
jmp 0x8e37
leaq -0x40(%rbp), %rdi
leaq 0x2491(%rip), %rsi      # 0xb2d3
xorl %eax, %eax
movl %eax, %edx
callq 0x34b0
movq %rax, -0x60(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x33c0
leaq -0xe8(%rbp), %rdi
callq 0x33c0
cmpq $-0x1, -0x60(%rbp)
jne 0x8eab
leaq -0xc8(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x3040
jmp 0x8e80
leaq 0x237d(%rip), %rsi      # 0xb204
leaq -0xe8(%rbp), %rdi
callq 0x33b0
jmp 0x8e95
jmp 0x8f4e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x920a
movq -0x60(%rbp), %rcx
xorl %eax, %eax
movl %eax, %edx
leaq -0x108(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x32c0
jmp 0x8ec5
leaq -0xc8(%rbp), %rdi
leaq -0x108(%rbp), %rsi
movq %rsi, -0x1a8(%rbp)
callq 0x3370
movq -0x1a8(%rbp), %rdi
callq 0x3190
movq -0x60(%rbp), %rax
incq %rax
movq %rax, -0x198(%rbp)
leaq -0x40(%rbp), %rdi
movq %rdi, -0x1a0(%rbp)
callq 0x31d0
movq -0x1a0(%rbp), %rsi
movq -0x198(%rbp), %rdx
movq -0x60(%rbp), %rcx
notq %rcx
addq %rax, %rcx
leaq -0x128(%rbp), %rdi
callq 0x32c0
jmp 0x8f2f
leaq -0xe8(%rbp), %rdi
leaq -0x128(%rbp), %rsi
callq 0x3370
leaq -0x128(%rbp), %rdi
callq 0x3190
leaq 0x2380(%rip), %rsi      # 0xb2d5
leaq -0xc8(%rbp), %rdi
callq 0x7c20
movb %al, -0x1a9(%rbp)
jmp 0x8f69
movb -0x1a9(%rbp), %al
testb $0x1, %al
jne 0x8fc3
jmp 0x8f75
leaq 0x2363(%rip), %rsi      # 0xb2df
leaq -0xc8(%rbp), %rdi
callq 0x7c20
movb %al, -0x1aa(%rbp)
jmp 0x8f90
movb -0x1aa(%rbp), %al
testb $0x1, %al
jne 0x8fc3
jmp 0x8f9c
leaq 0x2341(%rip), %rsi      # 0xb2e4
leaq -0xc8(%rbp), %rdi
callq 0x7c20
movb %al, -0x1ab(%rbp)
jmp 0x8fb7
movb -0x1ab(%rbp), %al
testb $0x1, %al
jne 0x8fc3
jmp 0x8fdf
movq -0x170(%rbp), %rdi
movq 0x7ff7(%rip), %rsi      # 0x10fc8
callq 0x9240
jmp 0x8fd8
xorl %edi, %edi
callq 0x3360
movq -0x170(%rbp), %rdi
callq 0x9500
movq %rax, -0x138(%rbp)
leaq -0x130(%rbp), %rdi
leaq -0x138(%rbp), %rsi
callq 0x9530
movq -0x170(%rbp), %rdi
callq 0x84c0
movq %rax, -0x148(%rbp)
leaq -0x140(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0x9530
leaq -0x130(%rbp), %rdi
leaq -0x140(%rbp), %rsi
callq 0x9550
testb $0x1, %al
jne 0x9047
jmp 0x91b5
leaq -0x130(%rbp), %rdi
callq 0x9610
movq (%rax), %rdi
addq $0x8, %rdi
leaq -0xc8(%rbp), %rsi
callq 0x9580
testb $0x1, %al
jne 0x906f
jmp 0x91a2
leaq -0x130(%rbp), %rdi
callq 0x9610
movq (%rax), %rax
movq %rax, -0x1b8(%rbp)
leaq -0x168(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x3110
jmp 0x909a
movq -0x1b8(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
leaq -0x168(%rbp), %rsi
callq *%rax
movb %al, -0x1b9(%rbp)
jmp 0x90b9
movb -0x1b9(%rbp), %al
xorb $-0x1, %al
movb %al, -0x1ba(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x3190
movb -0x1ba(%rbp), %al
testb $0x1, %al
jne 0x90e2
jmp 0x91a0
movq 0x7f07(%rip), %rdi      # 0x10ff0
leaq 0x21f6(%rip), %rsi      # 0xb2e6
callq 0x3290
movq %rax, -0x1c8(%rbp)
jmp 0x90fe
movq -0x1c8(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x3270
movq %rax, -0x1d0(%rbp)
jmp 0x911a
movq -0x1d0(%rbp), %rdi
leaq 0x21ab(%rip), %rsi      # 0xb2d3
callq 0x3290
movq %rax, -0x1d8(%rbp)
jmp 0x9136
movq -0x1d8(%rbp), %rdi
leaq -0xe8(%rbp), %rsi
callq 0x3270
movq %rax, -0x1e0(%rbp)
jmp 0x9152
movq -0x1e0(%rbp), %rdi
movq 0x7e58(%rip), %rsi      # 0x10fb8
callq 0x32e0
jmp 0x9167
movq -0x170(%rbp), %rdi
movq 0x7e7b(%rip), %rsi      # 0x10ff0
callq 0x9240
jmp 0x917c
movl $0x1, %edi
callq 0x3360
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x3190
jmp 0x920a
jmp 0x91a2
jmp 0x91a4
leaq -0x130(%rbp), %rdi
callq 0x9640
jmp 0x9005
leaq -0xe8(%rbp), %rdi
callq 0x3190
leaq -0xc8(%rbp), %rdi
callq 0x3190
movl $0x0, -0xa4(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x3190
movl -0xa4(%rbp), %eax
testl %eax, %eax
je 0x91ee
jmp 0x91ec
jmp 0x91f0
jmp 0x91f0
movl -0x1c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x1c(%rbp)
movq -0x18(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x18(%rbp)
jmp 0x8cdc
leaq -0xe8(%rbp), %rdi
callq 0x3190
leaq -0xc8(%rbp), %rdi
callq 0x3190
leaq -0x40(%rbp), %rdi
callq 0x3190
jmp 0x9236
addq $0x1e0, %rsp            # imm = 0x1E0
popq %rbp
retq
movq -0x50(%rbp), %rdi
callq 0x3440
nop