// File: /workspace/github_c_makefile_star2_O0/barabo[P]advanced-shell-history/src/flags.cpp
// Function: flag::Flag::Flag(char const*, char, char const*, bool)
Flag::Flag(const char * ln, const char sn, const char * ds, const bool ha)
  : long_name(ln), short_name(sn), description(ds), has_arg(ha)
{
  Flag::instances().push_back(this);

  // Map the names to this Flag object (if names are valid).
  if (short_name && isgraph(short_name))
    safe_add(Flag::short_names(), short_name, this);
  if (all_isgraph(long_name)) {
    safe_add(Flag::long_names(), string(long_name), this);
  } else {
    cerr << "WARNING: Flag long name '" << long_name
         << "' is not legal and will be ignored." << endl;
  }

  // Keep track of the longest name for later help output formatting.
  string temp(long_name);
  if (has_arg) {
    temp += "=VALUE";
  }
  if (temp.length() > longest_long_name) {
    longest_long_name = temp.length();
  }

  // Create an option struct and add it to the list.
  struct option opt = {ln, has_arg ? 1 : 0, 0, sn};
  Flag::options().push_back(opt);

  // Add the short_name to a flag_code string.
  if (short_name) {
     if (isgraph(short_name)) {
      Flag::codes().push_back(short_name);
      if (has_arg) {
        Flag::codes().push_back(':');
      }
    } else {
      cerr << "WARNING: Flag short name character '" << short_name
           << "' is not legal and will be ignored." << endl;
    }
  }
}

// Assembly:
subq $0x128, %rsp            # imm = 0x128
movb %r8b, %al
movq %rdi, 0x120(%rsp)
movq %rsi, 0x118(%rsp)
movb %dl, 0x117(%rsp)
movq %rcx, 0x108(%rsp)
andb $0x1, %al
movb %al, 0x107(%rsp)
movq 0x120(%rsp), %rax
movq %rax, 0x70(%rsp)
leaq 0x387ea(%rip), %rcx     # 0xcf9f0
addq $0x10, %rcx
movq %rcx, (%rax)
movq 0x118(%rsp), %rcx
movq %rcx, 0x8(%rax)
movb 0x117(%rsp), %cl
movb %cl, 0x10(%rax)
movq 0x108(%rsp), %rcx
movq %rcx, 0x18(%rax)
movb 0x107(%rsp), %cl
andb $0x1, %cl
movb %cl, 0x20(%rax)
callq 0x97eb0
movq %rax, %rdi
movq 0x70(%rsp), %rax
movq %rax, 0xf8(%rsp)
leaq 0xf8(%rsp), %rsi
callq 0x98610
movq 0x70(%rsp), %rax
cmpb $0x0, 0x10(%rax)
je 0x97292
movq 0x70(%rsp), %rax
movsbl 0x10(%rax), %edi
callq 0x8390
cmpl $0x0, %eax
je 0x97292
callq 0x98430
movq 0x70(%rsp), %rdx
movq %rax, %rdi
movsbl 0x10(%rdx), %esi
callq 0x98650
movq 0x70(%rsp), %rax
movq 0x8(%rax), %rdi
callq 0x97140
testb $0x1, %al
jne 0x972a9
jmp 0x97376
callq 0x98210
movq %rax, %rcx
movq 0x70(%rsp), %rax
movq %rcx, 0x58(%rsp)
movq 0x8(%rax), %rax
movq %rax, 0x60(%rsp)
leaq 0xd7(%rsp), %rdi
movq %rdi, 0x68(%rsp)
callq 0x87f0
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
leaq 0xd8(%rsp), %rdi
callq 0x85b0
jmp 0x972ef
movq 0x70(%rsp), %rdx
movq 0x58(%rsp), %rdi
leaq 0xd8(%rsp), %rsi
callq 0x98750
jmp 0x97308
leaq 0xd8(%rsp), %rdi
callq 0x88f8
jmp 0x97317
leaq 0xd7(%rsp), %rdi
callq 0x84a0
jmp 0x973b8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
jmp 0x97364
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
leaq 0xd8(%rsp), %rdi
callq 0x88f8
jmp 0x97362
jmp 0x97364
leaq 0xd7(%rsp), %rdi
callq 0x84a0
jmp 0x975f1
movq 0x38c73(%rip), %rdi     # 0xcfff0
leaq 0x1b694(%rip), %rsi     # 0xb2a18
callq 0x8400
movq %rax, %rdi
movq 0x70(%rsp), %rax
movq 0x8(%rax), %rsi
callq 0x8400
movq %rax, %rdi
leaq 0x1b68e(%rip), %rsi     # 0xb2a32
callq 0x8400
movq %rax, %rdi
movq 0x38bd5(%rip), %rsi     # 0xcff88
callq 0x8470
movq 0x70(%rsp), %rax
movq 0x8(%rax), %rax
movq %rax, 0x48(%rsp)
leaq 0x9f(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0x87f0
movq 0x48(%rsp), %rsi
movq 0x50(%rsp), %rdx
leaq 0xa0(%rsp), %rdi
callq 0x85b0
jmp 0x973f1
leaq 0x9f(%rsp), %rdi
callq 0x84a0
movq 0x70(%rsp), %rax
testb $0x1, 0x20(%rax)
je 0x9746d
leaq 0x1b646(%rip), %rsi     # 0xb2a56
leaq 0xa0(%rsp), %rdi
callq 0x83c0
jmp 0x9741f
jmp 0x9746d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
leaq 0x9f(%rsp), %rdi
callq 0x84a0
jmp 0x975f1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xc8(%rsp)
movl %eax, 0xc4(%rsp)
leaq 0xa0(%rsp), %rdi
callq 0x88f8
jmp 0x975ef
leaq 0xa0(%rsp), %rdi
callq 0x8670
movq %rax, 0x40(%rsp)
jmp 0x97481
movq 0x40(%rsp), %rax
movl 0x3b0c0(%rip), %ecx     # 0xd254c
cmpq %rcx, %rax
jbe 0x974b0
leaq 0xa0(%rsp), %rdi
callq 0x8670
movq %rax, 0x38(%rsp)
jmp 0x974a5
movq 0x38(%rsp), %rax
movl %eax, 0x3b09c(%rip)     # 0xd254c
movq 0x70(%rsp), %rax
movq 0x118(%rsp), %rcx
movq %rcx, 0x78(%rsp)
movzbl 0x20(%rax), %eax
andl $0x1, %eax
movl %eax, 0x80(%rsp)
movq $0x0, 0x88(%rsp)
movsbl 0x117(%rsp), %eax
movl %eax, 0x90(%rsp)
callq 0x98020
movq %rax, 0x30(%rsp)
jmp 0x974f7
movq 0x30(%rsp), %rdi
leaq 0x78(%rsp), %rsi
callq 0x98850
jmp 0x97508
movq 0x70(%rsp), %rax
cmpb $0x0, 0x10(%rax)
je 0x975da
movq 0x70(%rsp), %rax
movsbl 0x10(%rax), %edi
callq 0x8390
cmpl $0x0, %eax
je 0x97577
callq 0x98180
movq %rax, 0x28(%rsp)
jmp 0x97536
movq 0x28(%rsp), %rdi
movq 0x70(%rsp), %rax
movsbl 0x10(%rax), %esi
callq 0x8310
jmp 0x9754b
movq 0x70(%rsp), %rax
testb $0x1, 0x20(%rax)
je 0x97575
callq 0x98180
movq %rax, 0x20(%rsp)
jmp 0x97562
movq 0x20(%rsp), %rdi
movl $0x3a, %esi
callq 0x8310
jmp 0x97573
jmp 0x97575
jmp 0x975d8
movq 0x38a72(%rip), %rdi     # 0xcfff0
leaq 0x1b4d8(%rip), %rsi     # 0xb2a5d
callq 0x8400
movq %rax, 0x18(%rsp)
jmp 0x97591
movq 0x18(%rsp), %rdi
movq 0x70(%rsp), %rax
movsbl 0x10(%rax), %esi
callq 0x8500
movq %rax, 0x10(%rsp)
jmp 0x975ab
movq 0x10(%rsp), %rdi
leaq 0x1b47b(%rip), %rsi     # 0xb2a32
callq 0x8400
movq %rax, 0x8(%rsp)
jmp 0x975c3
movq 0x8(%rsp), %rdi
movq 0x389b9(%rip), %rsi     # 0xcff88
callq 0x8470
jmp 0x975d6
jmp 0x975d8
jmp 0x975da
leaq 0xa0(%rsp), %rdi
callq 0x88f8
addq $0x128, %rsp            # imm = 0x128
retq
jmp 0x975f1
movq 0xc8(%rsp), %rdi
callq 0x87d0
movq %rax, %rdi
callq 0x8cf60
nopw %cs:(%rax,%rax)