// File: evincarofautumn[P]protodata/arguments.cpp
// Function: parse_arguments(int, char const* const*)
std::tuple<std::vector<Input>, unique_ostream>
  parse_arguments(int count, const char* const* begin) {
  using namespace std;
  const char* const stdin_name = "STDIN";
  --count;
  ++begin;
  vector<Input> inputs;
  unique_ostream output;
  bool enable_parsing = true;
  const auto end = begin + count;
  for (auto argument = begin; argument != end; ++argument) {
    if (!enable_parsing) {
      inputs.push_back(Input(*argument,
        unique_istream(new ifstream(*argument, ios::binary))));
      continue;
    }
    if (match_argument(*argument, "-h", "--help")) {
      throw print_usage();
    } else if (match_argument(*argument, "-e", "--eval")) {
      if (argument + 1 == end)
        throw missing_value(*argument);
      ++argument;
      inputs.push_back(Input(*argument,
        unique_istream(new istringstream(*argument))));
    } else if (match_argument(*argument, "-o", "--output")) {
      if (output)
        throw excessive_value(*argument);
      if (argument + 1 == end)
        throw missing_value(*argument);
      ++argument;
      output.reset(new ofstream(*argument, ios::binary));
    } else if (streq(*argument, "-")) {
      inputs.push_back(Input(stdin_name, unique_istream(&cin)));
    } else if (streq(*argument, "--")) {
      enable_parsing = false;
    } else if (**argument == '-') {
      throw unknown_option(*argument);
    } else {
      inputs.push_back(Input(*argument,
        unique_istream(new ifstream(*argument, ios::binary))));
    }
  }
  if (inputs.empty())
    inputs.push_back(Input(stdin_name, unique_istream(&cin)));
  if (!output)
    output.reset(&cout);
  return make_tuple(move(inputs), move(output));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x290, %rsp            # imm = 0x290
movq %rdi, -0x1b8(%rbp)
movq %rdi, %rax
movq %rax, -0x1b0(%rbp)
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
leaq 0xd65c(%rip), %rax      # 0x1a22a
movq %rax, -0x20(%rbp)
movl -0xc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xc(%rbp)
movq -0x18(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x18(%rbp)
leaq -0x38(%rbp), %rdi
callq 0xd6c0
leaq -0x40(%rbp), %rdi
callq 0xd6e0
movb $0x1, -0x41(%rbp)
movq -0x18(%rbp), %rax
movslq -0xc(%rbp), %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
cmpq -0x50(%rbp), %rax
je 0xd599
testb $0x1, -0x41(%rbp)
jne 0xcd25
movq -0x58(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x1c8(%rbp)
movl $0x208, %edi            # imm = 0x208
callq 0x42c0
movq %rax, -0x1c0(%rbp)
jmp 0xcc51
movq -0x1c0(%rbp), %rdi
movq -0x58(%rbp), %rax
movq (%rax), %rsi
movl $0x4, %edx
callq 0x4510
jmp 0xcc6b
movq -0x1c0(%rbp), %rsi
leaq -0x70(%rbp), %rdi
movq %rdi, -0x1d0(%rbp)
callq 0xd740
movq -0x1c8(%rbp), %rsi
movq -0x1d0(%rbp), %rdx
leaq -0x68(%rbp), %rdi
callq 0xd770
jmp 0xcc9b
leaq -0x38(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0xd710
jmp 0xccaa
leaq -0x68(%rbp), %rdi
callq 0xd7b0
leaq -0x70(%rbp), %rdi
callq 0xd7d0
jmp 0xd588
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xd696
movq -0x1c0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
movl $0x208, %esi            # imm = 0x208
callq 0x42d0
jmp 0xd696
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xcd17
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x68(%rbp), %rdi
callq 0xd7b0
leaq -0x70(%rbp), %rdi
callq 0xd7d0
jmp 0xd696
movq -0x58(%rbp), %rax
movq (%rax), %rdi
leaq 0xd4fd(%rip), %rsi      # 0x1a230
leaq 0xd4f9(%rip), %rdx      # 0x1a233
callq 0xcb50
testb $0x1, %al
jne 0xcd45
jmp 0xcd9f
movl $0x10, %edi
callq 0x4150
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x1d8(%rbp)
callq 0xd830
jmp 0xcd63
movq -0x1d8(%rbp), %rdi
leaq 0x18dd7(%rip), %rsi     # 0x25b48
leaq 0xaf8(%rip), %rdx       # 0xd870
callq 0x44b0
jmp 0xd6b1
movq -0x1d8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
callq 0x4200
jmp 0xd696
movq -0x58(%rbp), %rax
movq (%rax), %rdi
leaq 0xd48d(%rip), %rsi      # 0x1a23a
leaq 0xd489(%rip), %rdx      # 0x1a23d
callq 0xcb50
testb $0x1, %al
jne 0xcdc2
jmp 0xd048
movq -0x58(%rbp), %rax
addq $0x8, %rax
cmpq -0x50(%rbp), %rax
jne 0xceb2
movb $0x1, -0xa2(%rbp)
movl $0x10, %edi
callq 0x4150
movq %rax, -0x1f0(%rbp)
movq -0x58(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x1e8(%rbp)
leaq -0xa1(%rbp), %rdi
movq %rdi, -0x1e0(%rbp)
callq 0x44e0
movq -0x1e8(%rbp), %rsi
movq -0x1e0(%rbp), %rdx
leaq -0xa0(%rbp), %rdi
callq 0xd890
jmp 0xce29
movq -0x1f0(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0xd940
jmp 0xce3e
movq -0x1f0(%rbp), %rdi
movb $0x0, -0xa2(%rbp)
leaq 0x18d0d(%rip), %rsi     # 0x25b60
leaq 0xb76(%rip), %rdx       # 0xd9d0
callq 0x44b0
jmp 0xd6b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xce8a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x41a0
leaq -0xa1(%rbp), %rdi
callq 0x4320
testb $0x1, -0xa2(%rbp)
jne 0xcea1
jmp 0xcead
movq -0x1f0(%rbp), %rdi
callq 0x4200
jmp 0xd696
movq -0x58(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x200(%rbp)
movl $0x180, %edi            # imm = 0x180
callq 0x42c0
movq %rax, -0x1f8(%rbp)
jmp 0xcedf
movb $0x1, -0xe2(%rbp)
movq -0x58(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x210(%rbp)
leaq -0xe1(%rbp), %rdi
movq %rdi, -0x208(%rbp)
callq 0x44e0
movq -0x210(%rbp), %rsi
movq -0x208(%rbp), %rdx
leaq -0xe0(%rbp), %rdi
callq 0xd890
jmp 0xcf23
movq -0x1f8(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
movl $0x8, %edx
callq 0x44a0
jmp 0xcf3d
movq -0x1f8(%rbp), %rsi
movb $0x0, -0xe2(%rbp)
leaq -0xc0(%rbp), %rdi
movq %rdi, -0x218(%rbp)
callq 0xd740
movq -0x200(%rbp), %rsi
movq -0x218(%rbp), %rdx
leaq -0xb8(%rbp), %rdi
callq 0xd770
jmp 0xcf7a
leaq -0x38(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0xd710
jmp 0xcf8c
leaq -0xb8(%rbp), %rdi
callq 0xd7b0
leaq -0xc0(%rbp), %rdi
callq 0xd7d0
leaq -0xe0(%rbp), %rdi
callq 0x41a0
leaq -0xe1(%rbp), %rdi
callq 0x4320
jmp 0xd584
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xd01b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xd00f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xd003
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0xd7b0
leaq -0xc0(%rbp), %rdi
callq 0xd7d0
leaq -0xe0(%rbp), %rdi
callq 0x41a0
leaq -0xe1(%rbp), %rdi
callq 0x4320
testb $0x1, -0xe2(%rbp)
jne 0xd032
jmp 0xd043
movq -0x1f8(%rbp), %rdi
movl $0x180, %esi            # imm = 0x180
callq 0x42d0
jmp 0xd696
movq -0x58(%rbp), %rax
movq (%rax), %rdi
leaq 0xd1ee(%rip), %rsi      # 0x1a244
leaq 0xd1ea(%rip), %rdx      # 0x1a247
callq 0xcb50
testb $0x1, %al
jne 0xd06b
jmp 0xd2bb
leaq -0x40(%rbp), %rdi
callq 0xd9f0
testb $0x1, %al
jne 0xd07d
jmp 0xd15b
movb $0x1, -0x10a(%rbp)
movl $0x10, %edi
callq 0x4150
movq %rax, -0x230(%rbp)
movq -0x58(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x228(%rbp)
leaq -0x109(%rbp), %rdi
movq %rdi, -0x220(%rbp)
callq 0x44e0
movq -0x228(%rbp), %rsi
movq -0x220(%rbp), %rdx
leaq -0x108(%rbp), %rdi
callq 0xd890
jmp 0xd0d2
movq -0x230(%rbp), %rdi
leaq -0x108(%rbp), %rsi
callq 0xda20
jmp 0xd0e7
movq -0x230(%rbp), %rdi
movb $0x0, -0x10a(%rbp)
leaq 0x18a7c(%rip), %rsi     # 0x25b78
leaq 0x9ad(%rip), %rdx       # 0xdab0
callq 0x44b0
jmp 0xd6b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xd133
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x108(%rbp), %rdi
callq 0x41a0
leaq -0x109(%rbp), %rdi
callq 0x4320
testb $0x1, -0x10a(%rbp)
jne 0xd14a
jmp 0xd156
movq -0x230(%rbp), %rdi
callq 0x4200
jmp 0xd696
movq -0x58(%rbp), %rax
addq $0x8, %rax
cmpq -0x50(%rbp), %rax
jne 0xd24b
movb $0x1, -0x132(%rbp)
movl $0x10, %edi
callq 0x4150
movq %rax, -0x248(%rbp)
movq -0x58(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x240(%rbp)
leaq -0x131(%rbp), %rdi
movq %rdi, -0x238(%rbp)
callq 0x44e0
movq -0x240(%rbp), %rsi
movq -0x238(%rbp), %rdx
leaq -0x130(%rbp), %rdi
callq 0xd890
jmp 0xd1c2
movq -0x248(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0xd940
jmp 0xd1d7
movq -0x248(%rbp), %rdi
movb $0x0, -0x132(%rbp)
leaq 0x18974(%rip), %rsi     # 0x25b60
leaq 0x7dd(%rip), %rdx       # 0xd9d0
callq 0x44b0
jmp 0xd6b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xd223
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x41a0
leaq -0x131(%rbp), %rdi
callq 0x4320
testb $0x1, -0x132(%rbp)
jne 0xd23a
jmp 0xd246
movq -0x248(%rbp), %rdi
callq 0x4200
jmp 0xd696
movq -0x58(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x58(%rbp)
movl $0x200, %edi            # imm = 0x200
callq 0x42c0
movq %rax, -0x250(%rbp)
jmp 0xd26a
movq -0x250(%rbp), %rdi
movq -0x58(%rbp), %rax
movq (%rax), %rsi
movl $0x4, %edx
callq 0x4330
jmp 0xd284
movq -0x250(%rbp), %rsi
leaq -0x40(%rbp), %rdi
callq 0xdad0
jmp 0xd582
movq -0x250(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
movl $0x200, %esi            # imm = 0x200
callq 0x42d0
jmp 0xd696
movq -0x58(%rbp), %rax
movq (%rax), %rdi
leaq 0xcf88(%rip), %rsi      # 0x1a251
callq 0xcb20
testb $0x1, %al
jne 0xd2d7
jmp 0xd373
movq 0x18cea(%rip), %rsi     # 0x25fc8
leaq -0x150(%rbp), %rdi
movq %rdi, -0x258(%rbp)
callq 0xd740
movq -0x258(%rbp), %rdx
leaq 0xcf2b(%rip), %rsi      # 0x1a22a
leaq -0x148(%rbp), %rdi
callq 0xd770
jmp 0xd30d
leaq -0x38(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0xd710
jmp 0xd31f
leaq -0x148(%rbp), %rdi
callq 0xd7b0
leaq -0x150(%rbp), %rdi
callq 0xd7d0
jmp 0xd580
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xd362
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x148(%rbp), %rdi
callq 0xd7b0
leaq -0x150(%rbp), %rdi
callq 0xd7d0
jmp 0xd696
movq -0x58(%rbp), %rax
movq (%rax), %rdi
leaq 0xcecf(%rip), %rsi      # 0x1a250
callq 0xcb20
testb $0x1, %al
jne 0xd38c
jmp 0xd395
movb $0x0, -0x41(%rbp)
jmp 0xd57e
movq -0x58(%rbp), %rax
movq (%rax), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0xd486
movb $0x1, -0x172(%rbp)
movl $0x10, %edi
callq 0x4150
movq %rax, -0x270(%rbp)
movq -0x58(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x268(%rbp)
leaq -0x171(%rbp), %rdi
movq %rdi, -0x260(%rbp)
callq 0x44e0
movq -0x268(%rbp), %rsi
movq -0x260(%rbp), %rdx
leaq -0x170(%rbp), %rdi
callq 0xd890
jmp 0xd3fd
movq -0x270(%rbp), %rdi
leaq -0x170(%rbp), %rsi
callq 0xdb00
jmp 0xd412
movq -0x270(%rbp), %rdi
movb $0x0, -0x172(%rbp)
leaq 0x18769(%rip), %rsi     # 0x25b90
leaq 0x762(%rip), %rdx       # 0xdb90
callq 0x44b0
jmp 0xd6b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xd45e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x41a0
leaq -0x171(%rbp), %rdi
callq 0x4320
testb $0x1, -0x172(%rbp)
jne 0xd475
jmp 0xd481
movq -0x270(%rbp), %rdi
callq 0x4200
jmp 0xd696
movq -0x58(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x280(%rbp)
movl $0x208, %edi            # imm = 0x208
callq 0x42c0
movq %rax, -0x278(%rbp)
jmp 0xd4a7
movq -0x278(%rbp), %rdi
movq -0x58(%rbp), %rax
movq (%rax), %rsi
movl $0x4, %edx
callq 0x4510
jmp 0xd4c1
movq -0x278(%rbp), %rsi
leaq -0x190(%rbp), %rdi
movq %rdi, -0x288(%rbp)
callq 0xd740
movq -0x280(%rbp), %rsi
movq -0x288(%rbp), %rdx
leaq -0x188(%rbp), %rdi
callq 0xd770
jmp 0xd4f7
leaq -0x38(%rbp), %rdi
leaq -0x188(%rbp), %rsi
callq 0xd710
jmp 0xd509
leaq -0x188(%rbp), %rdi
callq 0xd7b0
leaq -0x190(%rbp), %rdi
callq 0xd7d0
jmp 0xd57c
movq -0x278(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
movl $0x208, %esi            # imm = 0x208
callq 0x42d0
jmp 0xd696
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xd56b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x188(%rbp), %rdi
callq 0xd7b0
leaq -0x190(%rbp), %rdi
callq 0xd7d0
jmp 0xd696
jmp 0xd57e
jmp 0xd580
jmp 0xd582
jmp 0xd584
jmp 0xd586
jmp 0xd588
movq -0x58(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x58(%rbp)
jmp 0xcc18
leaq -0x38(%rbp), %rdi
callq 0xdbb0
testb $0x1, %al
jne 0xd5ab
jmp 0xd641
movq 0x18a16(%rip), %rsi     # 0x25fc8
leaq -0x1a8(%rbp), %rdi
movq %rdi, -0x290(%rbp)
callq 0xd740
movq -0x290(%rbp), %rdx
leaq 0xcc57(%rip), %rsi      # 0x1a22a
leaq -0x1a0(%rbp), %rdi
callq 0xd770
jmp 0xd5e1
leaq -0x38(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
callq 0xd710
jmp 0xd5f3
leaq -0x1a0(%rbp), %rdi
callq 0xd7b0
leaq -0x1a8(%rbp), %rdi
callq 0xd7d0
jmp 0xd641
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
jmp 0xd633
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x78(%rbp)
movl %eax, -0x7c(%rbp)
leaq -0x1a0(%rbp), %rdi
callq 0xd7b0
leaq -0x1a8(%rbp), %rdi
callq 0xd7d0
jmp 0xd696
leaq -0x40(%rbp), %rdi
callq 0xd9f0
testb $0x1, %al
jne 0xd65e
leaq -0x40(%rbp), %rdi
movq 0x18957(%rip), %rsi     # 0x25fb0
callq 0xdad0
movq -0x1b8(%rbp), %rdi
leaq -0x38(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0xdbf0
jmp 0xd674
leaq -0x40(%rbp), %rdi
callq 0xdc30
leaq -0x38(%rbp), %rdi
callq 0xdc90
movq -0x1b0(%rbp), %rax
addq $0x290, %rsp            # imm = 0x290
popq %rbp
retq
leaq -0x40(%rbp), %rdi
callq 0xdc30
leaq -0x38(%rbp), %rdi
callq 0xdc90
movq -0x78(%rbp), %rdi
callq 0x44d0
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)