// File: /workspace/github_c_makefile_star2_O0/0xADE1A1DE[P]MeasureSuite/bin/arg_parse.c
// Function: parse
int parse(struct opts *dest, int argc, char *argv[]) {
  *dest = default_opts;

  while (1) {
    int this_option_optind = optind ? optind : 1;
    int option_index = 0;

    int option =
        getopt_long(argc, argv, "w:i:o:n:b:cs:", long_options, &option_index);
    if (option == -1)
      break;

    switch (option) {
    case 'c':
      dest->check = 1;
      break;
    case 'w':
      PARSE(dest->arg_width)
      break;
    case 'i':
      PARSE(dest->arg_num_in);
      break;
    case 'o':
      PARSE(dest->arg_num_out);
      break;
    case 'n':
      PARSE(dest->num_batches);
      break;
    case 'b':
      PARSE(dest->batch_size);
      break;
    case 's':
      DEBUG("reading symbol now %s\n", optarg);
      if (optarg == NULL)
        break;
      dest->sym = calloc(strlen(optarg), sizeof(char));
      if (dest->sym == NULL) {
        break;
      }
      strncpy(dest->sym, optarg, strlen(optarg));
      DEBUG("symbol %s\n", optarg);
      break;

    case '?':
      break;

    default:
      printf("?? getopt returned character code 0%o ??\n", option);
    }
  }

  return optind;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq 0x4d72(%rip), %rcx      # 0x70f0
movq %rcx, (%rax)
movq 0x4d70(%rip), %rcx      # 0x70f8
movq %rcx, 0x8(%rax)
movq 0x4d6d(%rip), %rcx      # 0x7100
movq %rcx, 0x10(%rax)
movq 0x4d6a(%rip), %rcx      # 0x7108
movq %rcx, 0x18(%rax)
movq 0x8c27(%rip), %rax      # 0xafd0
cmpl $0x0, (%rax)
je 0x23bc
movq 0x8c1b(%rip), %rax      # 0xafd0
movl (%rax), %eax
movl %eax, -0x28(%rbp)
jmp 0x23c6
movl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x23c6
movl -0x28(%rbp), %eax
movl %eax, -0x1c(%rbp)
movl $0x0, -0x20(%rbp)
movl -0xc(%rbp), %edi
movq -0x18(%rbp), %rsi
leaq 0x4d2f(%rip), %rdx      # 0x7110
leaq 0x86d8(%rip), %rcx      # 0xaac0
leaq -0x20(%rbp), %r8
callq 0x20a0
movl %eax, -0x24(%rbp)
cmpl $-0x1, -0x24(%rbp)
jne 0x23ff
jmp 0x25bb
movl -0x24(%rbp), %eax
addl $-0x3f, %eax
movl %eax, %ecx
movq %rcx, -0x30(%rbp)
subl $0x38, %eax
ja 0x25a5
movq -0x30(%rbp), %rax
leaq 0x4be9(%rip), %rcx      # 0x7008
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rax
movl $0x1, 0x14(%rax)
jmp 0x25b6
movq 0x8b99(%rip), %rax      # 0xafd8
cmpq $0x0, (%rax)
jne 0x244a
jmp 0x25b6
movq 0x8b87(%rip), %rax      # 0xafd8
movq (%rax), %rdi
callq 0x2230
movl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, (%rax)
jmp 0x25b6
movq 0x8b6b(%rip), %rax      # 0xafd8
cmpq $0x0, (%rax)
jne 0x2478
jmp 0x25b6
movq 0x8b59(%rip), %rax      # 0xafd8
movq (%rax), %rdi
callq 0x2230
movl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x4(%rax)
jmp 0x25b6
movq 0x8b3c(%rip), %rax      # 0xafd8
cmpq $0x0, (%rax)
jne 0x24a7
jmp 0x25b6
movq 0x8b2a(%rip), %rax      # 0xafd8
movq (%rax), %rdi
callq 0x2230
movl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x8(%rax)
jmp 0x25b6
movq 0x8b0d(%rip), %rax      # 0xafd8
cmpq $0x0, (%rax)
jne 0x24d6
jmp 0x25b6
movq 0x8afb(%rip), %rax      # 0xafd8
movq (%rax), %rdi
callq 0x2230
movl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0xc(%rax)
jmp 0x25b6
movq 0x8ade(%rip), %rax      # 0xafd8
cmpq $0x0, (%rax)
jne 0x2505
jmp 0x25b6
movq 0x8acc(%rip), %rax      # 0xafd8
movq (%rax), %rdi
callq 0x2230
movl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x10(%rax)
jmp 0x25b6
movq 0x8aaf(%rip), %rax      # 0xafd8
cmpq $0x0, (%rax)
jne 0x2534
jmp 0x25b6
movq 0x8a9d(%rip), %rax      # 0xafd8
movq (%rax), %rdi
callq 0x2080
movq %rax, %rdi
movl $0x1, %esi
callq 0x2150
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x8(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jne 0x2568
jmp 0x25b6
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x40(%rbp)
movq 0x8a5d(%rip), %rax      # 0xafd8
movq (%rax), %rax
movq %rax, -0x38(%rbp)
movq 0x8a4f(%rip), %rax      # 0xafd8
movq (%rax), %rdi
callq 0x2080
movq -0x40(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq %rax, %rdx
callq 0x2060
jmp 0x25b6
jmp 0x25b6
movl -0x24(%rbp), %esi
leaq 0x4b6f(%rip), %rdi      # 0x711e
movb $0x0, %al
callq 0x20b0
jmp 0x23a2
movq 0x8a0e(%rip), %rax      # 0xafd0
movl (%rax), %eax
addq $0x40, %rsp
popq %rbp
retq
nopw (%rax,%rax)