// File: /workspace/github_cpp_makefile_star2_O1/CoinXu[P]reviser-compiler/src/command_line_interface.cpp
// Function: reviser::CommandLineInterface::InterpretArgument(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
bool CommandLineInterface::InterpretArgument(const string& name, const string& value) {
    if (name.empty()) {
      if (value.empty()) {
        cerr << "you seem to have passed an empty string as one of the arguments "
          "to " << executable_name << ". it is not valid input so the program "
          "is going to die now." << endl;
        return false;
      }
      // not a flag, just a filename
      input_files.push_back(value);
    } else if (name == "--printer") {
      if (value == "fs" || value == "terminal") {
        printer_name = value;
        return true;
      }
      cerr << "invalid value for --printer. must be <fs> or <terminal>." << endl;
      return false;
    } else if (name == "-h" || name == "--help") {
      PrintHelpText();
      return true;
    } else if (name == "--version") {
      if (!version_info.empty()) {
        cout << version_info << endl;
      }
      return false;
    } else {
      GeneratorMap::const_iterator iter = generators.find(name);

      if (iter == generators.end()) {
        cerr << "unkown flag: " << name << endl;
        return false;
      }

      OutputDirective directive;
      directive.name = name;
      directive.generator = iter->second.generator;
      directive.output_location = value;

      output_directives.push_back(directive);
    }

    return true;
  }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdx, %r14
movq %rdi, %rbx
cmpq $0x0, 0x8(%rsi)
je 0x29ca5
movq %rsi, %r15
leaq 0x26533(%rip), %rsi     # 0x5010b
movq %r15, %rdi
callq 0x250e0
testl %eax, %eax
je 0x29ccd
leaq 0x26488(%rip), %rsi     # 0x50077
movq %r15, %rdi
callq 0x250e0
testl %eax, %eax
je 0x29cc0
leaq 0x26474(%rip), %rsi     # 0x5007a
movq %r15, %rdi
callq 0x250e0
testl %eax, %eax
je 0x29cc0
leaq 0x26464(%rip), %rsi     # 0x50081
movq %r15, %rdi
callq 0x250e0
testl %eax, %eax
je 0x29d92
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2a796
movq %rax, %r12
leaq 0x8(%rbx), %r13
cmpq %r13, %rax
je 0x29db5
leaq -0x60(%rbp), %rax
movq %rax, -0x10(%rax)
xorl %ecx, %ecx
movq %rcx, -0x8(%rax)
movb %cl, (%rax)
leaq -0x38(%rbp), %rax
movq %rax, -0x10(%rax)
movq %rcx, -0x8(%rax)
movb %cl, (%rax)
leaq -0x70(%rbp), %rdi
movq %r15, %rsi
callq 0x25210
leaq -0x48(%rbp), %rdi
movq 0x40(%r12), %rax
movq %rax, -0x8(%rdi)
movq %r14, %rsi
callq 0x25210
addq $0x30, %rbx
leaq -0x70(%rbp), %rsi
movq %rbx, %rdi
callq 0x2a172
leaq -0x70(%rbp), %rdi
callq 0x2a0f0
jmp 0x29de7
cmpq $0x0, 0x8(%r14)
je 0x29d1f
addq $0x48, %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2a126
jmp 0x29dec
movq %rbx, %rdi
callq 0x29e12
jmp 0x29dec
leaq 0x26339(%rip), %rsi     # 0x5000d
movq %r14, %rdi
callq 0x250e0
testl %eax, %eax
je 0x29d0b
leaq 0x2631d(%rip), %rsi     # 0x50004
movq %r14, %rdi
callq 0x250e0
testl %eax, %eax
je 0x29d0b
movq 0x372ee(%rip), %rbx     # 0x60fe8
leaq 0x26414(%rip), %rsi     # 0x50115
movl $0x38, %edx
movq %rbx, %rdi
jmp 0x29d62
subq $-0x80, %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x25210
jmp 0x29dec
movq 0x372c2(%rip), %r14     # 0x60fe8
leaq 0x2635e(%rip), %rsi     # 0x5008b
movl $0x43, %edx
movq %r14, %rdi
callq 0x253c0
movq 0xa0(%rbx), %rsi
movq 0xa8(%rbx), %rdx
movq %r14, %rdi
callq 0x253c0
movq %rax, %rbx
leaq 0x26375(%rip), %rsi     # 0x500cf
movl $0x3b, %edx
movq %rax, %rdi
callq 0x253c0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x25330
movsbl %al, %esi
movq %rbx, %rdi
callq 0x25040
movq %rax, %rdi
callq 0x25270
xorl %eax, %eax
jmp 0x29dee
movq 0x68(%rbx), %rdx
testq %rdx, %rdx
je 0x29d8e
movq 0x60(%rbx), %rsi
movq 0x37202(%rip), %rdi     # 0x60fa8
callq 0x253c0
movq %rax, %rdi
callq 0x251d0
jmp 0x29d8e
movq 0x3722c(%rip), %rbx     # 0x60fe8
leaq 0x2638b(%rip), %rsi     # 0x5014e
movl $0xd, %edx
movq %rbx, %rdi
callq 0x253c0
movq (%r15), %rsi
movq 0x8(%r15), %rdx
movq %rbx, %rdi
callq 0x253c0
movq %rax, %rdi
callq 0x251d0
cmpq %r13, %r12
je 0x29d8e
movb $0x1, %al
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0x70(%rbp), %rdi
callq 0x2a0f0
movq %rbx, %rdi
callq 0x255f0
nop