// File: /workspace/github_cpp_makefile_star2_O1/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 $0xe8, %rsp
movq %rdi, %rbx
testl %esi, %esi
je 0xa53b
movl %esi, %r14d
movq %rdx, 0x88(%rsp)
movq (%rdx), %r15
leaq 0x20(%rbx), %r12
movq 0x28(%rbx), %r13
movq %r15, %rdi
callq 0x5100
movq %r12, %rdi
xorl %esi, %esi
movq %r13, %rdx
movq %r15, %rcx
movq %rax, %r8
callq 0x5360
leaq 0x60(%rsp), %rbp
movl %r14d, %eax
movq %rax, 0x80(%rsp)
movl %r14d, 0x78(%rsp)
testl %r14d, %r14d
jle 0x9eca
xorl %r14d, %r14d
leaq 0x50(%rsp), %r15
leaq 0x10(%rsp), %r12
leaq 0x8860(%rip), %r13      # 0x126d5
testq %r14, %r14
je 0x9e85
movq %rbx, %rdi
movq %r13, %rsi
callq 0x5430
movq 0x88(%rsp), %rax
movq (%rax,%r14,8), %rsi
movq %r15, %rdi
movq %r12, %rdx
callq 0x50e0
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %rdx
movq %rbx, %rdi
callq 0x50b0
movq 0x50(%rsp), %rdi
cmpq %rbp, %rdi
je 0x9ebd
callq 0x5210
incq %r14
cmpq %r14, 0x80(%rsp)
jne 0x9e75
movb $0x1, %r15b
cmpl $0x2, 0x78(%rsp)
jl 0xa563
leaq 0x20(%rsp), %r13
leaq 0xf0(%rbx), %rax
movq %rax, 0x70(%rsp)
leaq 0xd8(%rbx), %rax
movq %rax, 0xd8(%rsp)
leaq 0x78(%rbx), %rax
movq %rax, 0xe0(%rsp)
leaq 0x80(%rbx), %rax
movq %rax, 0xb0(%rsp)
leaq 0xa8(%rbx), %rax
movq %rax, 0x90(%rsp)
leaq 0xb0(%rbx), %rax
movq %rax, 0x98(%rsp)
leaq 0x40(%rbx), %rax
movq %rax, 0x78(%rsp)
movl $0x2, %eax
movq %rax, 0xa0(%rsp)
movl $0x1, %eax
leaq 0x50(%rsp), %r14
movq %rax, 0xa8(%rsp)
movq 0x88(%rsp), %rcx
movq (%rcx,%rax,8), %rsi
movq %r14, %rdi
leaq 0x10(%rsp), %rdx
callq 0x50e0
movq %r14, %rdi
leaq 0x84ca(%rip), %rsi      # 0x12446
callq 0x5090
testl %eax, %eax
je 0xa2d7
movq 0x58(%rsp), %rax
cmpq $0x3, %rax
jb 0xa0fb
movq 0x50(%rsp), %rcx
cmpb $0x2d, (%rcx)
jne 0xa0fb
cmpb $0x2d, 0x1(%rcx)
jne 0xa0fb
movl $0x2, %edx
leaq 0x10(%rsp), %rdi
leaq 0x50(%rsp), %rsi
movq $-0x1, %rcx
callq 0x5250
leaq 0x40(%rsp), %rax
movq %rax, 0x30(%rsp)
leaq 0x30(%rsp), %rdi
leaq 0x770b(%rip), %rdx      # 0x116ec
movq %rdx, %rsi
callq 0xc264
leaq 0x10(%rsp), %r14
movq %r14, %rdi
movl $0x3d, %esi
xorl %edx, %edx
callq 0x52d0
cmpq $-0x1, %rax
je 0xa096
movq %rax, %r12
leaq 0x1(%rax), %rdx
leaq 0xb8(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
movq $-0x1, %rcx
callq 0x5250
leaq 0x30(%rsp), %rdi
movq %r15, %rsi
callq 0x52b0
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
je 0xa04f
callq 0x5210
leaq 0xb8(%rsp), %r15
movq %r15, %rdi
leaq 0x10(%rsp), %r14
movq %r14, %rsi
xorl %edx, %edx
movq %r12, %rcx
callq 0x5250
movq %r14, %rdi
movq %r15, %rsi
callq 0x52b0
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
je 0xa091
callq 0x5210
leaq 0x10(%rsp), %r14
movq 0x90(%rsp), %rdi
movq %r14, %rsi
callq 0xc2f4
movq %rax, %r15
cmpq 0x98(%rsp), %rax
je 0xa46e
movq 0x90(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0xb4ac
movq (%rax), %rax
movq 0x60(%rbx), %rdi
shlq $0x7, %rax
movb $0x1, 0x78(%rdi,%rax)
cmpq $0x0, 0x38(%rsp)
je 0xa4b1
addq %rax, %rdi
addq $0x38, %rdi
leaq 0x30(%rsp), %rsi
callq 0x5140
jmp 0xa4b1
cmpq $0x2, %rax
jb 0xa293
movq 0x50(%rsp), %rax
cmpb $0x2d, (%rax)
jne 0xa293
cmpq $0x2, 0x58(%rsp)
setae %bpl
movl $0xb, 0xc(%rsp)
jb 0xa45e
movl $0x1, %r12d
movq 0x50(%rsp), %rax
movb (%rax,%r12), %al
movb %al, 0xb8(%rsp)
movq 0x88(%rbx), %rdx
movq 0xb0(%rsp), %rdi
movq %rdi, %rcx
testq %rdx, %rdx
je 0xa172
movq %rdi, %rcx
xorl %esi, %esi
cmpb %al, 0x20(%rdx)
setl %sil
cmovgeq %rdx, %rcx
movq 0x10(%rdx,%rsi,8), %rdx
testq %rdx, %rdx
jne 0xa15b
movq %rdi, %r13
cmpq %rdi, %rcx
je 0xa184
cmpb 0x20(%rcx), %al
cmovlq %rdi, %rcx
movq %rcx, %r13
cmpq %rdi, %r13
je 0xa1b3
movq 0xe0(%rsp), %rdi
leaq 0xb8(%rsp), %rsi
callq 0xb5aa
movq (%rax), %rax
movq 0x60(%rbx), %rcx
shlq $0x7, %rax
movb $0x1, 0x78(%rcx,%rax)
jmp 0xa269
leaq 0x40(%rsp), %rcx
movq %rcx, 0x30(%rsp)
movsbl %al, %edx
movl $0x1, %esi
leaq 0x30(%rsp), %r15
movq %r15, %rdi
callq 0x52a0
movq %rbx, %r14
movl $0x12, %r8d
movq %r15, %rdi
xorl %esi, %esi
xorl %edx, %edx
leaq 0x82d8(%rip), %rcx      # 0x124c1
callq 0x5280
leaq 0x20(%rsp), %rbx
movq %rbx, 0x10(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xa216
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0xa21c
movups (%rcx), %xmm0
movups %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x70(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x52b0
movq 0x10(%rsp), %rdi
cmpq %rbx, %rdi
je 0xa252
callq 0x5210
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
movq %r14, %rbx
je 0xa269
callq 0x5210
cmpq 0xb0(%rsp), %r13
je 0xa451
incq %r12
cmpq %r12, 0x58(%rsp)
seta %bpl
leaq 0x20(%rsp), %r13
ja 0xa131
jmp 0xa45e
leaq 0x50(%rsp), %rdi
leaq 0x81a8(%rip), %rsi      # 0x12447
callq 0x5090
leaq 0x8229(%rip), %rcx      # 0x124d4
testl %eax, %eax
je 0xa385
cmpb $0x0, 0x111(%rbx)
je 0xa3ab
movq 0xd8(%rsp), %rdi
leaq 0x50(%rsp), %rsi
callq 0xc226
jmp 0xa4de
cmpb $0x0, 0x110(%rbx)
leaq 0x81b9(%rip), %rcx      # 0x1249e
je 0xa385
movq 0xa8(%rsp), %rax
leaq 0x1(%rax), %r12
movl $0x5, 0xc(%rsp)
cmpq 0x80(%rsp), %r12
jae 0xa4f0
movq 0xa0(%rsp), %r13
cmpq %r12, %r13
jbe 0xa32b
movq 0x78(%rsp), %rdi
leaq 0x83af(%rip), %rsi      # 0x126d5
callq 0x5430
movq 0x88(%rsp), %rax
movq (%rax,%r13,8), %rsi
leaq 0x10(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x50e0
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq 0x78(%rsp), %rdi
callq 0x50b0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0xa36e
callq 0x5210
incq %r13
cmpq %r13, 0x80(%rsp)
jne 0xa315
leaq 0x20(%rsp), %r13
jmp 0xa4f0
movq 0xf8(%rbx), %rdx
movl $0x1, 0xc(%rsp)
movl $0x22, %r8d
movq 0x70(%rsp), %rdi
xorl %esi, %esi
callq 0x5360
jmp 0xa4f0
leaq 0x30(%rsp), %r14
movq %r14, %rdi
leaq 0x813d(%rip), %rsi      # 0x124f7
leaq 0x50(%rsp), %rdx
callq 0xb528
movq %r14, %rdi
leaq 0x8120(%rip), %rsi      # 0x124ee
callq 0x5430
movq %r13, 0x10(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xa3f6
movq %rdx, 0x10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x20(%rsp)
jmp 0xa3fe
movups (%rcx), %xmm0
movups %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rdx, 0x18(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x70(%rsp), %rdi
leaq 0x10(%rsp), %rsi
callq 0x52b0
movq 0x10(%rsp), %rdi
cmpq %r13, %rdi
je 0xa434
callq 0x5210
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0xa4e8
callq 0x5210
jmp 0xa4e8
movl $0x1, 0xc(%rsp)
leaq 0x20(%rsp), %r13
testb $0x1, %bpl
leaq 0x60(%rsp), %rbp
je 0xa4de
jmp 0xa4f0
leaq 0xb8(%rsp), %r14
movq %r14, %rdi
leaq 0x8041(%rip), %rsi      # 0x124c1
leaq 0x10(%rsp), %rdx
callq 0xb528
movq 0x70(%rsp), %rdi
movq %r14, %rsi
callq 0x52b0
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
je 0xa4b1
callq 0x5210
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0xa4c5
callq 0x5210
movq 0x10(%rsp), %rdi
cmpq %r13, %rdi
je 0xa4d4
callq 0x5210
cmpq 0x98(%rsp), %r15
je 0xa4e8
movl $0x0, 0xc(%rsp)
jmp 0xa4f0
movl $0x1, 0xc(%rsp)
movq 0x50(%rsp), %rdi
cmpq %rbp, %rdi
je 0xa4ff
callq 0x5210
movl 0xc(%rsp), %eax
testl %eax, %eax
jne 0xa532
movq 0xa8(%rsp), %rax
incq %rax
incq 0xa0(%rsp)
cmpq 0x80(%rsp), %rax
leaq 0x50(%rsp), %r14
jne 0x9f51
movl $0x5, %eax
cmpl $0x5, %eax
sete %r15b
jmp 0xa563
movq 0xf8(%rbx), %rdx
addq $0xf0, %rbx
leaq 0x7f38(%rip), %rcx      # 0x12488
xorl %r15d, %r15d
movl $0x15, %r8d
movq %rbx, %rdi
xorl %esi, %esi
callq 0x5360
movl %r15d, %eax
addq $0xe8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xa584
jmp 0xa584
jmp 0xa584
jmp 0xa584
jmp 0xa5d3
jmp 0xa5ce
movq %rax, %rbx
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0xa5d6
callq 0x5210
jmp 0xa5d6
jmp 0xa5a1
jmp 0xa5ce
movq %rax, %rbx
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
jmp 0xa5e0
jmp 0xa5ce
jmp 0xa5ce
jmp 0xa5ce
jmp 0xa5ba
jmp 0xa5ce
movq %rax, %rbx
jmp 0xa5fe
movq %rax, %rbx
movq 0x50(%rsp), %rdi
cmpq %rbp, %rdi
jne 0xa5f9
jmp 0xa5fe
movq %rax, %rbx
jmp 0xa5ea
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0xa5ea
callq 0x5210
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0xa5fe
callq 0x5210
movq %rbx, %rdi
callq 0x53e0