// File: /workspace/github_cpp_makefile_star2_O3/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 %r12
pushq %rbx
subq $0x50, %rsp
movq %rdx, %r14
movq %rdi, %rbx
cmpq $0x0, 0x8(%rsi)
je 0x28b2c
movq %rsi, %r15
leaq 0x266a9(%rip), %rsi     # 0x4f10b
movq %r15, %rdi
callq 0x240e0
testl %eax, %eax
je 0x28b4e
leaq 0x265fe(%rip), %rsi     # 0x4f077
movq %r15, %rdi
callq 0x240e0
testl %eax, %eax
je 0x28b44
leaq 0x265ea(%rip), %rsi     # 0x4f07a
movq %r15, %rdi
callq 0x240e0
testl %eax, %eax
je 0x28b44
leaq 0x265da(%rip), %rsi     # 0x4f081
movq %r15, %rdi
callq 0x240e0
testl %eax, %eax
je 0x28c13
movq %rbx, %rdi
movq %r15, %rsi
callq 0x295fe
movq %rax, %r12
leaq 0x8(%rbx), %rax
cmpq %rax, %r12
je 0x28c29
leaq -0x58(%rbp), %rax
movq %rax, -0x10(%rax)
xorl %ecx, %ecx
movq %rcx, -0x8(%rax)
movb %cl, (%rax)
leaq -0x30(%rbp), %rax
movq %rax, -0x10(%rax)
movq %rcx, -0x8(%rax)
movb %cl, (%rax)
leaq -0x68(%rbp), %rdi
movq %r15, %rsi
callq 0x24210
leaq -0x40(%rbp), %rdi
movq 0x40(%r12), %rax
movq %rax, -0x8(%rdi)
movq %r14, %rsi
callq 0x24210
addq $0x30, %rbx
leaq -0x68(%rbp), %rsi
movq %rbx, %rdi
callq 0x28fe8
leaq -0x68(%rbp), %rdi
callq 0x28f66
jmp 0x28b9b
cmpq $0x0, 0x8(%r14)
je 0x28ba2
addq $0x48, %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x28f9c
jmp 0x28b9b
movq %rbx, %rdi
callq 0x28c7e
jmp 0x28b9b
leaq 0x264b8(%rip), %rsi     # 0x4f00d
movq %r14, %rdi
callq 0x240e0
testl %eax, %eax
je 0x28b8c
leaq 0x2649c(%rip), %rsi     # 0x4f004
movq %r14, %rdi
callq 0x240e0
testl %eax, %eax
je 0x28b8c
movq 0x3746d(%rip), %rbx     # 0x5ffe8
leaq 0x26593(%rip), %rsi     # 0x4f115
movl $0x38, %edx
movq %rbx, %rdi
jmp 0x28be5
subq $-0x80, %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x24210
movb $0x1, %al
jmp 0x28c5d
movq 0x3743f(%rip), %r14     # 0x5ffe8
leaq 0x264db(%rip), %rsi     # 0x4f08b
movl $0x43, %edx
movq %r14, %rdi
callq 0x243c0
movq 0xa0(%rbx), %rsi
movq 0xa8(%rbx), %rdx
movq %r14, %rdi
callq 0x243c0
movq %rax, %rbx
leaq 0x264f2(%rip), %rsi     # 0x4f0cf
movl $0x3b, %edx
movq %rax, %rdi
callq 0x243c0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x24330
movsbl %al, %esi
movq %rbx, %rdi
callq 0x24040
movq %rax, %rdi
callq 0x24270
jmp 0x28c5b
movq 0x68(%rbx), %rdx
testq %rdx, %rdx
je 0x28c5b
movq 0x60(%rbx), %rsi
movq 0x37381(%rip), %rdi     # 0x5ffa8
jmp 0x28c4e
movq 0x373b8(%rip), %rbx     # 0x5ffe8
leaq 0x26517(%rip), %rsi     # 0x4f14e
movl $0xd, %edx
movq %rbx, %rdi
callq 0x243c0
movq (%r15), %rsi
movq 0x8(%r15), %rdx
movq %rbx, %rdi
callq 0x243c0
movq %rax, %rdi
callq 0x241d0
xorl %eax, %eax
addq $0x50, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0x68(%rbp), %rdi
callq 0x28f66
movq %rbx, %rdi
callq 0x245f0