// File: /workspace/github_c_makefile_star2_O0/barabo[P]advanced-shell-history/src/sqlite3.c
// Function: sqlite3AtoF
SQLITE_PRIVATE int sqlite3AtoF(const char *z, double *pResult, int length, u8 enc){
#ifndef SQLITE_OMIT_FLOATING_POINT
  int incr;
  const char *zEnd = z + length;
  /* sign * significand * (10 ^ (esign * exponent)) */
  int sign = 1;    /* sign of significand */
  i64 s = 0;       /* significand */
  int d = 0;       /* adjust exponent for shifting decimal point */
  int esign = 1;   /* sign of exponent */
  int e = 0;       /* exponent */
  int eValid = 1;  /* True exponent is either not used or is well-formed */
  double result;
  int nDigits = 0;
  int nonNum = 0;

  assert( enc==SQLITE_UTF8 || enc==SQLITE_UTF16LE || enc==SQLITE_UTF16BE );
  *pResult = 0.0;   /* Default return value, in case of an error */

  if( enc==SQLITE_UTF8 ){
    incr = 1;
  }else{
    int i;
    incr = 2;
    assert( SQLITE_UTF16LE==2 && SQLITE_UTF16BE==3 );
    for(i=3-enc; i<length && z[i]==0; i+=2){}
    nonNum = i<length;
    zEnd = z+i+enc-3;
    z += (enc&1);
  }

  /* skip leading spaces */
  while( z<zEnd && sqlite3Isspace(*z) ) z+=incr;
  if( z>=zEnd ) return 0;

  /* get sign of significand */
  if( *z=='-' ){
    sign = -1;
    z+=incr;
  }else if( *z=='+' ){
    z+=incr;
  }

  /* skip leading zeroes */
  while( z<zEnd && z[0]=='0' ) z+=incr, nDigits++;

  /* copy max significant digits to significand */
  while( z<zEnd && sqlite3Isdigit(*z) && s<((LARGEST_INT64-9)/10) ){
    s = s*10 + (*z - '0');
    z+=incr, nDigits++;
  }

  /* skip non-significant significand digits
  ** (increase exponent by d to shift decimal left) */
  while( z<zEnd && sqlite3Isdigit(*z) ) z+=incr, nDigits++, d++;
  if( z>=zEnd ) goto do_atof_calc;

  /* if decimal point is present */
  if( *z=='.' ){
    z+=incr;
    /* copy digits from after decimal to significand
    ** (decrease exponent by d to shift decimal right) */
    while( z<zEnd && sqlite3Isdigit(*z) && s<((LARGEST_INT64-9)/10) ){
      s = s*10 + (*z - '0');
      z+=incr, nDigits++, d--;
    }
    /* skip non-significant digits */
    while( z<zEnd && sqlite3Isdigit(*z) ) z+=incr, nDigits++;
  }
  if( z>=zEnd ) goto do_atof_calc;

  /* if exponent is present */
  if( *z=='e' || *z=='E' ){
    z+=incr;
    eValid = 0;
    if( z>=zEnd ) goto do_atof_calc;
    /* get sign of exponent */
    if( *z=='-' ){
      esign = -1;
      z+=incr;
    }else if( *z=='+' ){
      z+=incr;
    }
    /* copy digits to exponent */
    while( z<zEnd && sqlite3Isdigit(*z) ){
      e = e<10000 ? (e*10 + (*z - '0')) : 10000;
      z+=incr;
      eValid = 1;
    }
  }

  /* skip trailing spaces */
  if( nDigits && eValid ){
    while( z<zEnd && sqlite3Isspace(*z) ) z+=incr;
  }

do_atof_calc:
  /* adjust exponent by d, and update sign */
  e = (e*esign) + d;
  if( e<0 ) {
    esign = -1;
    e *= -1;
  } else {
    esign = 1;
  }

  /* if 0 significand */
  if( !s ) {
    /* In the IEEE 754 standard, zero is signed.
    ** Add the sign if we've seen at least one digit */
    result = (sign<0 && nDigits) ? -(double)0 : (double)0;
  } else {
    /* attempt to reduce exponent */
    if( esign>0 ){
      while( s<(LARGEST_INT64/10) && e>0 ) e--,s*=10;
    }else{
      while( !(s%10) && e>0 ) e--,s/=10;
    }

    /* adjust the sign of significand */
    s = sign<0 ? -s : s;

    /* if exponent, scale significand as appropriate
    ** and store in result. */
    if( e ){
      LONGDOUBLE_TYPE scale = 1.0;
      /* attempt to handle extremely small/large numbers better */
      if( e>307 && e<342 ){
        while( e%308 ) { scale *= 1.0e+1; e -= 1; }
        if( esign<0 ){
          result = s / scale;
          result /= 1.0e+308;
        }else{
          result = s * scale;
          result *= 1.0e+308;
        }
      }else if( e>=342 ){
        if( esign<0 ){
          result = 0.0*s;
        }else{
          result = 1e308*1e308*s;  /* Infinity */
        }
      }else{
        /* 1.0e+22 is the largest power of 10 than can be 
        ** represented exactly. */
        while( e%22 ) { scale *= 1.0e+1; e -= 1; }
        while( e>0 ) { scale *= 1.0e+22; e -= 22; }
        if( esign<0 ){
          result = s / scale;
        }else{
          result = s * scale;
        }
      }
    } else {
      result = (double)s;
    }
  }

  /* store the result */
  *pResult = result;

  /* return true if number and no extra non-whitespace chracters after */
  return z>=zEnd && nDigits>0 && eValid && nonNum==0;
#else
  return !sqlite3Atoi64(z, pResult, length, enc);
#endif /* SQLITE_OMIT_FLOATING_POINT */
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movb %cl, %al
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
movb %al, -0x1d(%rbp)
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
movl $0x1, -0x34(%rbp)
movq $0x0, -0x40(%rbp)
movl $0x0, -0x44(%rbp)
movl $0x1, -0x48(%rbp)
movl $0x0, -0x4c(%rbp)
movl $0x1, -0x50(%rbp)
movl $0x0, -0x5c(%rbp)
movl $0x0, -0x60(%rbp)
movq -0x18(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
movzbl -0x1d(%rbp), %eax
cmpl $0x1, %eax
jne 0x30953
movl $0x1, -0x24(%rbp)
jmp 0x309ec
movl $0x2, -0x24(%rbp)
movzbl -0x1d(%rbp), %ecx
movl $0x3, %eax
subl %ecx, %eax
movl %eax, -0x64(%rbp)
movl -0x64(%rbp), %ecx
xorl %eax, %eax
cmpl -0x1c(%rbp), %ecx
movb %al, -0xc1(%rbp)
jge 0x30990
movq -0x10(%rbp), %rax
movslq -0x64(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
sete %al
movb %al, -0xc1(%rbp)
movb -0xc1(%rbp), %al
testb $0x1, %al
jne 0x3099c
jmp 0x309a9
jmp 0x3099e
movl -0x64(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x64(%rbp)
jmp 0x30968
movl -0x64(%rbp), %eax
cmpl -0x1c(%rbp), %eax
setl %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x60(%rbp)
movq -0x10(%rbp), %rax
movslq -0x64(%rbp), %rcx
addq %rcx, %rax
movzbl -0x1d(%rbp), %ecx
movslq %ecx, %rcx
addq %rcx, %rax
addq $-0x3, %rax
movq %rax, -0x30(%rbp)
movzbl -0x1d(%rbp), %ecx
andl $0x1, %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
jmp 0x309ee
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpq -0x30(%rbp), %rcx
movb %al, -0xc2(%rbp)
jae 0x30a23
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x7a030(%rip), %rax     # 0xaaa40
movzbl (%rax,%rcx), %eax
andl $0x1, %eax
cmpl $0x0, %eax
setne %al
movb %al, -0xc2(%rbp)
movb -0xc2(%rbp), %al
testb $0x1, %al
jne 0x30a2f
jmp 0x30a42
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
jmp 0x309ee
movq -0x10(%rbp), %rax
cmpq -0x30(%rbp), %rax
jb 0x30a58
movl $0x0, -0x4(%rbp)
jmp 0x31234
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x30a7e
movl $0xffffffff, -0x34(%rbp) # imm = 0xFFFFFFFF
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
jmp 0x30a9d
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2b, %eax
jne 0x30a9b
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
jmp 0x30a9d
jmp 0x30a9f
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpq -0x30(%rbp), %rcx
movb %al, -0xc3(%rbp)
jae 0x30ac4
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x30, %eax
sete %al
movb %al, -0xc3(%rbp)
movb -0xc3(%rbp), %al
testb $0x1, %al
jne 0x30ad0
jmp 0x30aec
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x30a9f
jmp 0x30aee
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpq -0x30(%rbp), %rcx
movb %al, -0xc4(%rbp)
jae 0x30b3b
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x79f30(%rip), %rax     # 0xaaa40
movzbl (%rax,%rcx), %ecx
andl $0x4, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0xc4(%rbp)
je 0x30b3b
movabsq $0xccccccccccccccb, %rax # imm = 0xCCCCCCCCCCCCCCB
cmpq %rax, -0x40(%rbp)
setl %al
movb %al, -0xc4(%rbp)
movb -0xc4(%rbp), %al
testb $0x1, %al
jne 0x30b47
jmp 0x30b7f
imulq $0xa, -0x40(%rbp), %rax
movq -0x10(%rbp), %rcx
movsbl (%rcx), %ecx
subl $0x30, %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x30aee
jmp 0x30b81
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpq -0x30(%rbp), %rcx
movb %al, -0xc5(%rbp)
jae 0x30bb6
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x79e9d(%rip), %rax     # 0xaaa40
movzbl (%rax,%rcx), %eax
andl $0x4, %eax
cmpl $0x0, %eax
setne %al
movb %al, -0xc5(%rbp)
movb -0xc5(%rbp), %al
testb $0x1, %al
jne 0x30bc2
jmp 0x30be7
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x30b81
movq -0x10(%rbp), %rax
cmpq -0x30(%rbp), %rax
jb 0x30bf6
jmp 0x30ea8
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2e, %eax
jne 0x30d12
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpq -0x30(%rbp), %rcx
movb %al, -0xc6(%rbp)
jae 0x30c64
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x79e07(%rip), %rax     # 0xaaa40
movzbl (%rax,%rcx), %ecx
andl $0x4, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0xc6(%rbp)
je 0x30c64
movabsq $0xccccccccccccccb, %rax # imm = 0xCCCCCCCCCCCCCCB
cmpq %rax, -0x40(%rbp)
setl %al
movb %al, -0xc6(%rbp)
movb -0xc6(%rbp), %al
testb $0x1, %al
jne 0x30c70
jmp 0x30cb1
imulq $0xa, -0x40(%rbp), %rax
movq -0x10(%rbp), %rcx
movsbl (%rcx), %ecx
subl $0x30, %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
movl -0x44(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x30c17
jmp 0x30cb3
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpq -0x30(%rbp), %rcx
movb %al, -0xc7(%rbp)
jae 0x30ce8
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x79d6b(%rip), %rax     # 0xaaa40
movzbl (%rax,%rcx), %eax
andl $0x4, %eax
cmpl $0x0, %eax
setne %al
movb %al, -0xc7(%rbp)
movb -0xc7(%rbp), %al
testb $0x1, %al
jne 0x30cf4
jmp 0x30d10
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
jmp 0x30cb3
jmp 0x30d12
movq -0x10(%rbp), %rax
cmpq -0x30(%rbp), %rax
jb 0x30d21
jmp 0x30ea8
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x65, %eax
je 0x30d3d
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x45, %eax
jne 0x30e42
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
movl $0x0, -0x50(%rbp)
movq -0x10(%rbp), %rax
cmpq -0x30(%rbp), %rax
jb 0x30d64
jmp 0x30ea8
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x30d8a
movl $0xffffffff, -0x48(%rbp) # imm = 0xFFFFFFFF
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
jmp 0x30da9
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2b, %eax
jne 0x30da7
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
jmp 0x30da9
jmp 0x30dab
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpq -0x30(%rbp), %rcx
movb %al, -0xc8(%rbp)
jae 0x30de0
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x79c73(%rip), %rax     # 0xaaa40
movzbl (%rax,%rcx), %eax
andl $0x4, %eax
cmpl $0x0, %eax
setne %al
movb %al, -0xc8(%rbp)
movb -0xc8(%rbp), %al
testb $0x1, %al
jne 0x30dec
jmp 0x30e40
cmpl $0x2710, -0x4c(%rbp)    # imm = 0x2710
jge 0x30e0d
imull $0xa, -0x4c(%rbp), %eax
movq -0x10(%rbp), %rcx
movsbl (%rcx), %ecx
subl $0x30, %ecx
addl %ecx, %eax
movl %eax, -0xcc(%rbp)
jmp 0x30e1a
movl $0x2710, %eax           # imm = 0x2710
movl %eax, -0xcc(%rbp)
jmp 0x30e1a
movl -0xcc(%rbp), %eax
movl %eax, -0x4c(%rbp)
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
movl $0x1, -0x50(%rbp)
jmp 0x30dab
jmp 0x30e42
cmpl $0x0, -0x5c(%rbp)
je 0x30ea6
cmpl $0x0, -0x50(%rbp)
je 0x30ea6
jmp 0x30e50
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpq -0x30(%rbp), %rcx
movb %al, -0xcd(%rbp)
jae 0x30e85
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x79bce(%rip), %rax     # 0xaaa40
movzbl (%rax,%rcx), %eax
andl $0x1, %eax
cmpl $0x0, %eax
setne %al
movb %al, -0xcd(%rbp)
movb -0xcd(%rbp), %al
testb $0x1, %al
jne 0x30e91
jmp 0x30ea4
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
jmp 0x30e50
jmp 0x30ea6
jmp 0x30ea8
movl -0x4c(%rbp), %eax
imull -0x48(%rbp), %eax
addl -0x44(%rbp), %eax
movl %eax, -0x4c(%rbp)
cmpl $0x0, -0x4c(%rbp)
jge 0x30ecb
movl $0xffffffff, -0x48(%rbp) # imm = 0xFFFFFFFF
imull $-0x1, -0x4c(%rbp), %eax
movl %eax, -0x4c(%rbp)
jmp 0x30ed2
movl $0x1, -0x48(%rbp)
cmpq $0x0, -0x40(%rbp)
jne 0x30f3b
xorl %eax, %eax
cmpl $0x0, -0x34(%rbp)
movb %al, -0xce(%rbp)
jge 0x30ef4
cmpl $0x0, -0x5c(%rbp)
setne %al
movb %al, -0xce(%rbp)
movb -0xce(%rbp), %al
movsd 0x7cf1e(%rip), %xmm0    # 0xade20
xorps %xmm1, %xmm1
movsd %xmm1, -0xe0(%rbp)
testb $0x1, %al
movsd %xmm0, -0xd8(%rbp)
jne 0x30f29
movsd -0xe0(%rbp), %xmm0
movsd %xmm0, -0xd8(%rbp)
movsd -0xd8(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x311de
cmpl $0x0, -0x48(%rbp)
jle 0x30f8a
jmp 0x30f43
xorl %eax, %eax
movabsq $0xccccccccccccccc, %rcx # imm = 0xCCCCCCCCCCCCCCC
cmpq %rcx, -0x40(%rbp)
movb %al, -0xe1(%rbp)
jge 0x30f68
cmpl $0x0, -0x4c(%rbp)
setg %al
movb %al, -0xe1(%rbp)
movb -0xe1(%rbp), %al
testb $0x1, %al
jne 0x30f74
jmp 0x30f88
movl -0x4c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x4c(%rbp)
imulq $0xa, -0x40(%rbp), %rax
movq %rax, -0x40(%rbp)
jmp 0x30f43
jmp 0x30fe0
jmp 0x30f8c
movq -0x40(%rbp), %rax
movl $0xa, %ecx
cqto
idivq %rcx
xorl %eax, %eax
cmpq $0x0, %rdx
movb %al, -0xe2(%rbp)
jne 0x30fb5
cmpl $0x0, -0x4c(%rbp)
setg %al
movb %al, -0xe2(%rbp)
movb -0xe2(%rbp), %al
testb $0x1, %al
jne 0x30fc1
jmp 0x30fde
movl -0x4c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x4c(%rbp)
movq -0x40(%rbp), %rax
movl $0xa, %ecx
cqto
idivq %rcx
movq %rax, -0x40(%rbp)
jmp 0x30f8c
jmp 0x30fe0
cmpl $0x0, -0x34(%rbp)
jge 0x30ff5
xorl %eax, %eax
subq -0x40(%rbp), %rax
movq %rax, -0xf0(%rbp)
jmp 0x31000
movq -0x40(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0xf0(%rbp), %rax
movq %rax, -0x40(%rbp)
cmpl $0x0, -0x4c(%rbp)
je 0x311d1
fld1
fstpt -0x80(%rbp)
cmpl $0x133, -0x4c(%rbp)     # imm = 0x133
jle 0x310e6
cmpl $0x156, -0x4c(%rbp)     # imm = 0x156
jge 0x310e6
jmp 0x31036
movl -0x4c(%rbp), %eax
movl $0x134, %ecx            # imm = 0x134
cltd
idivl %ecx
cmpl $0x0, %edx
je 0x3105f
fldt -0x80(%rbp)
flds 0x7ce9d(%rip)           # 0xadeec
fmulp %st, %st(1)
fstpt -0x80(%rbp)
movl -0x4c(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x31036
cmpl $0x0, -0x48(%rbp)
jge 0x310a6
movq -0x40(%rbp), %rax
movq %rax, -0xb8(%rbp)
fildll -0xb8(%rbp)
fldt -0x80(%rbp)
fdivrp %st, %st(1)
fstpl -0xc0(%rbp)
movsd -0xc0(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movsd -0x58(%rbp), %xmm0
movsd 0x7cd9d(%rip), %xmm1    # 0xade38
divsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x310e1
movq -0x40(%rbp), %rax
movq %rax, -0xa8(%rbp)
fildll -0xa8(%rbp)
fldt -0x80(%rbp)
fmulp %st, %st(1)
fstpl -0xb0(%rbp)
movsd -0xb0(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movsd 0x7cd61(%rip), %xmm0    # 0xade38
mulsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x311cf
cmpl $0x156, -0x4c(%rbp)     # imm = 0x156
jl 0x31125
cmpl $0x0, -0x48(%rbp)
jge 0x31109
cvtsi2sdq -0x40(%rbp), %xmm1
xorps %xmm0, %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x31120
cvtsi2sdq -0x40(%rbp), %xmm1
movsd 0x7cd19(%rip), %xmm0    # 0xade30
mulsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x311cd
jmp 0x31127
movl -0x4c(%rbp), %eax
movl $0x16, %ecx
cltd
idivl %ecx
cmpl $0x0, %edx
je 0x31150
fldt -0x80(%rbp)
flds 0x7cdac(%rip)           # 0xadeec
fmulp %st, %st(1)
fstpt -0x80(%rbp)
movl -0x4c(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x31127
jmp 0x31152
cmpl $0x0, -0x4c(%rbp)
jle 0x31171
fldt -0x80(%rbp)
fldl 0x7ccc7(%rip)           # 0xade28
fmulp %st, %st(1)
fstpt -0x80(%rbp)
movl -0x4c(%rbp), %eax
subl $0x16, %eax
movl %eax, -0x4c(%rbp)
jmp 0x31152
cmpl $0x0, -0x48(%rbp)
jge 0x311a2
movq -0x40(%rbp), %rax
movq %rax, -0x98(%rbp)
fildll -0x98(%rbp)
fldt -0x80(%rbp)
fdivrp %st, %st(1)
fstpl -0xa0(%rbp)
movsd -0xa0(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x311cb
movq -0x40(%rbp), %rax
movq %rax, -0x88(%rbp)
fildll -0x88(%rbp)
fldt -0x80(%rbp)
fmulp %st, %st(1)
fstpl -0x90(%rbp)
movsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x311cd
jmp 0x311cf
jmp 0x311dc
cvtsi2sdq -0x40(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x311de
movsd -0x58(%rbp), %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, (%rax)
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpq -0x30(%rbp), %rcx
movb %al, -0xf1(%rbp)
jb 0x31226
xorl %eax, %eax
cmpl $0x0, -0x5c(%rbp)
movb %al, -0xf1(%rbp)
jle 0x31226
xorl %eax, %eax
cmpl $0x0, -0x50(%rbp)
movb %al, -0xf1(%rbp)
je 0x31226
cmpl $0x0, -0x60(%rbp)
sete %al
movb %al, -0xf1(%rbp)
movb -0xf1(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x80, %rsp
popq %rbp
retq