// File: trapexit[P]bbf/src/options.cpp
// Function: Options::instr_from_string(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
Options::Instruction
Options::instr_from_string(const std::string str)
{
  if(str == "info")
    return Options::INFO;
  if(str == "captcha")
    return Options::CAPTCHA;
  if(str == "scan")
    return Options::SCAN;
  if(str == "fix")
    return Options::FIX;
  if(str == "fix-file")
    return Options::FIX_FILE;
  if(str == "burnin")
    return Options::BURNIN;
  if(str == "find-files")
    return Options::FIND_FILES;
  if(str == "dump-files")
    return Options::DUMP_FILES;
  if(str == "file-blocks")
    return Options::FILE_BLOCKS;
  if(str == "write-pseudo-uncorrectable-wl")
    return Options::WRITE_PSEUDO_UNCORRECTABLE_WL;
  if(str == "write-pseudo-uncorrectable-wol")
    return Options::WRITE_PSEUDO_UNCORRECTABLE_WOL;
  if(str == "write-flagged-uncorrectable-wl")
    return Options::WRITE_FLAGGED_UNCORRECTABLE_WL;
  if(str == "write-flagged-uncorrectable-wol")
    return Options::WRITE_FLAGGED_UNCORRECTABLE_WOL;
  if(str == "security-erase")
    return Options::SECURITY_ERASE;
  if(str == "enhanced-security-erase")
    return Options::ENHANCED_SECURITY_ERASE;
  if(str == "fsthrash")
    return Options::FSTHRASH;
  if(str == "filethrash")
    return Options::FILETHRASH;

  return Options::_INVALID;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rsi, -0x28(%rbp)
movq %rdi, %rax
movq -0x28(%rbp), %rdi
movq %rdi, -0x20(%rbp)
movq %rax, -0x10(%rbp)
movq %rdi, -0x18(%rbp)
leaq 0x9fb7(%rip), %rsi      # 0x23d0d
callq 0x53c0
testb $0x1, %al
jne 0x19d61
jmp 0x19d6d
movl $0xa, -0x4(%rbp)
jmp 0x19f88
movq -0x20(%rbp), %rdi
leaq 0x9f9a(%rip), %rsi      # 0x23d12
callq 0x53c0
testb $0x1, %al
jne 0x19d83
jmp 0x19d8f
movl $0x1, -0x4(%rbp)
jmp 0x19f88
movq -0x20(%rbp), %rdi
leaq 0x9f80(%rip), %rsi      # 0x23d1a
callq 0x53c0
testb $0x1, %al
jne 0x19da5
jmp 0x19db1
movl $0xb, -0x4(%rbp)
jmp 0x19f88
movq -0x20(%rbp), %rdi
leaq 0x9f63(%rip), %rsi      # 0x23d1f
callq 0x53c0
testb $0x1, %al
jne 0x19dc7
jmp 0x19dd3
movl $0x6, -0x4(%rbp)
jmp 0x19f88
movq -0x20(%rbp), %rdi
leaq 0x9f45(%rip), %rsi      # 0x23d23
callq 0x53c0
testb $0x1, %al
jne 0x19de9
jmp 0x19df5
movl $0x7, -0x4(%rbp)
jmp 0x19f88
movq -0x20(%rbp), %rdi
leaq 0x934d(%rip), %rsi      # 0x2314d
callq 0x53c0
testb $0x1, %al
jne 0x19e0b
jmp 0x19e17
movl $0x0, -0x4(%rbp)
jmp 0x19f88
movq -0x20(%rbp), %rdi
leaq 0x9f0a(%rip), %rsi      # 0x23d2c
callq 0x53c0
testb $0x1, %al
jne 0x19e2d
jmp 0x19e39
movl $0x5, -0x4(%rbp)
jmp 0x19f88
movq -0x20(%rbp), %rdi
leaq 0x9ef3(%rip), %rsi      # 0x23d37
callq 0x53c0
testb $0x1, %al
jne 0x19e4f
jmp 0x19e5b
movl $0x2, -0x4(%rbp)
jmp 0x19f88
movq -0x20(%rbp), %rdi
leaq 0x9edc(%rip), %rsi      # 0x23d42
callq 0x53c0
testb $0x1, %al
jne 0x19e71
jmp 0x19e7d
movl $0x4, -0x4(%rbp)
jmp 0x19f88
movq -0x20(%rbp), %rdi
leaq 0x9ec6(%rip), %rsi      # 0x23d4e
callq 0x53c0
testb $0x1, %al
jne 0x19e93
jmp 0x19e9f
movl $0xf, -0x4(%rbp)
jmp 0x19f88
movq -0x20(%rbp), %rdi
leaq 0x9ec2(%rip), %rsi      # 0x23d6c
callq 0x53c0
testb $0x1, %al
jne 0x19eb5
jmp 0x19ec1
movl $0x10, -0x4(%rbp)
jmp 0x19f88
movq -0x20(%rbp), %rdi
leaq 0x9ebf(%rip), %rsi      # 0x23d8b
callq 0x53c0
testb $0x1, %al
jne 0x19ed7
jmp 0x19ee3
movl $0xd, -0x4(%rbp)
jmp 0x19f88
movq -0x20(%rbp), %rdi
leaq 0x9ebc(%rip), %rsi      # 0x23daa
callq 0x53c0
testb $0x1, %al
jne 0x19ef9
jmp 0x19f05
movl $0xe, -0x4(%rbp)
jmp 0x19f88
movq -0x20(%rbp), %rdi
leaq 0x9ec3(%rip), %rsi      # 0x23dd3
callq 0x53c0
testb $0x1, %al
jne 0x19f1b
jmp 0x19f24
movl $0xc, -0x4(%rbp)
jmp 0x19f88
movq -0x20(%rbp), %rdi
leaq 0x9e9b(%rip), %rsi      # 0x23dca
callq 0x53c0
testb $0x1, %al
jne 0x19f3a
jmp 0x19f43
movl $0x3, -0x4(%rbp)
jmp 0x19f88
movq -0x20(%rbp), %rdi
leaq 0x9e94(%rip), %rsi      # 0x23de2
callq 0x53c0
testb $0x1, %al
jne 0x19f59
jmp 0x19f62
movl $0x9, -0x4(%rbp)
jmp 0x19f88
movq -0x20(%rbp), %rdi
leaq 0x9e7e(%rip), %rsi      # 0x23deb
callq 0x53c0
testb $0x1, %al
jne 0x19f78
jmp 0x19f81
movl $0x8, -0x4(%rbp)
jmp 0x19f88
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)