// File: 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
subq $0xb0, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x18(%rbp), %rdi
callq 0x997b0
testb $0x1, %al
jne 0xa0741
jmp 0xa07b9
movq -0x20(%rbp), %rdi
callq 0x997b0
testb $0x1, %al
jne 0xa0750
jmp 0xa07a0
movq 0x8f889(%rip), %rdi     # 0x12ffe0
leaq 0x5e92d(%rip), %rsi     # 0xff08b
callq 0x99470
movq -0xa0(%rbp), %rsi
movq %rax, %rdi
addq $0xa0, %rsi
callq 0x99410
movq %rax, %rdi
leaq 0x5e94c(%rip), %rsi     # 0xff0cf
callq 0x99470
movq %rax, %rdi
movq 0x8f7d6(%rip), %rsi     # 0x12ff68
callq 0x994c0
movb $0x0, -0x1(%rbp)
jmp 0xa09fa
movq -0xa0(%rbp), %rdi
addq $0x48, %rdi
movq -0x20(%rbp), %rsi
callq 0xa1220
jmp 0xa09f6
movq -0x18(%rbp), %rdi
leaq 0x5e947(%rip), %rsi     # 0xff10b
callq 0xa1040
testb $0x1, %al
jne 0xa07cf
jmp 0xa0844
movq -0x20(%rbp), %rdi
leaq 0x5e833(%rip), %rsi     # 0xff00d
callq 0xa1040
testb $0x1, %al
jne 0xa07f9
movq -0x20(%rbp), %rdi
leaq 0x5e816(%rip), %rsi     # 0xff004
callq 0xa1040
testb $0x1, %al
jne 0xa07f9
jmp 0xa0819
movq -0xa0(%rbp), %rdi
movq -0x20(%rbp), %rsi
addq $0x80, %rdi
callq 0x99070
movb $0x1, -0x1(%rbp)
jmp 0xa09fa
movq 0x8f7c0(%rip), %rdi     # 0x12ffe0
leaq 0x5e8ee(%rip), %rsi     # 0xff115
callq 0x99470
movq %rax, %rdi
movq 0x8f732(%rip), %rsi     # 0x12ff68
callq 0x994c0
movb $0x0, -0x1(%rbp)
jmp 0xa09fa
movq -0x18(%rbp), %rdi
leaq 0x5e828(%rip), %rsi     # 0xff077
callq 0xa1040
testb $0x1, %al
jne 0xa086e
movq -0x18(%rbp), %rdi
leaq 0x5e817(%rip), %rsi     # 0xff07a
callq 0xa1040
testb $0x1, %al
jne 0xa086e
jmp 0xa0883
movq -0xa0(%rbp), %rdi
callq 0xa0a20
movb $0x1, -0x1(%rbp)
jmp 0xa09fa
movq -0x18(%rbp), %rdi
leaq 0x5e7f3(%rip), %rsi     # 0xff081
callq 0xa1040
testb $0x1, %al
jne 0xa0899
jmp 0xa08dc
movq -0xa0(%rbp), %rdi
addq $0x60, %rdi
callq 0x997b0
testb $0x1, %al
jne 0xa08d3
movq -0xa0(%rbp), %rsi
addq $0x60, %rsi
movq 0x8f6d9(%rip), %rdi     # 0x12ff98
callq 0x99410
movq %rax, %rdi
movq 0x8f69a(%rip), %rsi     # 0x12ff68
callq 0x994c0
movb $0x0, -0x1(%rbp)
jmp 0xa09fa
movq -0xa0(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0xa0ff0
movq %rax, -0x30(%rbp)
leaq -0x28(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xa1020
movq -0xa0(%rbp), %rdi
callq 0xa12c0
movq %rax, -0x40(%rbp)
leaq -0x38(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0xa1020
leaq -0x28(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0xa1290
testb $0x1, %al
jne 0xa092d
jmp 0xa0964
movq 0x8f6ac(%rip), %rdi     # 0x12ffe0
leaq 0x5e813(%rip), %rsi     # 0xff14e
callq 0x99470
movq %rax, %rdi
movq -0x18(%rbp), %rsi
callq 0x99410
movq %rax, %rdi
movq 0x8f612(%rip), %rsi     # 0x12ff68
callq 0x994c0
movb $0x0, -0x1(%rbp)
jmp 0xa09fa
leaq -0x88(%rbp), %rdi
movq %rdi, -0xa8(%rbp)
callq 0xa12f0
movq -0xa8(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x99070
jmp 0xa0989
leaq -0x28(%rbp), %rdi
callq 0xa1150
movq 0x20(%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x20(%rbp), %rsi
leaq -0x60(%rbp), %rdi
callq 0x99070
jmp 0xa09a9
movq -0xa0(%rbp), %rdi
addq $0x30, %rdi
leaq -0x88(%rbp), %rsi
callq 0xa1320
jmp 0xa09c2
leaq -0x88(%rbp), %rdi
callq 0xa1170
jmp 0xa09f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x90(%rbp)
movl %eax, -0x94(%rbp)
leaq -0x88(%rbp), %rdi
callq 0xa1170
jmp 0xa0a08
jmp 0xa09f2
jmp 0xa09f4
jmp 0xa09f6
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0xb0, %rsp
popq %rbp
retq
movq -0x90(%rbp), %rdi
callq 0x99840
nopw %cs:(%rax,%rax)