// File: afborchert[P]fmt/./printf.hpp
// Function: fmt::impl::format_segment<char> fmt::impl::parse_format_segment<char>(char const*, long)
inline format_segment<CharT>
parse_format_segment(const CharT* format, integer arg_index) {
   format_segment<CharT> result;
   if (!format) return result;

   /* skip everything until we encounter a placeholder
      or the end of the format string */
   result.beginp = format;
   CharT ch = *format;
   while (ch && ch != '%') {
      ch = *++format;
   }
   result.endp = format;

   /* end of format string reached? */
   if (!ch) {
      result.valid = true;
      return result;
   }

   ch = *++format;
   if (!ch) return result; /* format ends with '%' */

   /* process %% */
   if (ch == '%') {
      result.valid = true;
      ++result.endp; /* include first '%' */
      result.nextp = format+1;
      return result;
   }

   /* check if we have an argument index */
   if (ch >= '1' && ch <= '9') {
      const CharT* begin = format;
      integer index;
      if (parse_integer(format, index) && *format == '$') {
	 /* accept argument index */
	 result.value_index = index - 1;
	 ch = *++format;
      } else {
	 /* reset parsing */
	 format = begin; ch = *format;
      }
   }

   /* process conversion flags */
   while (ch == '\'' || ch == '-' || ch == '0' || ch == '+' ||
	 ch == ' ' || ch == '#') {
      switch (ch) {
	 case '\'':
	    result.flags |= grouping_flag;
	    break;
	 case '-':
	    result.flags |= minus_flag;
	    result.fmtflags |= std::ios_base::left;
	    break;
	 case '0': result.flags |= zero_fill; break;
	 case '+':
	    result.flags |= plus_flag;
	    result.fmtflags |= std::ios_base::showpos;
	    break;
	 case ' ': result.flags |= space_flag; break;
	 case '#':
	    result.flags |= special_flag;
	    result.fmtflags |= (std::ios_base::showbase |
	       std::ios_base::showpoint);
	    break;
      }
      ch = *++format;
   }

   if ((result.flags & minus_flag) && (result.flags & zero_fill)) {
      /* if the 0 and - flags both appear, the 0 flag is ignored */
      result.flags &= ~zero_fill;
   }
   if ((result.flags & plus_flag) && (result.flags & space_flag)) {
      /* if the ' ' and '+' flags both appear,
	 the <space> flag shall be ignored */
      result.flags &= ~space_flag;
   }
   /* minimum field width */
   std::streamsize width = 0;
   if (ch == '*') {
      result.flags |= dyn_width; ch = *++format;
      if (ch >= '1' && ch <= '9') {
	 integer index;
	 if (!parse_integer(format, index) || *format != '$') return result;
	 ch = *++format;
	 result.width_index = index - 1;
      } else {
	 result.width_index = arg_index + result.nof_args;
      }
      result.nof_args++;
   } else {
      if (!parse_integer(format, width)) return result;
      ch = *format;
      result.width = width;
   }
   /* precision */
   if (ch == '.') {
      result.flags |= precision;
      ch = *++format;
      std::streamsize precision = 0;
      if (ch == '*') {
	 result.flags |= dyn_precision; ch = *++format;
	 if (ch >= '1' && ch <= '9') {
	    integer index;
	    if (!parse_integer(format, index) || *format != '$') return result;
	    ch = *++format;
	    result.precision_index = index - 1;
	 } else {
	    result.precision_index = arg_index + result.nof_args;
	 }
	 result.nof_args++;
      } else {
	 if (ch >= '0' && ch <= '9') {
	    if (!parse_integer(format, precision)) return result;
	    ch = *format;
	 }
	 result.precision = precision;
      }
      if (result.flags & zero_fill) {
	 /* if a precision is specified, the 0 flag is ignored */
	 result.flags &= ~zero_fill;
      }
   }
   /* skip size specification */
   while (ch == 'l' || ch == 'L' || ch == 'h' ||
	 ch == 'j' || ch == 'z' || ch == 't') {
      ch = *++format;
   }
   /* conversion operation */
   result.conversion = ch;
   switch (ch) {
      case 'u':
	 result.flags |= is_unsigned;
	 FMT_PRINTF_FALLTHROUGH
      case 'd':
      case 'i':
	 result.flags |= is_integer;
	 result.base = 10;
	 break;
      case 'o':
	 result.flags |= is_integer;
	 result.base = 8;
	 break;
      case 'x':
	 result.flags |= is_integer;
	 result.base = 16;
	 break;
      case 'X':
	 result.fmtflags |= std::ios_base::uppercase;
	 result.flags |= is_integer;
	 result.base = 16;
	 break;
      case 'f':
	 result.fmtflags |= std::ios_base::fixed;
	 result.base = 10;
	 break;
      case 'F':
	 result.fmtflags |= (std::ios_base::fixed | std::ios_base::uppercase);
	 result.flags |= toupper;
	 result.base = 10;
	 break;
      case 'e':
	 result.fmtflags |= std::ios_base::scientific;
	 result.base = 10;
	 break;
      case 'E':
	 result.fmtflags |=
	    std::ios_base::scientific | std::ios_base::uppercase;
	 result.flags |= toupper;
	 result.base = 10;
	 break;
      case 'g':
	 /* default behaviour */
	 result.base = 10;
	 break;
      case 'G':
	 result.fmtflags |= std::ios_base::uppercase;
	 result.flags |= toupper;
	 result.base = 10;
	 break;
      case 'a':
	 result.fmtflags |= std::ios_base::scientific | std::ios_base::fixed;
	 result.base = 16;
	 break;
      case 'A':
	 result.fmtflags |= std::ios_base::scientific |
	    std::ios_base::fixed | std::ios_base::uppercase;
	 result.flags |= toupper;
	 result.base = 16;
	 break;
      case 'p':
	 result.base = 16;
	 result.flags |= is_pointer;
	 break;
      case 'C':
	 /* POSIX extension, equivalent to 'lc' */
      case 'c':
	 result.flags |= is_charval;
	 break;
      case 'S':
	 /* POSIX extension, equivalent to 'ls' */
      case 's':
	 /* when boolean values are printed with %s, we get
	    more readable results; idea taken from N3506 */
	 result.fmtflags |= std::ios_base::boolalpha;
	 break;
      case 'n':
	 /* nothing to be done here */
	 break;
      default:
	 return result;
   }
   if ((result.flags & grouping_flag) && (result.base != 10)) {
      /* grouping is just supported for %i, %d, %u, %f, %F,
         %g, and %G, i.e. all cases with base == 10 */
      result.flags &= ~grouping_flag;
   }
   result.valid = true;
   if (result.value_index < 0) {
      result.value_index = arg_index + result.nof_args;
   }
   result.nof_args++;
   ch = *++format;
   if (ch) {
      result.nextp = format;
   }
   return result;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x58(%rbp)
movq %rdi, %rax
movq %rax, -0x50(%rbp)
movq %rsi, -0x8(%rbp)
movq %rdx, -0x10(%rbp)
callq 0x11910
cmpq $0x0, -0x8(%rbp)
jne 0x1050f
jmp 0x10da1
movq -0x58(%rbp), %rax
movq -0x8(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0x8(%rbp), %rax
movb (%rax), %al
movb %al, -0x11(%rbp)
xorl %eax, %eax
cmpb $0x0, -0x11(%rbp)
movb %al, -0x59(%rbp)
je 0x1053c
movsbl -0x11(%rbp), %eax
cmpl $0x25, %eax
setne %al
movb %al, -0x59(%rbp)
movb -0x59(%rbp), %al
testb $0x1, %al
jne 0x10545
jmp 0x1055c
movq -0x8(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x8(%rbp)
movb 0x1(%rax), %al
movb %al, -0x11(%rbp)
jmp 0x10524
movq -0x58(%rbp), %rax
movq -0x8(%rbp), %rcx
movq %rcx, 0x10(%rax)
cmpb $0x0, -0x11(%rbp)
jne 0x1057a
movq -0x58(%rbp), %rax
movb $0x1, (%rax)
jmp 0x10da1
movq -0x8(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x8(%rbp)
movb 0x1(%rax), %al
movb %al, -0x11(%rbp)
cmpb $0x0, -0x11(%rbp)
jne 0x1059a
jmp 0x10da1
movsbl -0x11(%rbp), %eax
cmpl $0x25, %eax
jne 0x105c7
movq -0x58(%rbp), %rax
movb $0x1, (%rax)
movq 0x10(%rax), %rcx
addq $0x1, %rcx
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rcx
addq $0x1, %rcx
movq %rcx, 0x18(%rax)
jmp 0x10da1
movsbl -0x11(%rbp), %eax
cmpl $0x31, %eax
jl 0x1063a
movsbl -0x11(%rbp), %eax
cmpl $0x39, %eax
jg 0x1063a
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
leaq -0x8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
callq 0x11980
testb $0x1, %al
jne 0x105f4
jmp 0x10627
movq -0x8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x24, %eax
jne 0x10627
movq -0x58(%rbp), %rax
movq -0x28(%rbp), %rcx
subq $0x1, %rcx
movq %rcx, 0x58(%rax)
movq -0x8(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x8(%rbp)
movb 0x1(%rax), %al
movb %al, -0x11(%rbp)
jmp 0x10638
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
movb (%rax), %al
movb %al, -0x11(%rbp)
jmp 0x1063a
jmp 0x1063c
movsbl -0x11(%rbp), %ecx
movb $0x1, %al
cmpl $0x27, %ecx
movb %al, -0x5a(%rbp)
je 0x1068f
movsbl -0x11(%rbp), %ecx
movb $0x1, %al
cmpl $0x2d, %ecx
movb %al, -0x5a(%rbp)
je 0x1068f
movsbl -0x11(%rbp), %ecx
movb $0x1, %al
cmpl $0x30, %ecx
movb %al, -0x5a(%rbp)
je 0x1068f
movsbl -0x11(%rbp), %ecx
movb $0x1, %al
cmpl $0x2b, %ecx
movb %al, -0x5a(%rbp)
je 0x1068f
movsbl -0x11(%rbp), %ecx
movb $0x1, %al
cmpl $0x20, %ecx
movb %al, -0x5a(%rbp)
je 0x1068f
movsbl -0x11(%rbp), %eax
cmpl $0x23, %eax
sete %al
movb %al, -0x5a(%rbp)
movb -0x5a(%rbp), %al
testb $0x1, %al
jne 0x1069b
jmp 0x1078b
movsbl -0x11(%rbp), %eax
addl $-0x20, %eax
movl %eax, %ecx
movq %rcx, -0x68(%rbp)
subl $0x10, %eax
ja 0x10771
movq -0x68(%rbp), %rax
leaq 0x65b24(%rip), %rcx     # 0x761e0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %ecx
orl $0x2000, %ecx           # imm = 0x2000
movw %cx, 0x24(%rax)
jmp 0x10771
movq -0x58(%rbp), %rdi
movzwl 0x24(%rdi), %eax
orl $0x800, %eax            # imm = 0x800
movw %ax, 0x24(%rdi)
addq $0x20, %rdi
movl $0x20, %esi
callq 0xfa00
jmp 0x10771
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %ecx
orl $0x400, %ecx            # imm = 0x400
movw %cx, 0x24(%rax)
jmp 0x10771
movq -0x58(%rbp), %rdi
movzwl 0x24(%rdi), %eax
orl $0x40, %eax
movw %ax, 0x24(%rdi)
addq $0x20, %rdi
movl $0x800, %esi            # imm = 0x800
callq 0xfa00
jmp 0x10771
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %ecx
orl $0x20, %ecx
movw %cx, 0x24(%rax)
jmp 0x10771
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %ecx
orl $0x1000, %ecx           # imm = 0x1000
movw %cx, 0x24(%rax)
movl $0x200, %edi            # imm = 0x200
movl $0x400, %esi            # imm = 0x400
callq 0xd490
movq -0x58(%rbp), %rdi
movl %eax, %esi
addq $0x20, %rdi
callq 0xfa00
movq -0x8(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x8(%rbp)
movb 0x1(%rax), %al
movb %al, -0x11(%rbp)
jmp 0x1063c
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
je 0x107c1
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %eax
andl $0x400, %eax            # imm = 0x400
cmpl $0x0, %eax
je 0x107c1
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %ecx
andl $0xfffffbff, %ecx       # imm = 0xFFFFFBFF
movw %cx, 0x24(%rax)
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x107f0
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %eax
andl $0x20, %eax
cmpl $0x0, %eax
je 0x107f0
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %ecx
andl $-0x21, %ecx
movw %cx, 0x24(%rax)
movq $0x0, -0x30(%rbp)
movsbl -0x11(%rbp), %eax
cmpl $0x2a, %eax
jne 0x108ae
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %ecx
orl $0x80, %ecx
movw %cx, 0x24(%rax)
movq -0x8(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x8(%rbp)
movb 0x1(%rax), %al
movb %al, -0x11(%rbp)
movsbl -0x11(%rbp), %eax
cmpl $0x31, %eax
jl 0x10889
movsbl -0x11(%rbp), %eax
cmpl $0x39, %eax
jg 0x10889
leaq -0x8(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x11980
testb $0x1, %al
jne 0x10851
jmp 0x1085d
movq -0x8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x24, %eax
je 0x10862
jmp 0x10da1
movq -0x58(%rbp), %rax
movq -0x8(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x8(%rbp)
movb 0x1(%rcx), %cl
movb %cl, -0x11(%rbp)
movq -0x38(%rbp), %rcx
subq $0x1, %rcx
movq %rcx, 0x48(%rax)
jmp 0x1089c
movq -0x58(%rbp), %rax
movq -0x10(%rbp), %rcx
movzwl 0x30(%rax), %edx
addq %rdx, %rcx
movq %rcx, 0x48(%rax)
movq -0x58(%rbp), %rax
movw 0x30(%rax), %cx
addw $0x1, %cx
movw %cx, 0x30(%rax)
jmp 0x108d9
leaq -0x8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x11980
testb $0x1, %al
jne 0x108c4
jmp 0x10da1
movq -0x58(%rbp), %rax
movq -0x8(%rbp), %rcx
movb (%rcx), %cl
movb %cl, -0x11(%rbp)
movq -0x30(%rbp), %rcx
movq %rcx, 0x38(%rax)
movsbl -0x11(%rbp), %eax
cmpl $0x2e, %eax
jne 0x10a2e
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %ecx
orl $0x100, %ecx            # imm = 0x100
movw %cx, 0x24(%rax)
movq -0x8(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x8(%rbp)
movb 0x1(%rax), %al
movb %al, -0x11(%rbp)
movq $0x0, -0x40(%rbp)
movsbl -0x11(%rbp), %eax
cmpl $0x2a, %eax
jne 0x109cb
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %ecx
orl $0x200, %ecx            # imm = 0x200
movw %cx, 0x24(%rax)
movq -0x8(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x8(%rbp)
movb 0x1(%rax), %al
movb %al, -0x11(%rbp)
movsbl -0x11(%rbp), %eax
cmpl $0x31, %eax
jl 0x109a6
movsbl -0x11(%rbp), %eax
cmpl $0x39, %eax
jg 0x109a6
leaq -0x8(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x11980
testb $0x1, %al
jne 0x1096e
jmp 0x1097a
movq -0x8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x24, %eax
je 0x1097f
jmp 0x10da1
movq -0x58(%rbp), %rax
movq -0x8(%rbp), %rcx
movq %rcx, %rdx
addq $0x1, %rdx
movq %rdx, -0x8(%rbp)
movb 0x1(%rcx), %cl
movb %cl, -0x11(%rbp)
movq -0x48(%rbp), %rcx
subq $0x1, %rcx
movq %rcx, 0x50(%rax)
jmp 0x109b9
movq -0x58(%rbp), %rax
movq -0x10(%rbp), %rcx
movzwl 0x30(%rax), %edx
addq %rdx, %rcx
movq %rcx, 0x50(%rax)
movq -0x58(%rbp), %rax
movw 0x30(%rax), %cx
addw $0x1, %cx
movw %cx, 0x30(%rax)
jmp 0x10a08
movsbl -0x11(%rbp), %eax
cmpl $0x30, %eax
jl 0x109fc
movsbl -0x11(%rbp), %eax
cmpl $0x39, %eax
jg 0x109fc
leaq -0x8(%rbp), %rdi
leaq -0x40(%rbp), %rsi
callq 0x11980
testb $0x1, %al
jne 0x109f3
jmp 0x10da1
movq -0x8(%rbp), %rax
movb (%rax), %al
movb %al, -0x11(%rbp)
movq -0x58(%rbp), %rax
movq -0x40(%rbp), %rcx
movq %rcx, 0x40(%rax)
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %eax
andl $0x400, %eax            # imm = 0x400
cmpl $0x0, %eax
je 0x10a2c
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %ecx
andl $0xfffffbff, %ecx       # imm = 0xFFFFFBFF
movw %cx, 0x24(%rax)
jmp 0x10a2e
jmp 0x10a30
movsbl -0x11(%rbp), %ecx
movb $0x1, %al
cmpl $0x6c, %ecx
movb %al, -0x69(%rbp)
je 0x10a83
movsbl -0x11(%rbp), %ecx
movb $0x1, %al
cmpl $0x4c, %ecx
movb %al, -0x69(%rbp)
je 0x10a83
movsbl -0x11(%rbp), %ecx
movb $0x1, %al
cmpl $0x68, %ecx
movb %al, -0x69(%rbp)
je 0x10a83
movsbl -0x11(%rbp), %ecx
movb $0x1, %al
cmpl $0x6a, %ecx
movb %al, -0x69(%rbp)
je 0x10a83
movsbl -0x11(%rbp), %ecx
movb $0x1, %al
cmpl $0x7a, %ecx
movb %al, -0x69(%rbp)
je 0x10a83
movsbl -0x11(%rbp), %eax
cmpl $0x74, %eax
sete %al
movb %al, -0x69(%rbp)
movb -0x69(%rbp), %al
testb $0x1, %al
jne 0x10a8c
jmp 0x10aa3
movq -0x8(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x8(%rbp)
movb 0x1(%rax), %al
movb %al, -0x11(%rbp)
jmp 0x10a30
movq -0x58(%rbp), %rax
movb -0x11(%rbp), %cl
movb %cl, 0x60(%rax)
movsbl -0x11(%rbp), %eax
addl $-0x41, %eax
movl %eax, %ecx
movq %rcx, -0x78(%rbp)
subl $0x37, %eax
ja 0x10d13
movq -0x78(%rbp), %rax
leaq 0x65632(%rip), %rcx     # 0x76100
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %ecx
orl $0x8, %ecx
movw %cx, 0x24(%rax)
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %ecx
orl $0x4, %ecx
movw %cx, 0x24(%rax)
movq $0xa, 0x28(%rax)
jmp 0x10d18
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %ecx
orl $0x4, %ecx
movw %cx, 0x24(%rax)
movq $0x8, 0x28(%rax)
jmp 0x10d18
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %ecx
orl $0x4, %ecx
movw %cx, 0x24(%rax)
movq $0x10, 0x28(%rax)
jmp 0x10d18
movq -0x58(%rbp), %rdi
addq $0x20, %rdi
movl $0x4000, %esi           # imm = 0x4000
callq 0xfa00
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %ecx
orl $0x4, %ecx
movw %cx, 0x24(%rax)
movq $0x10, 0x28(%rax)
jmp 0x10d18
movq -0x58(%rbp), %rdi
addq $0x20, %rdi
movl $0x4, %esi
callq 0xfa00
movq -0x58(%rbp), %rax
movq $0xa, 0x28(%rax)
jmp 0x10d18
movl $0x4, %edi
movl $0x4000, %esi           # imm = 0x4000
callq 0xd490
movq -0x58(%rbp), %rdi
movl %eax, %esi
addq $0x20, %rdi
callq 0xfa00
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %ecx
orl $0x10, %ecx
movw %cx, 0x24(%rax)
movq $0xa, 0x28(%rax)
jmp 0x10d18
movq -0x58(%rbp), %rdi
addq $0x20, %rdi
movl $0x100, %esi            # imm = 0x100
callq 0xfa00
movq -0x58(%rbp), %rax
movq $0xa, 0x28(%rax)
jmp 0x10d18
movl $0x100, %edi            # imm = 0x100
movl $0x4000, %esi           # imm = 0x4000
callq 0xd490
movq -0x58(%rbp), %rdi
movl %eax, %esi
addq $0x20, %rdi
callq 0xfa00
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %ecx
orl $0x10, %ecx
movw %cx, 0x24(%rax)
movq $0xa, 0x28(%rax)
jmp 0x10d18
movq -0x58(%rbp), %rax
movq $0xa, 0x28(%rax)
jmp 0x10d18
movq -0x58(%rbp), %rdi
addq $0x20, %rdi
movl $0x4000, %esi           # imm = 0x4000
callq 0xfa00
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %ecx
orl $0x10, %ecx
movw %cx, 0x24(%rax)
movq $0xa, 0x28(%rax)
jmp 0x10d18
movl $0x100, %edi            # imm = 0x100
movl $0x4, %esi
callq 0xd490
movq -0x58(%rbp), %rdi
movl %eax, %esi
addq $0x20, %rdi
callq 0xfa00
movq -0x58(%rbp), %rax
movq $0x10, 0x28(%rax)
jmp 0x10d18
movl $0x100, %edi            # imm = 0x100
movl $0x4, %esi
callq 0xd490
movl %eax, %edi
movl $0x4000, %esi           # imm = 0x4000
callq 0xd490
movq -0x58(%rbp), %rdi
movl %eax, %esi
addq $0x20, %rdi
callq 0xfa00
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %ecx
orl $0x10, %ecx
movw %cx, 0x24(%rax)
movq $0x10, 0x28(%rax)
jmp 0x10d18
movq -0x58(%rbp), %rax
movq $0x10, 0x28(%rax)
movzwl 0x24(%rax), %ecx
orl $0x1, %ecx
movw %cx, 0x24(%rax)
jmp 0x10d18
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %ecx
orl $0x2, %ecx
movw %cx, 0x24(%rax)
jmp 0x10d18
movq -0x58(%rbp), %rdi
addq $0x20, %rdi
movl $0x1, %esi
callq 0xfa00
jmp 0x10d18
jmp 0x10d18
jmp 0x10da1
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
je 0x10d47
movq -0x58(%rbp), %rax
cmpq $0xa, 0x28(%rax)
je 0x10d47
movq -0x58(%rbp), %rax
movzwl 0x24(%rax), %ecx
andl $0xffffdfff, %ecx       # imm = 0xFFFFDFFF
movw %cx, 0x24(%rax)
movq -0x58(%rbp), %rax
movb $0x1, (%rax)
cmpq $0x0, 0x58(%rax)
jge 0x10d68
movq -0x58(%rbp), %rax
movq -0x10(%rbp), %rcx
movzwl 0x30(%rax), %edx
addq %rdx, %rcx
movq %rcx, 0x58(%rax)
movq -0x58(%rbp), %rax
movw 0x30(%rax), %cx
addw $0x1, %cx
movw %cx, 0x30(%rax)
movq -0x8(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x8(%rbp)
movb 0x1(%rax), %al
movb %al, -0x11(%rbp)
cmpb $0x0, -0x11(%rbp)
je 0x10d9f
movq -0x58(%rbp), %rax
movq -0x8(%rbp), %rcx
movq %rcx, 0x18(%rax)
jmp 0x10da1
movq -0x50(%rbp), %rax
addq $0x80, %rsp
popq %rbp
retq
nop