// File: /workspace/github_cpp_makefile_star2_O2/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 0x38acf
movq %rsi, %r15
leaq 0x1e683(%rip), %rsi     # 0x5710b
movq %r15, %rdi
callq 0x38ee6
testb %al, %al
je 0x38ae7
leaq 0x1e572(%rip), %rsi     # 0x5700d
movq %r14, %rdi
callq 0x38ee6
testb %al, %al
jne 0x38abe
leaq 0x1e556(%rip), %rsi     # 0x57004
movq %r14, %rdi
callq 0x38ee6
testb %al, %al
je 0x38b4a
subq $-0x80, %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x35200
jmp 0x38b15
cmpq $0x0, 0x8(%r14)
je 0x38b19
addq $0x48, %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x38f8a
jmp 0x38b15
leaq 0x1e589(%rip), %rsi     # 0x57077
movq %r15, %rdi
callq 0x38ee6
testb %al, %al
jne 0x38b0d
leaq 0x1e579(%rip), %rsi     # 0x5707a
movq %r15, %rdi
callq 0x38ee6
testb %al, %al
je 0x38b74
movq %rbx, %rdi
callq 0x38c4e
movb $0x1, %al
jmp 0x38b67
movq 0x334c0(%rip), %rdi     # 0x6bfe0
leaq 0x1e564(%rip), %rsi     # 0x5708b
callq 0x35320
addq $0xa0, %rbx
movq %rax, %rdi
movq %rbx, %rsi
callq 0x352e0
leaq 0x1e58a(%rip), %rsi     # 0x570cf
movq %rax, %rdi
jmp 0x38b58
movq 0x3348f(%rip), %rdi     # 0x6bfe0
leaq 0x1e5bd(%rip), %rsi     # 0x57115
callq 0x35320
movq %rax, %rdi
callq 0x351c0
xorl %eax, %eax
addq $0x50, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1e506(%rip), %rsi     # 0x57081
movq %r15, %rdi
callq 0x38ee6
testb %al, %al
je 0x38ba1
cmpq $0x0, 0x68(%rbx)
je 0x38b65
addq $0x60, %rbx
movq 0x333ff(%rip), %rdi     # 0x6bf98
movq %rbx, %rsi
jmp 0x38c30
movq %rbx, %rdi
movq %r15, %rsi
callq 0x39616
movq %rax, %r12
leaq 0x8(%rbx), %rax
cmpq %rax, %r12
je 0x38c17
leaq -0x58(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
xorl %ecx, %ecx
movb %cl, (%rax)
leaq -0x30(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb %cl, (%rax)
leaq -0x68(%rbp), %rdi
movq %r15, %rsi
callq 0x35200
leaq -0x40(%rbp), %rdi
movq 0x40(%r12), %rax
movq %rax, -0x8(%rdi)
movq %r14, %rsi
callq 0x35200
addq $0x30, %rbx
leaq -0x68(%rbp), %rsi
movq %rbx, %rdi
callq 0x38fc6
leaq -0x68(%rbp), %rdi
callq 0x38f6a
jmp 0x38b15
movq 0x333c2(%rip), %rdi     # 0x6bfe0
leaq 0x1e529(%rip), %rsi     # 0x5714e
callq 0x35320
movq %rax, %rdi
movq %r15, %rsi
callq 0x352e0
jmp 0x38b5d
movq %rax, %rbx
leaq -0x68(%rbp), %rdi
callq 0x38f6a
movq %rbx, %rdi
callq 0x355f0