// File: /workspace/github_cpp_makefile_star2_O3/lvandeve[P]base256/base256.cpp
// Function: UnixArgs::parse(int, char**)
bool parse(int argc, char *argv[]) {
    if(!argc) {
      error = "zero length arguments";
      return false;
    }

    binary = argv[0];

    for(int i = 0; i < argc; i++) {
      if(i > 0) command += " ";
      command += std::string(argv[i]);
    }

    for(int i = 1; i < argc; i++) {
      int num = 0;
      std::string s = argv[i];
      if(s == "--") {
        if(!allowpost) {
          error = "invalid loose double dash argument";
          return false;
        }
        for(int j = i + 1; j < argc; j++) {
          if(j > i + 1) post += " ";
          post += std::string(argv[j]);
        }
        break;
      } else if(s.size() > 2 && s[0] == '-' && s[1] == '-') {
        std::string s2 = s.substr(2);
        std::string val = "";
        size_t eq = s2.find('=');
        if(eq != std::string::npos) {
          val = s2.substr(eq + 1);
          s2 = s2.substr(0, eq);
        }
        if(!strings.count(s2)) {
          error = "unkonwn argument: " + s2;
          return false;
        }
        Arg& arg = args[strings[s2]];
        arg.present = true;
        if(!val.empty()) {
          arg.value = val;
        }
      } else if(s.size() > 1 && s[0] == '-') {
        for(int j = 1; j < s.size(); j++) {
          char c = s[j];
          if(!chars.count(c)) {
            error = "unkonwn argument: " + std::string(1, c);
            return false;
          }
          args[chars[c]].present = true;
        }
      } else {
        if(s == "-") {
          error = "loose single dash argument invalid";
          return false;
        }
        if(!allowloose) {
          error = "loose argument " + s + " invalid";
          return false;
        }
        loose.push_back(s);
      }
    }
    return true;
  }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xd8, %rsp
movq %rdi, %rbx
testl %esi, %esi
je 0xa2ff
movq %rdx, %r14
movq (%rdx), %r15
leaq 0x20(%rbx), %r12
movq 0x28(%rbx), %r13
movq %r15, %rdi
movl %esi, (%rsp)
callq 0x5100
movq %r12, %rdi
xorl %esi, %esi
movq %r13, %rdx
movq %r15, %rcx
movq %rax, %r8
callq 0x5360
movl (%rsp), %eax
movb $0x1, %bpl
testl %eax, %eax
jle 0xa334
movq %r14, 0x80(%rsp)
movl %eax, %eax
movq %rax, 0x50(%rsp)
xorl %r14d, %r14d
leaq 0x28(%rsp), %r12
leaq 0x8(%rsp), %r13
leaq 0x89a8(%rip), %r15      # 0x126d5
testq %r14, %r14
je 0x9d3d
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5430
movq 0x80(%rsp), %rax
movq (%rax,%r14,8), %rsi
movq %r12, %rdi
movq %r13, %rdx
callq 0x50e0
movq 0x28(%rsp), %rsi
movq 0x30(%rsp), %rdx
movq %rbx, %rdi
callq 0x50b0
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x9d7a
callq 0x5210
incq %r14
cmpq %r14, 0x50(%rsp)
jne 0x9d2d
cmpl $0x1, (%rsp)
je 0xa334
leaq 0x18(%rsp), %r12
leaq 0xf0(%rbx), %rax
movq %rax, 0x48(%rsp)
leaq 0xd8(%rbx), %rax
movq %rax, 0xc8(%rsp)
leaq 0x78(%rbx), %rax
movq %rax, 0xd0(%rsp)
leaq 0x80(%rbx), %rax
movq %rax, 0xa0(%rsp)
leaq 0xa8(%rbx), %rax
movq %rax, 0x88(%rsp)
leaq 0xb0(%rbx), %rax
movq %rax, 0x90(%rsp)
leaq 0x40(%rbx), %rax
movq %rax, (%rsp)
movl $0x2, %eax
movq %rax, 0x98(%rsp)
movl $0x1, %r13d
leaq 0x28(%rsp), %rdi
leaq 0x8(%rsp), %r14
leaq 0x58(%rsp), %r15
movq %r15, %rbp
movq 0x80(%rsp), %rax
movq (%rax,%r13,8), %rsi
movq %r14, %r15
movq %r14, %rdx
movq %rdi, %r14
callq 0x50e0
movq %r14, %rdi
leaq 0x860e(%rip), %rsi      # 0x12446
callq 0x5090
testl %eax, %eax
je 0x9faa
movq 0x30(%rsp), %rax
cmpq $0x3, %rax
movq %r15, %r14
jb 0xa040
movq 0x28(%rsp), %rax
cmpb $0x2d, (%rax)
jne 0xa0ef
cmpb $0x2d, 0x1(%rax)
jne 0xa058
movl $0x2, %edx
movq %r14, %rdi
leaq 0x28(%rsp), %rsi
movq $-0x1, %rcx
callq 0x5250
leaq 0x68(%rsp), %rax
movq %rax, 0x58(%rsp)
movq %rbp, %r15
movq %rbp, %rdi
leaq 0x784d(%rip), %rdx      # 0x116ec
movq %rdx, %rsi
callq 0xbfd2
movq %r14, %rdi
movl $0x3d, %esi
xorl %edx, %edx
callq 0x52d0
cmpq $-0x1, %rax
je 0x9f47
movq %rax, 0x78(%rsp)
leaq 0x1(%rax), %rdx
leaq 0xa8(%rsp), %rbp
movq %rbp, %rdi
movq %r14, %rsi
movq $-0x1, %rcx
callq 0x5250
movq %r15, %rdi
movq %rbp, %rsi
callq 0x52b0
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x9f08
callq 0x5210
leaq 0xa8(%rsp), %rbp
movq %rbp, %rdi
movq %r14, %rsi
xorl %edx, %edx
movq 0x78(%rsp), %rcx
callq 0x5250
movq %r14, %rdi
movq %rbp, %rsi
callq 0x52b0
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x9f47
callq 0x5210
movq 0x88(%rsp), %rdi
movq %r14, %rsi
callq 0xc068
movq %rax, 0x78(%rsp)
cmpq 0x90(%rsp), %rax
je 0xa244
movq 0x88(%rsp), %rdi
movq %r14, %rsi
callq 0xb248
movq (%rax), %rax
movq 0x60(%rbx), %rdi
shlq $0x7, %rax
movb $0x1, 0x78(%rdi,%rax)
cmpq $0x0, 0x60(%rsp)
je 0xa285
addq %rax, %rdi
addq $0x38, %rdi
movq %r15, %rsi
callq 0x5140
jmp 0xa285
cmpb $0x0, 0x110(%rbx)
leaq 0x84e6(%rip), %rcx      # 0x1249e
movq %r15, %r14
je 0xa12e
leaq 0x1(%r13), %r12
cmpq 0x50(%rsp), %r12
jae 0xa1da
movq 0x98(%rsp), %r14
cmpq %r12, %r14
jbe 0x9fed
movq (%rsp), %rdi
leaq 0x86ed(%rip), %rsi      # 0x126d5
callq 0x5430
movq 0x80(%rsp), %rax
movq (%rax,%r14,8), %rsi
movq %r15, %rdi
movq %rbp, %rdx
callq 0x50e0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq (%rsp), %rdi
callq 0x50b0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xa02b
callq 0x5210
incq %r14
cmpq %r14, 0x50(%rsp)
jne 0x9fd8
xorl %r12d, %r12d
movq %r15, %r14
jmp 0xa1dd
cmpq $0x2, %rax
jne 0xa0ef
movq 0x28(%rsp), %rax
cmpb $0x2d, (%rax)
jne 0xa0ef
movl $0x1, %r12d
movq %rbp, %r15
movq 0x28(%rsp), %rax
movb (%rax,%r12), %al
movb %al, 0xa8(%rsp)
movq 0x88(%rbx), %rcx
testq %rcx, %rcx
je 0xa17f
movq 0xa0(%rsp), %rdx
xorl %esi, %esi
cmpb %al, 0x20(%rcx)
setl %sil
cmovgeq %rcx, %rdx
movq 0x10(%rcx,%rsi,8), %rcx
testq %rcx, %rcx
jne 0xa089
cmpq 0xa0(%rsp), %rdx
je 0xa17f
cmpb 0x20(%rdx), %al
jl 0xa17f
movq 0xd0(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0xb346
movq (%rax), %rax
movq 0x60(%rbx), %rcx
shlq $0x7, %rax
movb $0x1, 0x78(%rcx,%rax)
incq %r12
cmpq %r12, 0x30(%rsp)
ja 0xa061
jmp 0xa2b7
leaq 0x28(%rsp), %rdi
leaq 0x834c(%rip), %rsi      # 0x12447
callq 0x5090
leaq 0x83cd(%rip), %rcx      # 0x124d4
testl %eax, %eax
je 0xa12e
cmpb $0x0, 0x111(%rbx)
je 0xa157
movq 0xc8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0xbf94
movq %rbp, %r15
jmp 0xa2b7
movq 0xf8(%rbx), %rdx
xorl %r12d, %r12d
movl $0x22, %r8d
movq 0x48(%rsp), %rdi
xorl %esi, %esi
callq 0x5360
movq %rbp, %r15
movl $0x1, %ebp
jmp 0xa2bc
movq %rbp, %r15
movq %rbp, %rdi
leaq 0x8393(%rip), %rsi      # 0x124f7
leaq 0x28(%rsp), %rdx
callq 0xb2c4
movq %r15, %rdi
leaq 0x8376(%rip), %rsi      # 0x124ee
callq 0x5430
jmp 0xa1b7
leaq 0x68(%rsp), %rcx
movq %rcx, 0x58(%rsp)
movsbl %al, %edx
movl $0x1, %esi
movq %r15, %rdi
callq 0x52a0
leaq 0x18(%rsp), %r12
movl $0x12, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x830f(%rip), %rcx      # 0x124c1
callq 0x5280
movq %r12, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xa1ea
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0xa1f2
xorl %r12d, %r12d
movq %rbp, %r15
movl $0x5, %ebp
jmp 0xa2bc
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x48(%rsp), %rdi
movq %r14, %rsi
callq 0x52b0
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xa226
callq 0x5210
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0xa23a
callq 0x5210
movl $0x1, %ebp
xorl %r12d, %r12d
jmp 0xa2bc
leaq 0xa8(%rsp), %rbp
movq %rbp, %rdi
leaq 0x826b(%rip), %rsi      # 0x124c1
movq %r14, %rdx
callq 0xb2c4
movq 0x48(%rsp), %rdi
movq %rbp, %rsi
callq 0x52b0
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0xa285
callq 0x5210
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0xa299
callq 0x5210
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0xa2a8
callq 0x5210
movq 0x78(%rsp), %rax
cmpq 0x90(%rsp), %rax
je 0xa2f7
xorl %ebp, %ebp
movb $0x1, %r12b
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0xa2d0
callq 0x5210
testb %r12b, %r12b
je 0xa32d
incq %r13
incq 0x98(%rsp)
cmpq 0x50(%rsp), %r13
leaq 0x18(%rsp), %r12
leaq 0x28(%rsp), %rdi
jne 0x9e11
jmp 0xa328
xorl %r12d, %r12d
jmp 0xa14d
movq 0xf8(%rbx), %rdx
addq $0xf0, %rbx
leaq 0x8174(%rip), %rcx      # 0x12488
xorl %ebp, %ebp
movl $0x15, %r8d
movq %rbx, %rdi
xorl %esi, %esi
callq 0x5360
jmp 0xa334
movl $0x5, %ebp
cmpl $0x5, %ebp
sete %bpl
movl %ebp, %eax
addq $0xd8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xa354
jmp 0xa354
jmp 0xa354
jmp 0xa354
jmp 0xa38c
jmp 0xa3aa
movq %rax, %rbx
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0xa38f
callq 0x5210
jmp 0xa38f
jmp 0xa371
jmp 0xa3aa
movq %rax, %rbx
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
jmp 0xa399
jmp 0xa3aa
jmp 0xa3aa
jmp 0xa3a5
jmp 0xa3aa
jmp 0xa3aa
jmp 0xa3aa
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xa3ad
callq 0x5210
jmp 0xa3ad
movq %rax, %rbx
jmp 0xa3c1
movq %rax, %rbx
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0xa3c1
callq 0x5210
movq %rbx, %rdi
callq 0x53e0
nop