// File: /workspace/github_c_makefile_star2_O0/hilbix[P]unbuffered/./tino/getopt.h
// Function: tino_getopt_parse
static int
tino_getopt_parse(int argc, char **argv, struct tino_getopt_impl *q, int opts)
{
  int	pos, i;

  if (q[0].TAR_var || q[0].POSIX_var)
    fprintf(stderr, "getopt: tar/posix not yet implemented, continuing anyway\n");

  if (q[0].TAR_var && argc>1 && argv[1][0]!='-')
    {
      /* First option is TAR options
       * Hunt through all the TAR options and process them ..
       * (or do this below?)
       * XXX TODO XXX support parsing of TAR like options
       */
      TINO_XXX;
    }

  /* Well, what follows is too long actually.
   * However it's difficult to break it up.
   */
  for (pos=0; ++pos<argc; )
    {
      const char	*ptr;

/* return 0 if --opt or --opt=value or --opt+ (for PLUSopts)
 * If option does not end on AlNum, the separator can be missing, so it is detected anyway.
 */
#define	TINO_GETOPT_CMPOPT_LONG(I,INV)	(INV)>=0 || ptr[q[I].optlen]!='+'
#define	TINO_GETOPT_CMPOPT_SHORT(I)	q[I].optlen>1
#define	TINO_GETOPT_CMPOPT(I,TEST)	(!q[I].optlen ||			\
                                         strncmp(ptr, q[I].opt, q[I].optlen) ||	\
                                         (ptr[q[I].optlen]			\
                                          && ptr[q[I].optlen]!='='		\
                                          && (TEST)				\
                                          && isalnum(q[I].opt[q[I].optlen-1])	\
                                          )					\
                                         )

#define	TINO_GETOPT_PROCESSLONGOPT(I,COND,INV,PREFIX)						\
                {										\
                  int	inv=INV, tmp;								\
                  if (!(COND) || TINO_GETOPT_CMPOPT(I,TINO_GETOPT_CMPOPT_LONG(I,inv)))		\
                    continue;									\
                  ptr	+= q[I].optlen;								\
                  tmp	= tino_getopt_var_set_arg(q+I, ptr, argv[pos+1], inv);			\
                  if ((inv)<0 && *ptr=='+')							\
                    ptr++;									\
                  if (!tmp && *ptr)								\
                    {										\
                      fprintf(stderr, "getopt: option %s%.*s must not have args\n", PREFIX, q[I].optlen, q[I].opt);	\
                      return -2;								\
                    }										\
                  I	= tmp;									\
                }
                  /* i<0	help option or error
                   * i==0	last thing was flag (so iterate to next character)
                   * i==1	last thing was argument
                   * i==2	one addional argv was eaten away
                   */

      ptr	= argv[pos];
      if (*ptr=='+' && ptr[1] && q[-1].PLUS_var)	/* + on it's own always is an ARG	*/
        {
          ptr++;
          for (i=opts;;)
            {
              if (--i<1)
                {
                  fprintf(stderr, "getopt: unknown option +%s\n", ptr);
                  return -2;
                }
              TINO_GETOPT_PROCESSLONGOPT(i,q[i].LLOPT_var, 1, "+");	/* +opt needs LLOPTs	*/
              break;
            }
          if (i)
            {
              /* +opt should be FLAGs, so i==0 here	*/
              fprintf(stderr, "getopt: internal error on +%s: i=%d\n", ptr, i);
              return -2;
            }
          continue;
        }
      else if (*ptr=='-' && *++ptr)		/* - on it's own always is an ARG	*/
        {
          /* we always recognize - or -- as start of options
           * XXX TODO XXX add killswitch for DD/TAR-only type programs?
           */
          if (*ptr=='-')	/* we saw --	*/
            {
              /* end of options: --
               * Make it unknown in situations where we do not process '-' at all,
               * so it becomes an ARG
               */
              if (!*++ptr && (q[0].POSIX_var || q[0].PLUS_var || q[0].LOPT_var || q[0].LLOPT_var || !(q[0].DD_var || q[0].TAR_var)))
                {
                  pos++;
                  break;	/* same as: return pos	*/
                }
              /* --long option
               */
              for (i=opts;;)
                {
                  if (--i<1)
                    {
                      fprintf(stderr, "getopt: unknown option --%s\n", ptr);
                      return -2;
                    }
                  TINO_GETOPT_PROCESSLONGOPT(i,q[i].LLOPT_var, (q[i].type==TINO_GETOPT_TYPE_FLAG && q[i].PLUS_var ? -1 : 0), "--");
                  break;
                }
              /* The --option has been processed successfully if i>=0
               */
            }
          else
            {
              /* short option (preceeding is -) or LOPT
               *
               * Notes:
               * - *ptr is pointing to some character.
               * - -something always is considered to be an option.
               */
              do
                {
                  i=opts;
                  do
                    {
                      if (--i<1)
                        {
                          fprintf(stderr, "getopt: unknown option -%s\n", ptr);
                          return -2;
                        }
                    } while (((q[i].LLOPT_var || q[i].DD_var) && !q[i].LOPT_var) ||	/* LLOPT processed above, DD never start on -	*/
                             TINO_GETOPT_CMPOPT(i, TINO_GETOPT_CMPOPT_SHORT(i)));
                  ptr	+= q[i].optlen;
                  i	= tino_getopt_var_set_arg(q+i, ptr, argv[pos+1], 0);
                  if (i)
                    break;
                } while (*ptr);
              /* All options have been processed successfully if i>=0
               */
            }
          /* short or long option
           * i<0	help option or error
           * i==0	last thing was flag (so iterate to next character)
           * i==1	last thing was argument
           * i==2	one addional argv was eaten away
           */
          if (i<0)
            return i;

          if (i>1)
            pos++;
          continue;
        }

      /* hunt for DD like options
       */
      if (q[0].DD_var)
        {
          for (i=opts; --i>1; )
            {
              TINO_GETOPT_PROCESSLONGOPT(i,q[i].DD_var, 0, "");
              /* i<0	help option or error
               * i==0	last thing was flag (so iterate to next character)
               * i==1	last thing was argument
               * i==2	one addional argv was eaten away
               */
              if (i<0)
                return i;
              if (i>1)
                pos++;
              i	= 1;
              break;
            }
          if (i>0)
            continue;

          /* Fallthrough in case nothing found
           */
        }

      /* non-option argument
       * XXX TODO XXX support TAR like options
       */
      TINO_XXX;	/* check for TAR like options here	*/

      /* Call the argument callback if defined.
       */
      if (q[1].CB_var && (i=(q[1].CB_var)(pos, argv, argc, q[1].USER_var))!=0)
        {
          if (i<0)
            return i;
          pos	+= i;
          continue;
        }
      if (!q[0].POSIX_var)
        break;

      /* Not yet implemented
       * reorder the options (POSIX) ..
       * XXX TODO XXX support POSIX mode where options can follow the arguments
       */
      TINO_XXX;
      break;
    }

  /* Successfully parsed, pos>0
   */
  return pos;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movq -0x18(%rbp), %rax
cmpl $0x0, 0x5c(%rax)
jne 0x4b4a
movq -0x18(%rbp), %rax
cmpl $0x0, 0x60(%rax)
je 0x4b62
movq 0xc4a7(%rip), %rax      # 0x10ff8
movq (%rax), %rdi
leaq 0x8f36(%rip), %rsi      # 0xda91
movb $0x0, %al
callq 0x2200
movq -0x18(%rbp), %rax
cmpl $0x0, 0x5c(%rax)
je 0x4b84
cmpl $0x1, -0x8(%rbp)
jle 0x4b84
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
je 0x4b84
jmp 0x4b84
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
cmpl -0x8(%rbp), %eax
jge 0x56ff
movq -0x10(%rbp), %rax
movslq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2b, %eax
jne 0x4e7c
movq -0x30(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x0, %eax
je 0x4e7c
movq -0x18(%rbp), %rax
cmpl $0x0, -0x4c(%rax)
je 0x4e7c
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
movl -0x1c(%rbp), %eax
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x24(%rbp)
cmpl $0x1, %eax
jge 0x4c24
movq 0xc3f5(%rip), %rax      # 0x10ff8
movq (%rax), %rdi
movq -0x30(%rbp), %rdx
leaq 0x8eba(%rip), %rsi      # 0xdacb
movb $0x0, %al
callq 0x2200
movl $0xfffffffe, -0x4(%rbp) # imm = 0xFFFFFFFE
jmp 0x5705
movl $0x1, -0x34(%rbp)
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
cmpl $0x0, 0x6c(%rax)
je 0x4d60
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
cmpl $0x0, 0x48(%rax)
je 0x4d60
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
movq 0x40(%rax), %rsi
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
movslq 0x48(%rax), %rdx
callq 0x2090
cmpl $0x0, %eax
jne 0x4d60
movq -0x30(%rbp), %rax
movq -0x18(%rbp), %rcx
movslq -0x24(%rbp), %rdx
imulq $0xb0, %rdx, %rdx
addq %rdx, %rcx
movslq 0x48(%rcx), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
je 0x4d65
movq -0x30(%rbp), %rax
movq -0x18(%rbp), %rcx
movslq -0x24(%rbp), %rdx
imulq $0xb0, %rdx, %rdx
addq %rdx, %rcx
movslq 0x48(%rcx), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x3d, %eax
je 0x4d65
cmpl $0x0, -0x34(%rbp)
jge 0x4d14
movq -0x30(%rbp), %rax
movq -0x18(%rbp), %rcx
movslq -0x24(%rbp), %rdx
imulq $0xb0, %rdx, %rdx
addq %rdx, %rcx
movslq 0x48(%rcx), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x2b, %eax
je 0x4d65
callq 0x2340
movq (%rax), %rax
movq -0x18(%rbp), %rcx
movslq -0x24(%rbp), %rdx
imulq $0xb0, %rdx, %rdx
addq %rdx, %rcx
movq 0x40(%rcx), %rcx
movq -0x18(%rbp), %rdx
movslq -0x24(%rbp), %rsi
imulq $0xb0, %rsi, %rsi
addq %rsi, %rdx
movl 0x48(%rdx), %edx
subl $0x1, %edx
movslq %edx, %rdx
movsbl (%rcx,%rdx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x4d65
jmp 0x4bee
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
movl 0x48(%rax), %ecx
movq -0x30(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rdi
movslq -0x24(%rbp), %rax
imulq $0xb0, %rax, %rax
addq %rax, %rdi
movq -0x30(%rbp), %rsi
movq -0x10(%rbp), %rax
movl -0x20(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdx
movl -0x34(%rbp), %ecx
callq 0x94b0
movl %eax, -0x38(%rbp)
cmpl $0x0, -0x34(%rbp)
jge 0x4dd8
movq -0x30(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2b, %eax
jne 0x4dd8
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
cmpl $0x0, -0x38(%rbp)
jne 0x4e40
movq -0x30(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x4e40
movq 0xc207(%rip), %rax      # 0x10ff8
movq (%rax), %rdi
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
movl 0x48(%rax), %ecx
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rdx
imulq $0xb0, %rdx, %rdx
addq %rdx, %rax
movq 0x40(%rax), %r8
leaq 0x8cc1(%rip), %rsi      # 0xdae7
leaq 0x8ce4(%rip), %rdx      # 0xdb11
movb $0x0, %al
callq 0x2200
movl $0xfffffffe, -0x4(%rbp) # imm = 0xFFFFFFFE
jmp 0x5705
movl -0x38(%rbp), %eax
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
je 0x4e77
movq 0xc1a5(%rip), %rax      # 0x10ff8
movq (%rax), %rdi
movq -0x30(%rbp), %rdx
movl -0x24(%rbp), %ecx
leaq 0x8caf(%rip), %rsi      # 0xdb13
movb $0x0, %al
callq 0x2200
movl $0xfffffffe, -0x4(%rbp) # imm = 0xFFFFFFFE
jmp 0x5705
jmp 0x4b8b
movq -0x30(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x541f
movq -0x30(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x30(%rbp)
movsbl 0x1(%rax), %eax
cmpl $0x0, %eax
je 0x541f
movq -0x30(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x51be
movq -0x30(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x30(%rbp)
cmpb $0x0, 0x1(%rax)
jne 0x4f17
movq -0x18(%rbp), %rax
cmpl $0x0, 0x60(%rax)
jne 0x4f09
movq -0x18(%rbp), %rax
cmpl $0x0, 0x64(%rax)
jne 0x4f09
movq -0x18(%rbp), %rax
cmpl $0x0, 0x68(%rax)
jne 0x4f09
movq -0x18(%rbp), %rax
cmpl $0x0, 0x6c(%rax)
jne 0x4f09
movq -0x18(%rbp), %rax
cmpl $0x0, 0x74(%rax)
jne 0x4f17
movq -0x18(%rbp), %rax
cmpl $0x0, 0x5c(%rax)
jne 0x4f17
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x56ff
movl -0x1c(%rbp), %eax
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x24(%rbp)
cmpl $0x1, %eax
jge 0x4f53
movq 0xc0c6(%rip), %rax      # 0x10ff8
movq (%rax), %rdi
movq -0x30(%rbp), %rdx
leaq 0x8bf8(%rip), %rsi      # 0xdb38
movb $0x0, %al
callq 0x2200
movl $0xfffffffe, -0x4(%rbp) # imm = 0xFFFFFFFE
jmp 0x5705
movq -0x18(%rbp), %rcx
movslq -0x24(%rbp), %rax
imulq $0xb0, %rax, %rax
addq %rax, %rcx
xorl %eax, %eax
cmpl $0x1, (%rcx)
movb %al, -0x49(%rbp)
jne 0x4f8b
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
cmpl $0x0, 0x64(%rax)
setne %al
movb %al, -0x49(%rbp)
movb -0x49(%rbp), %dl
xorl %eax, %eax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
testb $0x1, %dl
cmovnel %ecx, %eax
movl %eax, -0x3c(%rbp)
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
cmpl $0x0, 0x6c(%rax)
je 0x50d3
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
cmpl $0x0, 0x48(%rax)
je 0x50d3
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
movq 0x40(%rax), %rsi
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
movslq 0x48(%rax), %rdx
callq 0x2090
cmpl $0x0, %eax
jne 0x50d3
movq -0x30(%rbp), %rax
movq -0x18(%rbp), %rcx
movslq -0x24(%rbp), %rdx
imulq $0xb0, %rdx, %rdx
addq %rdx, %rcx
movslq 0x48(%rcx), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
je 0x50d8
movq -0x30(%rbp), %rax
movq -0x18(%rbp), %rcx
movslq -0x24(%rbp), %rdx
imulq $0xb0, %rdx, %rdx
addq %rdx, %rcx
movslq 0x48(%rcx), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x3d, %eax
je 0x50d8
cmpl $0x0, -0x3c(%rbp)
jge 0x5087
movq -0x30(%rbp), %rax
movq -0x18(%rbp), %rcx
movslq -0x24(%rbp), %rdx
imulq $0xb0, %rdx, %rdx
addq %rdx, %rcx
movslq 0x48(%rcx), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x2b, %eax
je 0x50d8
callq 0x2340
movq (%rax), %rax
movq -0x18(%rbp), %rcx
movslq -0x24(%rbp), %rdx
imulq $0xb0, %rdx, %rdx
addq %rdx, %rcx
movq 0x40(%rcx), %rcx
movq -0x18(%rbp), %rdx
movslq -0x24(%rbp), %rsi
imulq $0xb0, %rsi, %rsi
addq %rsi, %rdx
movl 0x48(%rdx), %edx
subl $0x1, %edx
movslq %edx, %rdx
movsbl (%rcx,%rdx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x50d8
jmp 0x4f1d
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
movl 0x48(%rax), %ecx
movq -0x30(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rdi
movslq -0x24(%rbp), %rax
imulq $0xb0, %rax, %rax
addq %rax, %rdi
movq -0x30(%rbp), %rsi
movq -0x10(%rbp), %rax
movl -0x20(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdx
movl -0x3c(%rbp), %ecx
callq 0x94b0
movl %eax, -0x40(%rbp)
cmpl $0x0, -0x3c(%rbp)
jge 0x514b
movq -0x30(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2b, %eax
jne 0x514b
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
cmpl $0x0, -0x40(%rbp)
jne 0x51b3
movq -0x30(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x51b3
movq 0xbe94(%rip), %rax      # 0x10ff8
movq (%rax), %rdi
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
movl 0x48(%rax), %ecx
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rdx
imulq $0xb0, %rdx, %rdx
addq %rdx, %rax
movq 0x40(%rax), %r8
leaq 0x894e(%rip), %rsi      # 0xdae7
leaq 0x89b5(%rip), %rdx      # 0xdb55
movb $0x0, %al
callq 0x2200
movl $0xfffffffe, -0x4(%rbp) # imm = 0xFFFFFFFE
jmp 0x5705
movl -0x40(%rbp), %eax
movl %eax, -0x24(%rbp)
jmp 0x53fa
jmp 0x51c0
movl -0x1c(%rbp), %eax
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x24(%rbp)
cmpl $0x1, %eax
jge 0x51fc
movq 0xbe1d(%rip), %rax      # 0x10ff8
movq (%rax), %rdi
movq -0x30(%rbp), %rdx
leaq 0x896f(%rip), %rsi      # 0xdb58
movb $0x0, %al
callq 0x2200
movl $0xfffffffe, -0x4(%rbp) # imm = 0xFFFFFFFE
jmp 0x5705
jmp 0x51fe
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
cmpl $0x0, 0x6c(%rax)
jne 0x522e
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
cmpl $0x0, 0x74(%rax)
je 0x524f
movq -0x18(%rbp), %rcx
movslq -0x24(%rbp), %rax
imulq $0xb0, %rax, %rax
addq %rax, %rcx
movb $0x1, %al
cmpl $0x0, 0x68(%rcx)
movb %al, -0x4a(%rbp)
je 0x5382
movq -0x18(%rbp), %rcx
movslq -0x24(%rbp), %rax
imulq $0xb0, %rax, %rax
addq %rax, %rcx
movb $0x1, %al
cmpl $0x0, 0x48(%rcx)
movb %al, -0x4b(%rbp)
je 0x537c
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
movq 0x40(%rax), %rsi
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
movslq 0x48(%rax), %rdx
callq 0x2090
movl %eax, %ecx
movb $0x1, %al
cmpl $0x0, %ecx
movb %al, -0x4b(%rbp)
jne 0x537c
movq -0x30(%rbp), %rax
movq -0x18(%rbp), %rcx
movslq -0x24(%rbp), %rdx
imulq $0xb0, %rdx, %rdx
addq %rdx, %rcx
movslq 0x48(%rcx), %rcx
movsbl (%rax,%rcx), %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x4c(%rbp)
je 0x5376
movq -0x30(%rbp), %rax
movq -0x18(%rbp), %rcx
movslq -0x24(%rbp), %rdx
imulq $0xb0, %rdx, %rdx
addq %rdx, %rcx
movslq 0x48(%rcx), %rcx
movsbl (%rax,%rcx), %ecx
xorl %eax, %eax
cmpl $0x3d, %ecx
movb %al, -0x4c(%rbp)
je 0x5376
movq -0x18(%rbp), %rcx
movslq -0x24(%rbp), %rax
imulq $0xb0, %rax, %rax
addq %rax, %rcx
xorl %eax, %eax
cmpl $0x1, 0x48(%rcx)
movb %al, -0x4c(%rbp)
jle 0x5376
callq 0x2340
movq (%rax), %rax
movq -0x18(%rbp), %rcx
movslq -0x24(%rbp), %rdx
imulq $0xb0, %rdx, %rdx
addq %rdx, %rcx
movq 0x40(%rcx), %rcx
movq -0x18(%rbp), %rdx
movslq -0x24(%rbp), %rsi
imulq $0xb0, %rsi, %rsi
addq %rsi, %rdx
movl 0x48(%rdx), %edx
subl $0x1, %edx
movslq %edx, %rdx
movsbl (%rcx,%rdx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
setne %al
movb %al, -0x4c(%rbp)
movb -0x4c(%rbp), %al
movb %al, -0x4b(%rbp)
movb -0x4b(%rbp), %al
movb %al, -0x4a(%rbp)
movb -0x4a(%rbp), %al
testb $0x1, %al
jne 0x51c6
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
movl 0x48(%rax), %ecx
movq -0x30(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rdi
movslq -0x24(%rbp), %rax
imulq $0xb0, %rax, %rax
addq %rax, %rdi
movq -0x30(%rbp), %rsi
movq -0x10(%rbp), %rax
movl -0x20(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdx
xorl %ecx, %ecx
callq 0x94b0
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
je 0x53e9
jmp 0x53f8
jmp 0x53eb
movq -0x30(%rbp), %rax
cmpb $0x0, (%rax)
jne 0x51c0
jmp 0x53fa
cmpl $0x0, -0x24(%rbp)
jge 0x540b
movl -0x24(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x5705
cmpl $0x1, -0x24(%rbp)
jle 0x541a
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x4b8b
jmp 0x5421
movq -0x18(%rbp), %rax
cmpl $0x0, 0x74(%rax)
je 0x569d
movl -0x1c(%rbp), %eax
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x24(%rbp)
cmpl $0x1, %eax
jle 0x5690
movl $0x0, -0x44(%rbp)
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
cmpl $0x0, 0x74(%rax)
je 0x5583
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
cmpl $0x0, 0x48(%rax)
je 0x5583
movq -0x30(%rbp), %rdi
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
movq 0x40(%rax), %rsi
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
movslq 0x48(%rax), %rdx
callq 0x2090
cmpl $0x0, %eax
jne 0x5583
movq -0x30(%rbp), %rax
movq -0x18(%rbp), %rcx
movslq -0x24(%rbp), %rdx
imulq $0xb0, %rdx, %rdx
addq %rdx, %rcx
movslq 0x48(%rcx), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
je 0x5588
movq -0x30(%rbp), %rax
movq -0x18(%rbp), %rcx
movslq -0x24(%rbp), %rdx
imulq $0xb0, %rdx, %rdx
addq %rdx, %rcx
movslq 0x48(%rcx), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x3d, %eax
je 0x5588
cmpl $0x0, -0x44(%rbp)
jge 0x5537
movq -0x30(%rbp), %rax
movq -0x18(%rbp), %rcx
movslq -0x24(%rbp), %rdx
imulq $0xb0, %rdx, %rdx
addq %rdx, %rcx
movslq 0x48(%rcx), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x2b, %eax
je 0x5588
callq 0x2340
movq (%rax), %rax
movq -0x18(%rbp), %rcx
movslq -0x24(%rbp), %rdx
imulq $0xb0, %rdx, %rdx
addq %rdx, %rcx
movq 0x40(%rcx), %rcx
movq -0x18(%rbp), %rdx
movslq -0x24(%rbp), %rsi
imulq $0xb0, %rsi, %rsi
addq %rsi, %rdx
movl 0x48(%rdx), %edx
subl $0x1, %edx
movslq %edx, %rdx
movsbl (%rcx,%rdx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x5588
jmp 0x5435
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
movl 0x48(%rax), %ecx
movq -0x30(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rdi
movslq -0x24(%rbp), %rax
imulq $0xb0, %rax, %rax
addq %rax, %rdi
movq -0x30(%rbp), %rsi
movq -0x10(%rbp), %rax
movl -0x20(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rdx
movl -0x44(%rbp), %ecx
callq 0x94b0
movl %eax, -0x48(%rbp)
cmpl $0x0, -0x44(%rbp)
jge 0x55fb
movq -0x30(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2b, %eax
jne 0x55fb
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
cmpl $0x0, -0x48(%rbp)
jne 0x5663
movq -0x30(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x5663
movq 0xb9e4(%rip), %rax      # 0x10ff8
movq (%rax), %rdi
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rcx
imulq $0xb0, %rcx, %rcx
addq %rcx, %rax
movl 0x48(%rax), %ecx
movq -0x18(%rbp), %rax
movslq -0x24(%rbp), %rdx
imulq $0xb0, %rdx, %rdx
addq %rdx, %rax
movq 0x40(%rax), %r8
leaq 0x849e(%rip), %rsi      # 0xdae7
leaq 0x7ea3(%rip), %rdx      # 0xd4f3
movb $0x0, %al
callq 0x2200
movl $0xfffffffe, -0x4(%rbp) # imm = 0xFFFFFFFE
jmp 0x5705
movl -0x48(%rbp), %eax
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
jge 0x567a
movl -0x24(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x5705
cmpl $0x1, -0x24(%rbp)
jle 0x5689
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
movl $0x1, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
jle 0x569b
jmp 0x4b8b
jmp 0x569d
movq -0x18(%rbp), %rax
cmpq $0x0, 0x158(%rax)
je 0x56f1
movq -0x18(%rbp), %rax
movq 0x158(%rax), %rax
movl -0x20(%rbp), %edi
movq -0x10(%rbp), %rsi
movl -0x8(%rbp), %edx
movq -0x18(%rbp), %rcx
movq 0x148(%rcx), %rcx
callq *%rax
movl %eax, -0x24(%rbp)
cmpl $0x0, %eax
je 0x56f1
cmpl $0x0, -0x24(%rbp)
jge 0x56e3
movl -0x24(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x5705
movl -0x24(%rbp), %eax
addl -0x20(%rbp), %eax
movl %eax, -0x20(%rbp)
jmp 0x4b8b
movq -0x18(%rbp), %rax
cmpl $0x0, 0x60(%rax)
jne 0x56fd
jmp 0x56ff
jmp 0x56ff
movl -0x20(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x50, %rsp
popq %rbp
retq
nop