// File: hzeller[P]gcode-multi-shell-extrude/config-values.cc
// Function: ParameterUsage(char const*)
int ParameterUsage(const char *progname) {
  fprintf(stderr, "usage: %s [options]\n", progname);
  if (!sRegisteredParameters)
    return 1;
  const int kIndentBetweenOptionAndHelp = 26;
  fprintf(stderr, "Synopsis:\n... Long option%*s[short]: <help>\n",
          kIndentBetweenOptionAndHelp - 16, "");
  for (ParamList::const_iterator it = sRegisteredParameters->begin();
       it != sRegisteredParameters->end(); ++it) {
    int indent = kIndentBetweenOptionAndHelp;
    const Parameter *const p = *it;
    if (p->option_name == NULL && p->option_char == 0) {
      // This is a headline.
      fprintf(stderr, "\n[ %s ]\n", p->helptext);
      continue;
    }
    if (p->option_name) {
      fprintf(stderr, "    --%s", p->option_name);
      indent -= strlen(p->option_name);
      if (p->RequiresValue()) {
        fprintf(stderr, " <value>");
        indent -= strlen(" <value>");
      }
    }
    if (p->option_char) indent -=4;
    fprintf(stderr, "%*s", indent, "");
    if (p->option_char) {
      fprintf(stderr, "[-%c]", p->option_char);
    }
    fprintf(stderr, ": %s (default: '%s')\n", p->helptext,
            p->ToString().c_str());
  }
  return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x10(%rbp)
movq 0x2b5b5(%rip), %rax     # 0x3afd8
movq (%rax), %rdi
movq -0x10(%rbp), %rdx
leaq 0x1cbf5(%rip), %rsi     # 0x2c626
movb $0x0, %al
callq 0x3390
cmpq $0x0, 0x2b838(%rip)     # 0x3b278
jne 0xfa4e
movl $0x1, -0x4(%rbp)
jmp 0xfc51
movl $0x1a, -0x14(%rbp)
movq 0x2b57c(%rip), %rax     # 0x3afd8
movq (%rax), %rdi
leaq 0x1cbd5(%rip), %rsi     # 0x2c63b
movl $0xa, %edx
leaq 0x1c598(%rip), %rcx     # 0x2c00a
movb $0x0, %al
callq 0x3390
movq 0x2b7f8(%rip), %rdi     # 0x3b278
callq 0xffc0
movq %rax, -0x28(%rbp)
leaq -0x20(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0xfff0
movq 0x2b7db(%rip), %rdi     # 0x3b278
callq 0x10070
movq %rax, -0x30(%rbp)
leaq -0x20(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x10030
testb $0x1, %al
jne 0xfabc
jmp 0xfc4a
movl $0x1a, -0x34(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x100a0
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0xfb10
movq -0x40(%rbp), %rax
movsbl 0x10(%rax), %eax
cmpl $0x0, %eax
jne 0xfb10
movq 0x2b4e6(%rip), %rax     # 0x3afd8
movq (%rax), %rdi
movq -0x40(%rbp), %rax
movq 0x18(%rax), %rdx
leaq 0x1cb64(%rip), %rsi     # 0x2c668
movb $0x0, %al
callq 0x3390
jmp 0xfc3c
movq -0x40(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0xfb8a
movq 0x2b4b6(%rip), %rax     # 0x3afd8
movq (%rax), %rdi
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0x1cb3d(%rip), %rsi     # 0x2c671
movb $0x0, %al
callq 0x3390
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x3100
movq %rax, %rcx
movslq -0x34(%rbp), %rax
subq %rcx, %rax
movl %eax, -0x34(%rbp)
movq -0x40(%rbp), %rdi
movq (%rdi), %rax
callq *0x20(%rax)
testb $0x1, %al
jne 0xfb65
jmp 0xfb88
movq 0x2b46c(%rip), %rax     # 0x3afd8
movq (%rax), %rdi
leaq 0x1cb04(%rip), %rsi     # 0x2c67a
movb $0x0, %al
callq 0x3390
movslq -0x34(%rbp), %rax
subq $0x8, %rax
movl %eax, -0x34(%rbp)
jmp 0xfb8a
movq -0x40(%rbp), %rax
cmpb $0x0, 0x10(%rax)
je 0xfb9d
movl -0x34(%rbp), %eax
subl $0x4, %eax
movl %eax, -0x34(%rbp)
movq 0x2b434(%rip), %rax     # 0x3afd8
movq (%rax), %rdi
movl -0x34(%rbp), %edx
leaq 0x1cad2(%rip), %rsi     # 0x2c683
leaq 0x1c452(%rip), %rcx     # 0x2c00a
movb $0x0, %al
callq 0x3390
movq -0x40(%rbp), %rax
cmpb $0x0, 0x10(%rax)
je 0xfbe9
movq 0x2b408(%rip), %rax     # 0x3afd8
movq (%rax), %rdi
movq -0x40(%rbp), %rax
movsbl 0x10(%rax), %edx
leaq 0x1caa5(%rip), %rsi     # 0x2c687
movb $0x0, %al
callq 0x3390
movq 0x2b3e8(%rip), %rax     # 0x3afd8
movq (%rax), %rax
movq %rax, -0x70(%rbp)
movq -0x40(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x68(%rbp)
movq -0x40(%rbp), %rsi
movq (%rsi), %rax
leaq -0x60(%rbp), %rdi
callq *0x18(%rax)
leaq -0x60(%rbp), %rdi
callq 0x30e0
movq -0x70(%rbp), %rdi
movq -0x68(%rbp), %rdx
movq %rax, %rcx
leaq 0x1ca61(%rip), %rsi     # 0x2c68d
movb $0x0, %al
callq 0x3390
leaq -0x60(%rbp), %rdi
callq 0x3180
leaq -0x20(%rbp), %rdi
callq 0x100c0
jmp 0xfa96
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x70, %rsp
popq %rbp
retq
nopw (%rax,%rax)