// File: /workspace/github_c_makefile_star2_O0/hermantb[P]fast_convert/fast_convert.c
// Function: fast_strtod
double
fast_strtod (const char *str, char **endptr)
{
  char *cp = (char *) str;
  int sign = 0;
  int esign = 0;
  int exp;
  int tmp;
  int c;
  uint64_t n1;
  uint64_t n2;
  union
  {
    uint64_t u;
    double d;
  } td;

  while (isspace (*cp)) {
    cp++;
  }
  if (*cp == '+') {
    cp++;
  }
  else if (*cp == '-') {
    sign = 1;
    cp++;
  }
  if (*cp == 'n' || *cp == 'N') {
    if (strncasecmp (cp, "nan", 3) == 0) {
      cp += strlen ("nan");
      if (endptr) {
	*endptr = cp;
      }
      if (*cp == '(') {
	cp++;
	while (isalpha (*cp) || isdigit (*cp) || *cp == '_') {
	  cp++;
	}
	if (*cp == ')') {
	  if (endptr) {
	    *endptr = cp + 1;
	  }
	}
      }
      td.u =
	sign ? UINT64_C (0xFFF8000000000000) : UINT64_C (0x7FF8000000000000);
      return td.d;
    }
    if (endptr) {
      *endptr = (char *) str;
    }
    return 0.0;
  }
  if (*cp == 'i' || *cp == 'I') {
    if (strncasecmp (cp, "inf", 3) == 0) {
      cp += strlen ("inf");
      if (strncasecmp (cp, "inity", strlen ("inity")) == 0) {
	cp += strlen ("inity");
      }
      if (endptr) {
	*endptr = cp;
      }
      td.u =
	sign ? UINT64_C (0xFFF0000000000000) : UINT64_C (0x7FF0000000000000);
      return td.d;
    }
    if (endptr) {
      *endptr = (char *) str;
    }
    return 0.0;
  }
  if (*cp == '0' && (cp[1] == 'x' || cp[1] == 'X')) {
    if (!isxdigit (cp[2]) && (cp[2] != DECIMAL_POINT || !isxdigit (cp[3]))) {
      if (endptr) {
	*endptr = &cp[1];
      }
      return 0.0 * (sign ? -1.0 : 1.0);
    }
    cp += 2;
    n1 = 0;
    exp = 0;
    c = 0;
    while (isxdigit (*cp)) {
      if (c < 16) {
	n1 = n1 * 16 + convert_num[*cp & 0xFFu];
      }
      else {
	exp += 4;
      }
      cp++;
      if (n1) {
	c++;
      }
    }
    if (*cp == DECIMAL_POINT) {
      cp++;
      while (isxdigit (*cp)) {
	if (c < 16) {
	  n1 = n1 * 16 + convert_num[*cp & 0xFFu];
	  exp -= 4;
	}
	cp++;
	if (n1) {
	  c++;
	}
      }
    }
    if (*cp == 'p' || *cp == 'P') {
      cp++;
      if (*cp == '+') {
	cp++;
      }
      else if (*cp == '-') {
	esign = 1;
	cp++;
      }
      tmp = 0;
      c = 0;
      while (isdigit (*cp)) {
	if (c < 5) {
	  tmp = tmp * 10 + (*cp - '0');
	}
	cp++;
	if (tmp) {
	  c++;
	}
      }
      if (esign) {
	exp -= tmp;
      }
      else {
	exp += tmp;
      }
    }
    if (endptr) {
      *endptr = cp;
    }
    /* sets ERANGE and returns HUGE_VAL on error */
    return ldexp (n1, exp) * (sign ? -1.0 : 1.0);
  }
  if (!isdigit (*cp) && (*cp != DECIMAL_POINT || !isdigit (cp[1]))) {
    if (endptr) {
      *endptr = (char *) str;
    }
    return 0.0;
  }
  n1 = 0;
  n2 = 0;
  exp = 0;
  c = 0;
  while (c < 19 && isdigit (*cp)) {
    n2 = n2 * 10 + (*cp - '0');
    cp++;
    if (n2) {
      c++;
    }
  }
  while (isdigit (*cp)) {
    if (c < 38) {
      mul_10_add (&n1, &n2, *cp - '0');
    }
    else {
      exp++;
    }
    cp++;
    if (n1 || n2) {
      c++;
    }
  }
  if (*cp == DECIMAL_POINT) {
    cp++;
    while (c < 19 && isdigit (*cp)) {
      n2 = n2 * 10 + (*cp - '0');
      exp--;
      cp++;
      if (n2) {
	c++;
      }
    }
    while (isdigit (*cp)) {
      if (c < 38) {
	mul_10_add (&n1, &n2, *cp - '0');
	exp--;
      }
      cp++;
      if (n1 || n2) {
	c++;
      }
    }
  }
  if (*cp == 'e' || *cp == 'E') {
    cp++;
    if (*cp == '+') {
      cp++;
    }
    else if (*cp == '-') {
      esign = 1;
      cp++;
    }
    tmp = 0;
    c = 0;
    while (isdigit (*cp)) {
      if (c < 5) {
	tmp = tmp * 10 + (*cp - '0');
      }
      cp++;
      if (tmp) {
	c++;
      }
    }
    if (esign) {
      exp -= tmp;
    }
    else {
      exp += tmp;
    }
  }
  if (endptr) {
    *endptr = cp;
  }
  c = 64;
  if (n1 == 0) {
    n1 = n2;
    n2 = 0;
    c = 0;
  }
  if (n1 && (exp >= -362 && exp <= 309)) {
#ifdef WIN
    unsigned int s = __builtin_clzll (n1);
#else
#ifdef __GNUC__
#if __WORDSIZE == 64
    unsigned int s = __builtin_clzl (n1);
#else
    unsigned int s = __builtin_clzll (n1);
#endif
#else
    unsigned int s = calc_clz64 (n1);
#endif
#endif

    n1 = (n1 << s) | (n2 >> (64 - s));
    n2 <<= s;

    uint32_t lo;
    uint64_t r = mul_96 (n1, dpowers10[exp + 362].mul1,
			 dpowers10[exp + 362].mul2 + 1, &lo);

    if (n2) {
      uint32_t lo2;
      uint64_t l = mul_96 (n2, dpowers10[exp + 362].mul1,
			   dpowers10[exp + 362].mul2 + 1, &lo2) >> 32;
      lo += l;
      if (lo < l) {
	r++;
	if (r == 0) {
	  r--;
	}
      }
    }

    return ldexp (r, dpowers10[exp + 362].exp + 64 - s + c) *
      (sign ? -1.0 : 1.0);
  }
  return 0.0 * (sign ? -1.0 : 1.0);
}

// Assembly:
subq $0xd8, %rsp
movq %rdi, 0xc8(%rsp)
movq %rsi, 0xc0(%rsp)
movq 0xc8(%rsp), %rax
movq %rax, 0xb8(%rsp)
movl $0x0, 0xb4(%rsp)
movl $0x0, 0xb0(%rsp)
callq 0x1160
movq (%rax), %rax
movq 0xb8(%rsp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
je 0x9aa7
movq 0xb8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb8(%rsp)
jmp 0x9a6d
movq 0xb8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x2b, %eax
jne 0x9acd
movq 0xb8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb8(%rsp)
jmp 0x9afe
movq 0xb8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x9afc
movl $0x1, 0xb4(%rsp)
movq 0xb8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb8(%rsp)
jmp 0x9afe
movq 0xb8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x6e, %eax
je 0x9b22
movq 0xb8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x4e, %eax
jne 0x9cd2
movq 0xb8(%rsp), %rdi
leaq 0x165fd(%rip), %rsi     # 0x2012e
movl $0x3, %edx
callq 0x1110
cmpl $0x0, %eax
jne 0x9ca3
movq 0xb8(%rsp), %rax
addq $0x3, %rax
movq %rax, 0xb8(%rsp)
cmpq $0x0, 0xc0(%rsp)
je 0x9b76
movq 0xb8(%rsp), %rcx
movq 0xc0(%rsp), %rax
movq %rcx, (%rax)
movq 0xb8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x28, %eax
jne 0x9c62
movq 0xb8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb8(%rsp)
callq 0x1160
movq (%rax), %rax
movq 0xb8(%rsp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %ecx
andl $0x400, %ecx            # imm = 0x400
movb $0x1, %al
cmpl $0x0, %ecx
movb %al, 0x67(%rsp)
jne 0x9c09
callq 0x1160
movq (%rax), %rax
movq 0xb8(%rsp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %ecx
andl $0x800, %ecx            # imm = 0x800
movb $0x1, %al
cmpl $0x0, %ecx
movb %al, 0x67(%rsp)
jne 0x9c09
movq 0xb8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x5f, %eax
sete %al
movb %al, 0x67(%rsp)
movb 0x67(%rsp), %al
testb $0x1, %al
jne 0x9c13
jmp 0x9c2c
movq 0xb8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb8(%rsp)
jmp 0x9b9e
movq 0xb8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x29, %eax
jne 0x9c60
cmpq $0x0, 0xc0(%rsp)
je 0x9c5e
movq 0xb8(%rsp), %rcx
addq $0x1, %rcx
movq 0xc0(%rsp), %rax
movq %rcx, (%rax)
jmp 0x9c60
jmp 0x9c62
movl 0xb4(%rsp), %edx
movabsq $0x7ff8000000000000, %rax # imm = 0x7FF8000000000000
movabsq $-0x8000000000000, %rcx # imm = 0xFFF8000000000000
cmpl $0x0, %edx
cmovneq %rcx, %rax
movq %rax, 0x88(%rsp)
movsd 0x88(%rsp), %xmm0
movsd %xmm0, 0xd0(%rsp)
jmp 0xaacf
cmpq $0x0, 0xc0(%rsp)
je 0x9cc1
movq 0xc8(%rsp), %rcx
movq 0xc0(%rsp), %rax
movq %rcx, (%rax)
xorps %xmm0, %xmm0
movsd %xmm0, 0xd0(%rsp)
jmp 0xaacf
movq 0xb8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x69, %eax
je 0x9cf6
movq 0xb8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x49, %eax
jne 0x9dec
movq 0xb8(%rsp), %rdi
leaq 0x16425(%rip), %rsi     # 0x2012a
movl $0x3, %edx
callq 0x1110
cmpl $0x0, %eax
jne 0x9dbd
movq 0xb8(%rsp), %rax
addq $0x3, %rax
movq %rax, 0xb8(%rsp)
movq 0xb8(%rsp), %rdi
leaq 0x16edb(%rip), %rsi     # 0x20c16
movl $0x5, %edx
callq 0x1110
cmpl $0x0, %eax
jne 0x9d5e
movq 0xb8(%rsp), %rax
addq $0x5, %rax
movq %rax, 0xb8(%rsp)
cmpq $0x0, 0xc0(%rsp)
je 0x9d7c
movq 0xb8(%rsp), %rcx
movq 0xc0(%rsp), %rax
movq %rcx, (%rax)
movl 0xb4(%rsp), %edx
movabsq $0x7ff0000000000000, %rax # imm = 0x7FF0000000000000
movabsq $-0x10000000000000, %rcx # imm = 0xFFF0000000000000
cmpl $0x0, %edx
cmovneq %rcx, %rax
movq %rax, 0x88(%rsp)
movsd 0x88(%rsp), %xmm0
movsd %xmm0, 0xd0(%rsp)
jmp 0xaacf
cmpq $0x0, 0xc0(%rsp)
je 0x9ddb
movq 0xc8(%rsp), %rcx
movq 0xc0(%rsp), %rax
movq %rcx, (%rax)
xorps %xmm0, %xmm0
movsd %xmm0, 0xd0(%rsp)
jmp 0xaacf
movq 0xb8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x30, %eax
jne 0xa2d6
movq 0xb8(%rsp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x78, %eax
je 0x9e26
movq 0xb8(%rsp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x58, %eax
jne 0xa2d6
callq 0x1160
movq (%rax), %rax
movq 0xb8(%rsp), %rcx
movsbl 0x2(%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x1000, %eax           # imm = 0x1000
cmpl $0x0, %eax
jne 0x9f02
movq 0xb8(%rsp), %rax
movsbl 0x2(%rax), %eax
movq 0x1926e(%rip), %rcx     # 0x230d0
movq (%rcx), %rcx
movsbl (%rcx), %ecx
cmpl %ecx, %eax
jne 0x9e91
callq 0x1160
movq (%rax), %rax
movq 0xb8(%rsp), %rcx
movsbl 0x3(%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x1000, %eax           # imm = 0x1000
cmpl $0x0, %eax
jne 0x9f02
cmpq $0x0, 0xc0(%rsp)
je 0x9eb3
movq 0xb8(%rsp), %rcx
addq $0x1, %rcx
movq 0xc0(%rsp), %rax
movq %rcx, (%rax)
movl 0xb4(%rsp), %eax
movsd 0x161ee(%rip), %xmm0    # 0x200b0
movsd 0x161ee(%rip), %xmm1    # 0x200b8
movsd %xmm1, 0x50(%rsp)
cmpl $0x0, %eax
movsd %xmm0, 0x58(%rsp)
jne 0x9ee7
movsd 0x50(%rsp), %xmm0
movsd %xmm0, 0x58(%rsp)
movsd 0x58(%rsp), %xmm1
xorps %xmm0, %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, 0xd0(%rsp)
jmp 0xaacf
movq 0xb8(%rsp), %rax
addq $0x2, %rax
movq %rax, 0xb8(%rsp)
movq $0x0, 0x98(%rsp)
movl $0x0, 0xac(%rsp)
movl $0x0, 0xa4(%rsp)
callq 0x1160
movq (%rax), %rax
movq 0xb8(%rsp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x1000, %eax           # imm = 0x1000
cmpl $0x0, %eax
je 0x9fe8
cmpl $0x10, 0xa4(%rsp)
jge 0x9fa2
movq 0x98(%rsp), %rax
shlq $0x4, %rax
movq 0xb8(%rsp), %rcx
movsbl (%rcx), %ecx
andl $0xff, %ecx
movl %ecx, %ecx
movl %ecx, %edx
leaq 0x1914e(%rip), %rcx     # 0x230e0
movl (%rcx,%rdx,4), %ecx
addq %rcx, %rax
movq %rax, 0x98(%rsp)
jmp 0x9fb3
movl 0xac(%rsp), %eax
addl $0x4, %eax
movl %eax, 0xac(%rsp)
movq 0xb8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb8(%rsp)
cmpq $0x0, 0x98(%rsp)
je 0x9fe3
movl 0xa4(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xa4(%rsp)
jmp 0x9f38
movq 0xb8(%rsp), %rax
movsbl (%rax), %eax
movq 0x190d6(%rip), %rcx     # 0x230d0
movq (%rcx), %rcx
movsbl (%rcx), %ecx
cmpl %ecx, %eax
jne 0xa0cc
movq 0xb8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb8(%rsp)
callq 0x1160
movq (%rax), %rax
movq 0xb8(%rsp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x1000, %eax           # imm = 0x1000
cmpl $0x0, %eax
je 0xa0ca
cmpl $0x10, 0xa4(%rsp)
jge 0xa095
movq 0x98(%rsp), %rax
shlq $0x4, %rax
movq 0xb8(%rsp), %rcx
movsbl (%rcx), %ecx
andl $0xff, %ecx
movl %ecx, %ecx
movl %ecx, %edx
leaq 0x1906a(%rip), %rcx     # 0x230e0
movl (%rcx,%rdx,4), %ecx
addq %rcx, %rax
movq %rax, 0x98(%rsp)
movl 0xac(%rsp), %eax
subl $0x4, %eax
movl %eax, 0xac(%rsp)
movq 0xb8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb8(%rsp)
cmpq $0x0, 0x98(%rsp)
je 0xa0c5
movl 0xa4(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xa4(%rsp)
jmp 0xa01c
jmp 0xa0cc
movq 0xb8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x70, %eax
je 0xa0f0
movq 0xb8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x50, %eax
jne 0xa229
movq 0xb8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb8(%rsp)
movq 0xb8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x2b, %eax
jne 0xa12a
movq 0xb8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb8(%rsp)
jmp 0xa15b
movq 0xb8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0xa159
movl $0x1, 0xb0(%rsp)
movq 0xb8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb8(%rsp)
jmp 0xa15b
movl $0x0, 0xa8(%rsp)
movl $0x0, 0xa4(%rsp)
callq 0x1160
movq (%rax), %rax
movq 0xb8(%rsp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
je 0xa1ef
cmpl $0x5, 0xa4(%rsp)
jge 0xa1be
imull $0xa, 0xa8(%rsp), %eax
movq 0xb8(%rsp), %rcx
movsbl (%rcx), %ecx
subl $0x30, %ecx
addl %ecx, %eax
movl %eax, 0xa8(%rsp)
movq 0xb8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb8(%rsp)
cmpl $0x0, 0xa8(%rsp)
je 0xa1ed
movl 0xa4(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xa4(%rsp)
jmp 0xa171
cmpl $0x0, 0xb0(%rsp)
je 0xa212
movl 0xa8(%rsp), %ecx
movl 0xac(%rsp), %eax
subl %ecx, %eax
movl %eax, 0xac(%rsp)
jmp 0xa227
movl 0xa8(%rsp), %eax
addl 0xac(%rsp), %eax
movl %eax, 0xac(%rsp)
jmp 0xa229
cmpq $0x0, 0xc0(%rsp)
je 0xa247
movq 0xb8(%rsp), %rcx
movq 0xc0(%rsp), %rax
movq %rcx, (%rax)
movaps 0x15e72(%rip), %xmm1    # 0x200c0
movq 0x98(%rsp), %xmm0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x15e6d(%rip), %xmm1    # 0x200d0
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movl 0xac(%rsp), %edi
callq 0x1030
movsd %xmm0, 0x38(%rsp)
movl 0xb4(%rsp), %eax
movsd 0x15e1d(%rip), %xmm0    # 0x200b0
movsd 0x15e1d(%rip), %xmm1    # 0x200b8
movsd %xmm1, 0x40(%rsp)
cmpl $0x0, %eax
movsd %xmm0, 0x48(%rsp)
jne 0xa2b8
movsd 0x40(%rsp), %xmm0
movsd %xmm0, 0x48(%rsp)
movsd 0x38(%rsp), %xmm0
movsd 0x48(%rsp), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, 0xd0(%rsp)
jmp 0xaacf
callq 0x1160
movq (%rax), %rax
movq 0xb8(%rsp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
jne 0xa36a
movq 0xb8(%rsp), %rax
movsbl (%rax), %eax
movq 0x18dc4(%rip), %rcx     # 0x230d0
movq (%rcx), %rcx
movsbl (%rcx), %ecx
cmpl %ecx, %eax
jne 0xa33b
callq 0x1160
movq (%rax), %rax
movq 0xb8(%rsp), %rcx
movsbl 0x1(%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
jne 0xa36a
cmpq $0x0, 0xc0(%rsp)
je 0xa359
movq 0xc8(%rsp), %rcx
movq 0xc0(%rsp), %rax
movq %rcx, (%rax)
xorps %xmm0, %xmm0
movsd %xmm0, 0xd0(%rsp)
jmp 0xaacf
movq $0x0, 0x98(%rsp)
movq $0x0, 0x90(%rsp)
movl $0x0, 0xac(%rsp)
movl $0x0, 0xa4(%rsp)
xorl %eax, %eax
cmpl $0x13, 0xa4(%rsp)
movb %al, 0x37(%rsp)
jge 0xa3d1
callq 0x1160
movq (%rax), %rax
movq 0xb8(%rsp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
setne %al
movb %al, 0x37(%rsp)
movb 0x37(%rsp), %al
testb $0x1, %al
jne 0xa3db
jmp 0xa435
imulq $0xa, 0x90(%rsp), %rax
movq 0xb8(%rsp), %rcx
movsbl (%rcx), %ecx
subl $0x30, %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, 0x90(%rsp)
movq 0xb8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb8(%rsp)
cmpq $0x0, 0x90(%rsp)
je 0xa430
movl 0xa4(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xa4(%rsp)
jmp 0xa398
jmp 0xa437
callq 0x1160
movq (%rax), %rax
movq 0xb8(%rsp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
je 0xa4df
cmpl $0x26, 0xa4(%rsp)
jge 0xa48e
movq 0xb8(%rsp), %rax
movsbl (%rax), %edx
subl $0x30, %edx
leaq 0x98(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0xaae0
jmp 0xa49f
movl 0xac(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xac(%rsp)
movq 0xb8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb8(%rsp)
cmpq $0x0, 0x98(%rsp)
jne 0xa4c9
cmpq $0x0, 0x90(%rsp)
je 0xa4da
movl 0xa4(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xa4(%rsp)
jmp 0xa437
movq 0xb8(%rsp), %rax
movsbl (%rax), %eax
movq 0x18bdf(%rip), %rcx     # 0x230d0
movq (%rcx), %rcx
movsbl (%rcx), %ecx
cmpl %ecx, %eax
jne 0xa667
movq 0xb8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb8(%rsp)
xorl %eax, %eax
cmpl $0x13, 0xa4(%rsp)
movb %al, 0x36(%rsp)
jge 0xa54c
callq 0x1160
movq (%rax), %rax
movq 0xb8(%rsp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
setne %al
movb %al, 0x36(%rsp)
movb 0x36(%rsp), %al
testb $0x1, %al
jne 0xa556
jmp 0xa5c1
imulq $0xa, 0x90(%rsp), %rax
movq 0xb8(%rsp), %rcx
movsbl (%rcx), %ecx
subl $0x30, %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, 0x90(%rsp)
movl 0xac(%rsp), %eax
addl $-0x1, %eax
movl %eax, 0xac(%rsp)
movq 0xb8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb8(%rsp)
cmpq $0x0, 0x90(%rsp)
je 0xa5bc
movl 0xa4(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xa4(%rsp)
jmp 0xa513
jmp 0xa5c3
callq 0x1160
movq (%rax), %rax
movq 0xb8(%rsp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
je 0xa665
cmpl $0x26, 0xa4(%rsp)
jge 0xa625
movq 0xb8(%rsp), %rax
movsbl (%rax), %edx
subl $0x30, %edx
leaq 0x98(%rsp), %rdi
leaq 0x90(%rsp), %rsi
callq 0xaae0
movl 0xac(%rsp), %eax
addl $-0x1, %eax
movl %eax, 0xac(%rsp)
movq 0xb8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb8(%rsp)
cmpq $0x0, 0x98(%rsp)
jne 0xa64f
cmpq $0x0, 0x90(%rsp)
je 0xa660
movl 0xa4(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xa4(%rsp)
jmp 0xa5c3
jmp 0xa667
movq 0xb8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x65, %eax
je 0xa68b
movq 0xb8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x45, %eax
jne 0xa7c4
movq 0xb8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb8(%rsp)
movq 0xb8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x2b, %eax
jne 0xa6c5
movq 0xb8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb8(%rsp)
jmp 0xa6f6
movq 0xb8(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0xa6f4
movl $0x1, 0xb0(%rsp)
movq 0xb8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb8(%rsp)
jmp 0xa6f6
movl $0x0, 0xa8(%rsp)
movl $0x0, 0xa4(%rsp)
callq 0x1160
movq (%rax), %rax
movq 0xb8(%rsp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
je 0xa78a
cmpl $0x5, 0xa4(%rsp)
jge 0xa759
imull $0xa, 0xa8(%rsp), %eax
movq 0xb8(%rsp), %rcx
movsbl (%rcx), %ecx
subl $0x30, %ecx
addl %ecx, %eax
movl %eax, 0xa8(%rsp)
movq 0xb8(%rsp), %rax
addq $0x1, %rax
movq %rax, 0xb8(%rsp)
cmpl $0x0, 0xa8(%rsp)
je 0xa788
movl 0xa4(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xa4(%rsp)
jmp 0xa70c
cmpl $0x0, 0xb0(%rsp)
je 0xa7ad
movl 0xa8(%rsp), %ecx
movl 0xac(%rsp), %eax
subl %ecx, %eax
movl %eax, 0xac(%rsp)
jmp 0xa7c2
movl 0xa8(%rsp), %eax
addl 0xac(%rsp), %eax
movl %eax, 0xac(%rsp)
jmp 0xa7c4
cmpq $0x0, 0xc0(%rsp)
je 0xa7e2
movq 0xb8(%rsp), %rcx
movq 0xc0(%rsp), %rax
movq %rcx, (%rax)
movl $0x40, 0xa4(%rsp)
cmpq $0x0, 0x98(%rsp)
jne 0xa81f
movq 0x90(%rsp), %rax
movq %rax, 0x98(%rsp)
movq $0x0, 0x90(%rsp)
movl $0x0, 0xa4(%rsp)
cmpq $0x0, 0x98(%rsp)
je 0xaa85
cmpl $0xfffffe96, 0xac(%rsp) # imm = 0xFFFFFE96
jl 0xaa85
cmpl $0x135, 0xac(%rsp) # imm = 0x135
jg 0xaa85
movq 0x98(%rsp), %rax
bsrq %rax, %rax
xorq $0x3f, %rax
movl %eax, 0x84(%rsp)
movq 0x98(%rsp), %rax
movl 0x84(%rsp), %ecx
shlq %cl, %rax
movq 0x90(%rsp), %rdx
movl $0x40, %ecx
subl 0x84(%rsp), %ecx
movl %ecx, %ecx
shrq %cl, %rdx
movq %rdx, %rcx
orq %rcx, %rax
movq %rax, 0x98(%rsp)
movl 0x84(%rsp), %ecx
movq 0x90(%rsp), %rax
movl %ecx, %ecx
shlq %cl, %rax
movq %rax, 0x90(%rsp)
movq 0x98(%rsp), %rdi
movl 0xac(%rsp), %eax
addl $0x16a, %eax            # imm = 0x16A
movslq %eax, %rcx
leaq 0x12c46(%rip), %rax     # 0x1d520
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rsi
movl 0xac(%rsp), %eax
addl $0x16a, %eax            # imm = 0x16A
movslq %eax, %rcx
leaq 0x12c26(%rip), %rax     # 0x1d520
shlq $0x4, %rcx
addq %rcx, %rax
movl 0x8(%rax), %edx
addl $0x1, %edx
leaq 0x80(%rsp), %rcx
callq 0x8b70
movq %rax, 0x78(%rsp)
cmpq $0x0, 0x90(%rsp)
je 0xa9d2
movq 0x90(%rsp), %rdi
movl 0xac(%rsp), %eax
addl $0x16a, %eax            # imm = 0x16A
movslq %eax, %rcx
leaq 0x12bda(%rip), %rax     # 0x1d520
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rsi
movl 0xac(%rsp), %eax
addl $0x16a, %eax            # imm = 0x16A
movslq %eax, %rcx
leaq 0x12bba(%rip), %rax     # 0x1d520
shlq $0x4, %rcx
addq %rcx, %rax
movl 0x8(%rax), %edx
addl $0x1, %edx
leaq 0x74(%rsp), %rcx
callq 0x8b70
shrq $0x20, %rax
movq %rax, 0x68(%rsp)
movq 0x68(%rsp), %rcx
movl 0x80(%rsp), %eax
addq %rcx, %rax
movl %eax, 0x80(%rsp)
movl 0x80(%rsp), %eax
cmpq 0x68(%rsp), %rax
jae 0xa9d0
movq 0x78(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x78(%rsp)
cmpq $0x0, 0x78(%rsp)
jne 0xa9ce
movq 0x78(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x78(%rsp)
jmp 0xa9d0
jmp 0xa9d2
movaps 0x156e7(%rip), %xmm1    # 0x200c0
movq 0x78(%rsp), %xmm0
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x156e5(%rip), %xmm1    # 0x200d0
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
movl 0xac(%rsp), %eax
addl $0x16a, %eax            # imm = 0x16A
movslq %eax, %rcx
leaq 0x12b10(%rip), %rax     # 0x1d520
shlq $0x4, %rcx
addq %rcx, %rax
movl 0xc(%rax), %edi
addl $0x40, %edi
subl 0x84(%rsp), %edi
addl 0xa4(%rsp), %edi
callq 0x1030
movsd %xmm0, 0x18(%rsp)
movl 0xb4(%rsp), %eax
movsd 0x1566b(%rip), %xmm0    # 0x200b0
movsd 0x1566b(%rip), %xmm1    # 0x200b8
movsd %xmm1, 0x20(%rsp)
cmpl $0x0, %eax
movsd %xmm0, 0x28(%rsp)
jne 0xaa6a
movsd 0x20(%rsp), %xmm0
movsd %xmm0, 0x28(%rsp)
movsd 0x18(%rsp), %xmm0
movsd 0x28(%rsp), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, 0xd0(%rsp)
jmp 0xaacf
movl 0xb4(%rsp), %eax
movsd 0x1561c(%rip), %xmm0    # 0x200b0
movsd 0x1561c(%rip), %xmm1    # 0x200b8
movsd %xmm1, 0x8(%rsp)
cmpl $0x0, %eax
movsd %xmm0, 0x10(%rsp)
jne 0xaab9
movsd 0x8(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movsd 0x10(%rsp), %xmm1
xorps %xmm0, %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, 0xd0(%rsp)
movsd 0xd0(%rsp), %xmm0
addq $0xd8, %rsp
retq