// File: /workspace/github_c_makefile_star2_O3/liuhaotian[P]xmppsh/libstrophe/src/snprintf.c
// Function: dopr
static int dopr (char *buffer, size_t maxlen, const char *format, va_list args)
{
  char ch;
  long value;
  LDOUBLE fvalue;
  char *strvalue;
  int min;
  int max;
  int state;
  int flags;
  int cflags;
  int total;
  size_t currlen;
  
  state = DP_S_DEFAULT;
  currlen = flags = cflags = min = 0;
  max = -1;
  ch = *format++;
  total = 0;

  while (state != DP_S_DONE)
  {
    if (ch == '\0')
      state = DP_S_DONE;

    switch(state) 
    {
    case DP_S_DEFAULT:
      if (ch == '%') 
	state = DP_S_FLAGS;
      else 
	total += dopr_outch (buffer, &currlen, maxlen, ch);
      ch = *format++;
      break;
    case DP_S_FLAGS:
      switch (ch) 
      {
      case '-':
	flags |= DP_F_MINUS;
        ch = *format++;
	break;
      case '+':
	flags |= DP_F_PLUS;
        ch = *format++;
	break;
      case ' ':
	flags |= DP_F_SPACE;
        ch = *format++;
	break;
      case '#':
	flags |= DP_F_NUM;
        ch = *format++;
	break;
      case '0':
	flags |= DP_F_ZERO;
        ch = *format++;
	break;
      default:
	state = DP_S_MIN;
	break;
      }
      break;
    case DP_S_MIN:
      if (isdigit(ch)) 
      {
	min = 10*min + char_to_int (ch);
	ch = *format++;
      } 
      else if (ch == '*') 
      {
	min = va_arg (args, int);
	ch = *format++;
	state = DP_S_DOT;
      } 
      else 
	state = DP_S_DOT;
      break;
    case DP_S_DOT:
      if (ch == '.') 
      {
	state = DP_S_MAX;
	ch = *format++;
      } 
      else 
	state = DP_S_MOD;
      break;
    case DP_S_MAX:
      if (isdigit(ch)) 
      {
	if (max < 0)
	  max = 0;
	max = 10*max + char_to_int (ch);
	ch = *format++;
      } 
      else if (ch == '*') 
      {
	max = va_arg (args, int);
	ch = *format++;
	state = DP_S_MOD;
      } 
      else 
	state = DP_S_MOD;
      break;
    case DP_S_MOD:
      /* Currently, we don't support Long Long, bummer */
      switch (ch) 
      {
      case 'h':
	cflags = DP_C_SHORT;
	ch = *format++;
	break;
      case 'l':
	cflags = DP_C_LONG;
	ch = *format++;
	break;
      case 'L':
	cflags = DP_C_LDOUBLE;
	ch = *format++;
	break;
      default:
	break;
      }
      state = DP_S_CONV;
      break;
    case DP_S_CONV:
      switch (ch) 
      {
      case 'd':
      case 'i':
	if (cflags == DP_C_SHORT) 
	  value = va_arg (args, int);
	else if (cflags == DP_C_LONG)
	  value = va_arg (args, long int);
	else
	  value = va_arg (args, int);
	total += fmtint (buffer, &currlen, maxlen, value, 10, min, max, flags);
	break;
      case 'o':
	flags |= DP_F_UNSIGNED;
	if (cflags == DP_C_SHORT)
	  value = va_arg (args, int);
	else if (cflags == DP_C_LONG)
	  value = va_arg (args, unsigned long int);
	else
	  value = va_arg (args, unsigned int);
	total += fmtint (buffer, &currlen, maxlen, value, 8, min, max, flags);
	break;
      case 'u':
	flags |= DP_F_UNSIGNED;
	if (cflags == DP_C_SHORT)
	  value = va_arg (args, int);
	else if (cflags == DP_C_LONG)
	  value = va_arg (args, unsigned long int);
	else
	  value = va_arg (args, unsigned int);
	total += fmtint (buffer, &currlen, maxlen, value, 10, min, max, flags);
	break;
      case 'X':
	flags |= DP_F_UP;
      case 'x':
	flags |= DP_F_UNSIGNED;
	if (cflags == DP_C_SHORT)
	  value = va_arg (args, int);
	else if (cflags == DP_C_LONG)
	  value = va_arg (args, unsigned long int);
	else
	  value = va_arg (args, unsigned int);
	total += fmtint (buffer, &currlen, maxlen, value, 16, min, max, flags);
	break;
      case 'f':
	if (cflags == DP_C_LDOUBLE)
	  fvalue = va_arg (args, LDOUBLE);
	else
	  fvalue = va_arg (args, double);
	/* um, floating point? */
	total += fmtfp (buffer, &currlen, maxlen, fvalue, min, max, flags);
	break;
      case 'E':
	flags |= DP_F_UP;
      case 'e':
	if (cflags == DP_C_LDOUBLE)
	  fvalue = va_arg (args, LDOUBLE);
	else
	  fvalue = va_arg (args, double);
	break;
      case 'G':
	flags |= DP_F_UP;
      case 'g':
	if (cflags == DP_C_LDOUBLE)
	  fvalue = va_arg (args, LDOUBLE);
	else
	  fvalue = va_arg (args, double);
	break;
      case 'c':
	total += dopr_outch (buffer, &currlen, maxlen, va_arg (args, int));
	break;
      case 's':
	strvalue = va_arg (args, char *);
	total += fmtstr (buffer, &currlen, maxlen, strvalue, flags, min, max);
	break;
      case 'p':
	strvalue = va_arg (args, void *);
	total += fmtint (buffer, &currlen, maxlen, (long) strvalue, 16, min,
                         max, flags);
	break;
      case 'n':
	if (cflags == DP_C_SHORT) 
	{
	  short int *num;
	  num = va_arg (args, short int *);
	  *num = currlen;
        } 
	else if (cflags == DP_C_LONG) 
	{
	  long int *num;
	  num = va_arg (args, long int *);
	  *num = currlen;
        } 
	else 
	{
	  int *num;
	  num = va_arg (args, int *);
	  *num = currlen;
        }
	break;
      case '%':
	total += dopr_outch (buffer, &currlen, maxlen, ch);
	break;
      case 'w':
	/* not supported yet, treat as next char */
	ch = *format++;
	break;
      default:
	/* Unknown, skip */
	break;
      }
      ch = *format++;
      state = DP_S_DEFAULT;
      flags = cflags = min = 0;
      max = -1;
      break;
    case DP_S_DONE:
      break;
    default:
      /* hmm? */
      break; /* some picky compilers need this */
    }
  }
  if (buffer != NULL)
  {
    if (currlen < maxlen - 1) 
      buffer[currlen] = '\0';
    else 
      buffer[maxlen - 1] = '\0';
  }
  return total;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
movq %rcx, 0x38(%rsp)
movq %rdx, %r12
movq %rsi, 0x30(%rsp)
movq %rdi, 0x28(%rsp)
leaq 0x18(%rsp), %rax
movq $0x0, (%rax)
movb (%rdx), %bl
incq %r12
movl $0xffffffff, %r15d      # imm = 0xFFFFFFFF
movl $0x7, %r9d
leaq 0x4646(%rip), %r10      # 0xe048
movsd 0x462e(%rip), %xmm3     # 0xe038
movl $0x0, 0x24(%rsp)
movl $0x0, 0xc(%rsp)
movq $0x0, 0x10(%rsp)
xorl %ecx, %ecx
xorl %r13d, %r13d
testb %bl, %bl
cmovel %r9d, %ecx
cmpl $0x6, %ecx
ja 0xa5d3
movsbl %bl, %r14d
movslq (%r10,%rcx,4), %rax
addq %r10, %rax
jmpq *%rax
movl $0x1, %eax
cmpb $0x25, %bl
je 0x9cfd
movq 0x18(%rsp), %rax
leaq 0x1(%rax), %rcx
cmpq 0x30(%rsp), %rcx
jae 0x9a6f
movq %rcx, 0x18(%rsp)
movq 0x28(%rsp), %rcx
movb %bl, (%rcx,%rax)
incl 0x24(%rsp)
xorl %eax, %eax
jmp 0x9cfd
callq 0x20a0
movq (%rax), %rax
movsbq %bl, %rcx
testb $0x8, 0x1(%rax,%rcx,2)
jne 0x9c1b
movl $0x5, %ecx
cmpb $0x2a, %bl
movsd 0x4597(%rip), %xmm3     # 0xe038
jne 0x9c3f
movq 0x38(%rsp), %rdx
movl (%rdx), %ecx
cmpq $0x28, %rcx
movl $0x7, %r9d
leaq 0x4589(%rip), %r10      # 0xe048
ja 0x9d08
movq %rcx, %rax
addq 0x10(%rdx), %rax
addl $0x8, %ecx
movl %ecx, (%rdx)
jmp 0x9d14
callq 0x20a0
movq (%rax), %rax
movsbq %bl, %rcx
testb $0x8, 0x1(%rax,%rcx,2)
jne 0x9c51
movl $0x3, %ecx
cmpb $0x2a, %bl
movsd 0x453b(%rip), %xmm3     # 0xe038
jne 0x9c3f
movq 0x38(%rsp), %rdx
movl (%rdx), %ecx
cmpq $0x28, %rcx
movl $0x7, %r9d
leaq 0x452d(%rip), %r10      # 0xe048
ja 0x9d23
movq %rcx, %rax
addq 0x10(%rdx), %rax
addl $0x8, %ecx
movl %ecx, (%rdx)
jmp 0x9d2f
movl $0x5, %ecx
movl $0x4, %eax
movl %r13d, %r14d
movl %r15d, %ebp
cmpb $0x2e, %bl
je 0xa5c4
jmp 0xa5d3
movzbl %bl, %eax
movl $0x2, %ecx
cmpl $0x2a, %eax
jle 0x9c6b
cmpl $0x2b, %eax
je 0x9cd7
cmpl $0x30, %eax
je 0x9ce1
cmpl $0x2d, %eax
jne 0xa5d3
movq 0x10(%rsp), %rax
orl $0x1, %eax
jmp 0x9cf3
movl $0x6, %eax
cmpb $0x4c, %bl
je 0x9c8d
movzbl %bl, %ecx
cmpl $0x68, %ecx
je 0x9c83
cmpl $0x6c, %ecx
jne 0x9c97
movl $0x2, 0xc(%rsp)
jmp 0x9cfd
movzbl %bl, %eax
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
xorl %r14d, %r14d
cmpl $0x57, %eax
jle 0x9ca1
addl $-0x58, %eax
cmpl $0x20, %eax
movq 0x38(%rsp), %rdx
ja 0xa51a
leaq 0x447f(%rip), %rcx      # 0xe064
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl (%rdx), %eax
movl 0xc(%rsp), %ecx
cmpl $0x2, %ecx
je 0x9ec2
cmpl $0x1, %ecx
jne 0x9ef6
cmpl $0x28, %eax
ja 0x9f09
movq 0x10(%rdx), %rcx
addq %rax, %rcx
jmp 0x9f02
testl %r15d, %r15d
movl $0x0, %eax
cmovlel %eax, %r15d
leal (%r15,%r15,4), %eax
leal (%r14,%rax,2), %ebp
addl $-0x30, %ebp
movl $0x4, %eax
movl %r13d, %r14d
jmp 0xa5af
movl $0x7, %r9d
leaq 0x43fc(%rip), %r10      # 0xe048
jmp 0xa5d3
leal (%r13,%r13,4), %eax
leal (%r14,%rax,2), %r14d
addl $-0x30, %r14d
movl $0x2, %eax
movl %r15d, %ebp
jmp 0xa5af
cmpl $0x20, %eax
je 0x9ceb
cmpl $0x23, %eax
jne 0xa5d3
movq 0x10(%rsp), %rax
orl $0x8, %eax
jmp 0x9cf3
movl $0x1, 0xc(%rsp)
jmp 0x9cfd
movl $0x3, 0xc(%rsp)
jmp 0x9cfd
movl $0x6, %ecx
jmp 0xa5d3
cmpl $0x25, %eax
movq 0x38(%rsp), %rdx
je 0x9e9b
cmpl $0x45, %eax
je 0x9cbd
cmpl $0x47, %eax
jne 0xa51a
movl 0x4(%rdx), %eax
cmpl $0x3, 0xc(%rsp)
cmpl $0xa0, %eax
ja 0x9d39
addl $0x10, %eax
movl %eax, 0x4(%rdx)
jmp 0xa51a
movq 0x10(%rsp), %rax
orl $0x2, %eax
jmp 0x9cf3
movq 0x10(%rsp), %rax
orl $0x10, %eax
jmp 0x9cf3
movq 0x10(%rsp), %rax
orl $0x4, %eax
movq %rax, 0x10(%rsp)
movl $0x1, %eax
movl %r13d, %r14d
movl %r15d, %ebp
jmp 0xa5c4
movq 0x8(%rdx), %rax
leaq 0x8(%rax), %rcx
movq %rcx, 0x8(%rdx)
movl (%rax), %ebp
movl $0x5, %eax
movl %r13d, %r14d
jmp 0xa5c4
movq 0x8(%rdx), %rax
leaq 0x8(%rax), %rcx
movq %rcx, 0x8(%rdx)
movl (%rax), %r14d
movl $0x3, %eax
jmp 0x9d00
addq $0x8, 0x8(%rdx)
jmp 0xa51a
movl (%rdx), %eax
movl 0xc(%rsp), %ecx
cmpl $0x2, %ecx
je 0xa111
cmpl $0x1, %ecx
jne 0xa145
cmpl $0x28, %eax
ja 0xa477
movq 0x10(%rdx), %rcx
addq %rax, %rcx
addl $0x8, %eax
movl %eax, (%rdx)
jmp 0xa483
movl (%rdx), %eax
movl 0xc(%rsp), %ecx
cmpl $0x2, %ecx
je 0xa12b
cmpl $0x1, %ecx
jne 0xa178
cmpl $0x28, %eax
ja 0xa4a3
movq 0x10(%rdx), %rcx
addq %rax, %rcx
addl $0x8, %eax
movl %eax, (%rdx)
jmp 0xa4af
incq %r12
jmp 0xa51a
movl 0x4(%rdx), %eax
cmpl $0x3, 0xc(%rsp)
cmpl $0xa0, %eax
ja 0x9f3c
movq %rax, %rcx
addq 0x10(%rdx), %rcx
addl $0x10, %eax
movl %eax, 0x4(%rdx)
jmp 0x9f48
movl (%rdx), %eax
movl 0xc(%rsp), %ecx
cmpl $0x2, %ecx
je 0xa192
cmpl $0x1, %ecx
jne 0xa1ce
cmpl $0x28, %eax
ja 0xa532
movq 0x10(%rdx), %rcx
addq %rax, %rcx
addl $0x8, %eax
movl %eax, (%rdx)
jmp 0xa53e
movl (%rdx), %ecx
cmpq $0x28, %rcx
ja 0x9f9a
movq %rcx, %rax
addq 0x10(%rdx), %rax
addl $0x8, %ecx
movl %ecx, (%rdx)
jmp 0x9fa6
movq 0x10(%rsp), %r10
orl $0x20, %r10d
jmp 0x9e6d
movl (%rdx), %ecx
cmpq $0x28, %rcx
ja 0x9fda
movq %rcx, %rax
addq 0x10(%rdx), %rax
addl $0x8, %ecx
movl %ecx, (%rdx)
jmp 0x9fe6
movl (%rdx), %ecx
cmpq $0x28, %rcx
ja 0x9ff3
movq %rcx, %rax
addq 0x10(%rdx), %rax
addl $0x8, %ecx
movl %ecx, (%rdx)
jmp 0x9fff
movq 0x10(%rsp), %r10
movl (%rdx), %eax
movl 0xc(%rsp), %ecx
cmpl $0x2, %ecx
je 0x9edc
cmpl $0x1, %ecx
jne 0x9f22
cmpl $0x28, %eax
ja 0xa1ac
movq 0x10(%rdx), %rcx
addq %rax, %rcx
addl $0x8, %eax
movl %eax, (%rdx)
jmp 0xa1b8
movq 0x18(%rsp), %rax
leaq 0x1(%rax), %rcx
cmpq 0x30(%rsp), %rcx
jae 0x9eb9
movq %rcx, 0x18(%rsp)
movq 0x28(%rsp), %rcx
movb $0x25, (%rcx,%rax)
incl 0x24(%rsp)
jmp 0xa51a
cmpl $0x28, %eax
ja 0xa15f
movq 0x10(%rdx), %rcx
addq %rax, %rcx
addl $0x8, %eax
movl %eax, (%rdx)
jmp 0xa16b
cmpl $0x28, %eax
ja 0xa1bd
movq 0x10(%rdx), %rcx
addq %rax, %rcx
addl $0x8, %eax
movl %eax, (%rdx)
jmp 0xa1c9
cmpl $0x28, %eax
ja 0x9f09
movq %rax, %rcx
addq 0x10(%rdx), %rcx
addl $0x8, %eax
movl %eax, (%rdx)
jmp 0x9f15
movq 0x8(%rdx), %rcx
leaq 0x8(%rcx), %rax
movq %rax, 0x8(%rdx)
movq 0x10(%rsp), %rax
movslq (%rcx), %rcx
jmp 0xa4eb
cmpl $0x28, %eax
ja 0xa1e8
movq %rax, %rcx
addq 0x10(%rdx), %rcx
addl $0x8, %eax
movl %eax, (%rdx)
jmp 0xa1f4
movq 0x8(%rdx), %rcx
leaq 0x8(%rcx), %rax
movq %rax, 0x8(%rdx)
movq 0x10(%rsp), %rax
movsd (%rcx), %xmm1
cmpl $0x9, %r15d
movl $0x9, %edi
cmovbl %r15d, %edi
movapd %xmm1, %xmm0
xorpd 0x40b6(%rip), %xmm0     # 0xe020
ucomisd %xmm1, %xmm0
jbe 0x9f7e
xorl %r10d, %r10d
movl $0x2d, %r8d
jmp 0xa222
testb $0x2, %al
jne 0xa219
movl %eax, %r8d
andl $0x4, %r8d
sete %r10b
shll $0x3, %r8d
jmp 0xa222
movq 0x8(%rdx), %rax
leaq 0x8(%rax), %rcx
movq %rcx, 0x8(%rdx)
movq 0x30(%rsp), %rsi
movq 0x28(%rsp), %rdi
movl 0x24(%rsp), %r8d
movq 0x18(%rsp), %rcx
leaq 0x1(%rcx), %rdx
cmpq %rsi, %rdx
jae 0x9fcd
movb (%rax), %al
movq %rdx, 0x18(%rsp)
movb %al, (%rdi,%rcx)
incl %r8d
movl %r8d, 0x24(%rsp)
jmp 0xa51a
movq 0x8(%rdx), %rax
leaq 0x8(%rax), %rcx
movq %rcx, 0x8(%rdx)
movq 0x10(%rsp), %r10
movq (%rax), %rcx
jmp 0xa1fa
movq 0x8(%rdx), %rax
leaq 0x8(%rax), %rcx
movq %rcx, 0x8(%rdx)
movq (%rax), %rcx
testq %rcx, %rcx
leaq 0x40fe(%rip), %rax      # 0xe10a
cmoveq %rax, %rcx
xorl %eax, %eax
cmpb $0x0, (%rcx,%rax)
leaq 0x1(%rax), %rax
jne 0xa012
decl %eax
cmpl %r15d, %eax
cmovael %r15d, %eax
subl %eax, %r13d
xorl %eax, %eax
testl %r13d, %r13d
cmovlel %eax, %r13d
movl %r13d, %eax
negl %eax
testb $0x1, 0x10(%rsp)
cmovel %r13d, %eax
testl %eax, %eax
jle 0xa071
movq 0x18(%rsp), %rdx
movl %eax, %esi
movq 0x30(%rsp), %r11
movq 0x28(%rsp), %rbx
leaq 0x1(%rdx), %rdi
cmpq %r11, %rdi
jae 0xa064
movb $0x20, (%rbx,%rdx)
movq %rdi, %rdx
decl %esi
jne 0xa054
movq %rdx, 0x18(%rsp)
xorl %edx, %edx
jmp 0xa07f
movl %eax, %edx
xorl %eax, %eax
movq 0x30(%rsp), %r11
movq 0x28(%rsp), %rbx
movb (%rcx), %r8b
testb %r8b, %r8b
je 0xa0d6
movq 0x18(%rsp), %rsi
xorl %edi, %edi
testl %r15d, %r15d
sets %r9b
cmpl %r15d, %edi
setl %r10b
orb %r9b, %r10b
cmpb $0x1, %r10b
jne 0xa0c2
leaq 0x1(%rsi), %r9
cmpq %r11, %r9
jae 0xa0b5
movb %r8b, (%rbx,%rsi)
movq %r9, %rsi
movb 0x1(%rcx,%rdi), %r8b
incq %rdi
testb %r8b, %r8b
jne 0xa08e
addl %edi, %eax
movl $0x7, %r9d
leaq 0x3f77(%rip), %r10      # 0xe048
movq %rsi, 0x18(%rsp)
movl 0x24(%rsp), %r8d
testl %edx, %edx
jns 0xa101
movq 0x18(%rsp), %rcx
movl %edx, %esi
leaq 0x1(%rcx), %rdi
cmpq %r11, %rdi
jae 0xa0f6
movb $0x20, (%rbx,%rcx)
movq %rdi, %rcx
incl %esi
jne 0xa0e6
movq %rcx, 0x18(%rsp)
subl %edx, %eax
addl %eax, %r8d
movl %r8d, 0x24(%rsp)
xorl %r14d, %r14d
jmp 0xa51a
cmpl $0x28, %eax
ja 0xa48d
movq 0x10(%rdx), %rcx
addq %rax, %rcx
addl $0x8, %eax
movl %eax, (%rdx)
jmp 0xa499
cmpl $0x28, %eax
ja 0xa4bc
movq 0x10(%rdx), %rcx
addq %rax, %rcx
addl $0x8, %eax
movl %eax, (%rdx)
jmp 0xa4c8
cmpl $0x28, %eax
ja 0xa4d5
movq %rax, %rcx
addq 0x10(%rdx), %rcx
addl $0x8, %eax
movl %eax, (%rdx)
jmp 0xa4e1
movq 0x8(%rdx), %rcx
leaq 0x8(%rcx), %rax
movq %rax, 0x8(%rdx)
movq 0x10(%rsp), %rax
movq (%rcx), %rcx
jmp 0xa4eb
cmpl $0x28, %eax
ja 0xa505
movq %rax, %rcx
addq 0x10(%rdx), %rcx
addl $0x8, %eax
movl %eax, (%rdx)
jmp 0xa511
cmpl $0x28, %eax
ja 0xa548
movq 0x10(%rdx), %rcx
addq %rax, %rcx
addl $0x8, %eax
movl %eax, (%rdx)
jmp 0xa554
movq 0x8(%rdx), %rcx
leaq 0x8(%rcx), %rax
movq %rax, 0x8(%rdx)
movslq (%rcx), %rcx
jmp 0xa1f6
movq 0x8(%rdx), %rcx
leaq 0x8(%rcx), %rax
movq %rax, 0x8(%rdx)
movq (%rcx), %rcx
jmp 0xa1f6
cmpl $0x28, %eax
ja 0xa55e
movq %rax, %rcx
addq 0x10(%rdx), %rcx
addl $0x8, %eax
movl %eax, (%rdx)
jmp 0xa56a
movq 0x8(%rdx), %rcx
leaq 0x8(%rcx), %rax
movq %rax, 0x8(%rdx)
movl (%rcx), %ecx
orl $0x40, %r10d
movq 0x28(%rsp), %rdi
leaq 0x18(%rsp), %rsi
movq 0x30(%rsp), %rdx
movl $0x10, %r8d
movl %r13d, %r9d
pushq %r10
jmp 0xa58d
movl $0x2b, %r8d
xorl %r10d, %r10d
testl %r15d, %r15d
movl $0x6, %eax
cmovsl %eax, %edi
movsd 0x3dfb(%rip), %xmm2     # 0xe030
testl %edi, %edi
je 0xa24b
movsd 0x3def(%rip), %xmm2     # 0xe030
movl %edi, %eax
mulsd %xmm3, %xmm2
decl %eax
jne 0xa243
maxsd %xmm1, %xmm0
cvttsd2si %xmm0, %rsi
xorps %xmm1, %xmm1
cvtsi2sd %rsi, %xmm1
subsd %xmm1, %xmm0
mulsd %xmm2, %xmm0
cvttsd2si %xmm0, %rcx
xorps %xmm1, %xmm1
cvtsi2sd %rcx, %xmm1
subsd %xmm1, %xmm0
ucomisd 0x3dc3(%rip), %xmm0     # 0xe040
sbbq $-0x1, %rcx
xorps %xmm0, %xmm0
cvtsi2sd %rcx, %xmm0
testl %edi, %edi
leaq 0x3e67(%rip), %rbx      # 0xe0f9
movabsq $0x6666666666666667, %r14 # imm = 0x6666666666666667
movsd 0x3d8c(%rip), %xmm1     # 0xe030
je 0xa2ca
movl %edi, %eax
mulsd %xmm3, %xmm1
decl %eax
jne 0xa2a8
ucomisd %xmm1, %xmm0
jb 0xa2db
movsd 0x3d72(%rip), %xmm1     # 0xe030
movl %edi, %eax
mulsd %xmm3, %xmm1
decl %eax
jne 0xa2c0
jmp 0xa2cf
testq %rcx, %rcx
jle 0xa2db
incq %rsi
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
xorl %eax, %eax
movq %rax, %r9
movq %rsi, %rax
imulq %r14
movq %rdx, %rax
shrq $0x3f, %rax
sarq $0x2, %rdx
addq %rax, %rdx
leaq (%rdx,%rdx), %rax
leaq (%rax,%rax,4), %rax
movq %rsi, %r11
subq %rax, %r11
movb (%rbx,%r11), %al
movb %al, 0x60(%rsp,%r9)
leaq 0x1(%r9), %rax
cmpq $0x12, %r9
ja 0xa322
addq $-0xa, %rsi
cmpq $-0x13, %rsi
movq %rdx, %rsi
jb 0xa2dd
leaq -0x1(%rax), %rsi
cmpq $0x14, %rax
cmovneq %rax, %rsi
movb $0x0, 0x60(%rsp,%rsi)
xorl %eax, %eax
movq %rax, %r9
movq %rcx, %rax
imulq %r14
movq %rdx, %rax
shrq $0x3f, %rax
sarq $0x2, %rdx
addq %rax, %rdx
leaq (%rdx,%rdx), %rax
leaq (%rax,%rax,4), %rax
movq %rcx, %r11
subq %rax, %r11
movb (%rbx,%r11), %al
movb %al, 0x40(%rsp,%r9)
leaq 0x1(%r9), %rax
cmpq $0x12, %r9
ja 0xa37a
addq $-0xa, %rcx
cmpq $-0x13, %rcx
movq %rdx, %rcx
jb 0xa335
leaq -0x1(%rax), %rcx
cmpq $0x14, %rax
cmovneq %rax, %rcx
movb $0x0, 0x40(%rsp,%rcx)
movzbl %r10b, %eax
addl %eax, %r13d
subl %edi, %r13d
subl %esi, %r13d
addl $-0x2, %r13d
movl %edi, %edx
subl %ecx, %edx
testl %edx, %edx
movl $0x0, %eax
cmovgl %edx, %eax
testl %r13d, %r13d
movl $0x0, %r9d
cmovlel %r9d, %r13d
movl %r13d, %r11d
negl %r11d
movq 0x10(%rsp), %r9
testb $0x1, %r9b
cmovel %r13d, %r11d
testb $0x10, %r9b
je 0xa40c
testl %r11d, %r11d
jle 0xa40c
xorl %r9d, %r9d
movq 0x18(%rsp), %rbx
testb %r10b, %r10b
movq 0x30(%rsp), %r15
movq 0x28(%rsp), %r13
jne 0xa5f2
leaq 0x1(%rbx), %r10
cmpq %r15, %r10
jae 0xa5e1
movq %r10, 0x18(%rsp)
movb %r8b, (%r13,%rbx)
jmp 0xa5e4
testl %r11d, %r11d
movq 0x30(%rsp), %r15
movq 0x28(%rsp), %r13
jle 0xa449
movq 0x18(%rsp), %r9
leal 0x1(%r11), %r10d
leaq 0x1(%r9), %rbx
cmpq %r15, %rbx
jae 0xa436
movb $0x20, (%r13,%r9)
movq %rbx, %r9
decl %r10d
cmpl $0x1, %r10d
jg 0xa424
movq %r9, 0x18(%rsp)
xorl %r10d, %r10d
jmp 0xa44f
movl %r11d, %r10d
xorl %r11d, %r11d
testl %r8d, %r8d
je 0xa46f
movq 0x18(%rsp), %r9
leaq 0x1(%r9), %rbx
cmpq %r15, %rbx
jae 0xa46c
movq %rbx, 0x18(%rsp)
movb %r8b, (%r13,%r9)
incl %r11d
movl %r11d, %r9d
jmp 0xa614
movq 0x8(%rdx), %rcx
leaq 0x8(%rcx), %rax
movq %rax, 0x8(%rdx)
movq 0x10(%rsp), %rax
movslq (%rcx), %rcx
jmp 0xa4e8
movq 0x8(%rdx), %rcx
leaq 0x8(%rcx), %rax
movq %rax, 0x8(%rdx)
movq 0x10(%rsp), %rax
movq (%rcx), %rcx
jmp 0xa4e8
movq 0x8(%rdx), %rcx
leaq 0x8(%rcx), %rax
movq %rax, 0x8(%rdx)
movq (%rcx), %rax
movzwl 0x18(%rsp), %ecx
movw %cx, (%rax)
jmp 0xa51a
movq 0x8(%rdx), %rcx
leaq 0x8(%rcx), %rax
movq %rax, 0x8(%rdx)
movq (%rcx), %rax
movq 0x18(%rsp), %rcx
movq %rcx, (%rax)
jmp 0xa51a
movq 0x8(%rdx), %rcx
leaq 0x8(%rcx), %rax
movq %rax, 0x8(%rdx)
movq 0x10(%rsp), %rax
movl (%rcx), %ecx
orl $0x40, %eax
movq 0x28(%rsp), %rdi
leaq 0x18(%rsp), %rsi
movq 0x30(%rsp), %rdx
movl $0xa, %r8d
jmp 0xa589
movq 0x8(%rdx), %rcx
leaq 0x8(%rcx), %rax
movq %rax, 0x8(%rdx)
movq (%rcx), %rax
movl 0x18(%rsp), %ecx
movl %ecx, (%rax)
xorl %eax, %eax
movq $0x0, 0x10(%rsp)
movl $0x0, 0xc(%rsp)
jmp 0xa5c4
movq 0x8(%rdx), %rcx
leaq 0x8(%rcx), %rax
movq %rax, 0x8(%rdx)
movq 0x10(%rsp), %rax
movslq (%rcx), %rcx
jmp 0xa571
movq 0x8(%rdx), %rcx
leaq 0x8(%rcx), %rax
movq %rax, 0x8(%rdx)
movq 0x10(%rsp), %rax
movq (%rcx), %rcx
jmp 0xa571
movq 0x8(%rdx), %rcx
leaq 0x8(%rcx), %rax
movq %rax, 0x8(%rdx)
movq 0x10(%rsp), %rax
movl (%rcx), %ecx
orl $0x40, %eax
movq 0x28(%rsp), %rdi
leaq 0x18(%rsp), %rsi
movq 0x30(%rsp), %rdx
movl $0x8, %r8d
movl %r13d, %r9d
pushq %rax
pushq %r15
callq 0xa7e5
addq $0x10, %rsp
addl %eax, 0x24(%rsp)
xorl %eax, %eax
movq $0x0, 0x10(%rsp)
movl $0x0, 0xc(%rsp)
movl $0x7, %r9d
leaq 0x3a8c(%rip), %r10      # 0xe048
movsd 0x3a74(%rip), %xmm3     # 0xe038
movb (%r12), %bl
incq %r12
movl %r14d, %r13d
movl %ebp, %r15d
movl %eax, %ecx
cmpl $0x7, %ecx
jne 0x9a28
jmp 0xa730
movq %rbx, %r10
movl $0x1, %r9d
decl %r11d
je 0xa611
movq %r10, %rbx
addl %r11d, %r9d
leaq 0x1(%rbx), %r8
cmpq %r15, %r8
jae 0xa607
movb $0x30, (%r13,%rbx)
movq %r8, %rbx
decl %r11d
jne 0xa5f5
movq %rbx, 0x18(%rsp)
xorl %r10d, %r10d
testl %esi, %esi
je 0xa651
movq 0x18(%rsp), %r8
leal 0x1(%rsi), %r11d
leaq 0x5f(%rsp), %rbx
addq %rbx, %rsi
leaq 0x1(%r8), %rbx
cmpq %r15, %rbx
jae 0xa63d
movb (%rsi), %r14b
movb %r14b, (%r13,%r8)
movq %rbx, %r8
incl %r9d
decl %r11d
decq %rsi
cmpl $0x1, %r11d
jg 0xa629
movq %r8, 0x18(%rsp)
testl %edi, %edi
je 0xa6ab
movq 0x18(%rsp), %rdi
leaq 0x1(%rdi), %rsi
cmpq %r15, %rsi
jae 0xa670
movq %rsi, 0x18(%rsp)
movb $0x2e, (%r13,%rdi)
jmp 0xa673
movq %rdi, %rsi
incl %r9d
testl %ecx, %ecx
je 0xa6ab
leal 0x1(%rcx), %edi
leaq 0x3f(%rsp), %r8
addq %r8, %rcx
leaq 0x1(%rsi), %r8
cmpq %r15, %r8
jae 0xa699
movb (%rcx), %r11b
movb %r11b, (%r13,%rsi)
movq %r8, %rsi
incl %r9d
decl %edi
decq %rcx
cmpl $0x1, %edi
jg 0xa685
movq %rsi, 0x18(%rsp)
testl %edx, %edx
jle 0xa6d8
movq 0x18(%rsp), %rcx
leal 0x1(%rax), %edx
leaq 0x1(%rcx), %rsi
cmpq %r15, %rsi
jae 0xa6c9
movb $0x30, (%r13,%rcx)
movq %rsi, %rcx
decl %edx
cmpl $0x1, %edx
jg 0xa6b7
movq %rcx, 0x18(%rsp)
addl %eax, %r9d
testl %r10d, %r10d
jns 0xa703
movq 0x18(%rsp), %rax
movl %r10d, %ecx
leaq 0x1(%rax), %rdx
cmpq %r15, %rdx
jae 0xa6f7
movb $0x20, (%r13,%rax)
movq %rdx, %rax
incl %ecx
jne 0xa6e5
movq %rax, 0x18(%rsp)
subl %r10d, %r9d
addl %r9d, 0x24(%rsp)
xorl %r14d, %r14d
xorl %eax, %eax
movq $0x0, 0x10(%rsp)
movl $0x0, 0xc(%rsp)
movl $0x7, %r9d
leaq 0x391d(%rip), %r10      # 0xe048
jmp 0xa5c4
movq 0x28(%rsp), %rdx
testq %rdx, %rdx
je 0xa752
movq 0x18(%rsp), %rax
movq 0x30(%rsp), %rcx
decq %rcx
cmpq %rcx, %rax
cmovbq %rax, %rcx
movb $0x0, (%rdx,%rcx)
movl 0x24(%rsp), %eax
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq