// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/external/sqlite-3.33.0/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;
  /* 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 nDigit = 0;  /* Number of digits processed */
  int eType = 1;   /* 1: pure integer,  2+: fractional  -1 or less: bad UTF16 */

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

  if( enc==SQLITE_UTF8 ){
    incr = 1;
    zEnd = z + length;
  }else{
    int i;
    incr = 2;
    length &= ~1;
    assert( SQLITE_UTF16LE==2 && SQLITE_UTF16BE==3 );
    testcase( enc==SQLITE_UTF16LE );
    testcase( enc==SQLITE_UTF16BE );
    for(i=3-enc; i<length && z[i]==0; i+=2){}
    if( i<length ) eType = -100;
    zEnd = &z[i^1];
    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;
  }

  /* copy max significant digits to significand */
  while( z<zEnd && sqlite3Isdigit(*z) ){
    s = s*10 + (*z - '0');
    z+=incr; nDigit++;
    if( s>=((LARGEST_INT64-9)/10) ){
      /* skip non-significant significand digits
      ** (increase exponent by d to shift decimal left) */
      while( z<zEnd && sqlite3Isdigit(*z) ){ z+=incr; d++; }
    }
  }
  if( z>=zEnd ) goto do_atof_calc;

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

  /* if exponent is present */
  if( *z=='e' || *z=='E' ){
    z+=incr;
    eValid = 0;
    eType++;

    /* This branch is needed to avoid a (harmless) buffer overread.  The
    ** special comment alerts the mutation tester that the correct answer
    ** is obtained even if the branch is omitted */
    if( z>=zEnd ) goto do_atof_calc;              /*PREVENTS-HARMLESS-OVERREAD*/

    /* 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 */
  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( s==0 ) {
    /* In the IEEE 754 standard, zero is signed. */
    result = sign<0 ? -(double)0 : (double)0;
  } else {
    /* Attempt to reduce exponent.
    **
    ** Branches that are not required for the correct answer but which only
    ** help to obtain the correct answer faster are marked with special
    ** comments, as a hint to the mutation tester.
    */
    while( e>0 ){                                       /*OPTIMIZATION-IF-TRUE*/
      if( esign>0 ){
        if( s>=(LARGEST_INT64/10) ) break;             /*OPTIMIZATION-IF-FALSE*/
        s *= 10;
      }else{
        if( s%10!=0 ) break;                           /*OPTIMIZATION-IF-FALSE*/
        s /= 10;
      }
      e--;
    }

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

    if( e==0 ){                                         /*OPTIMIZATION-IF-TRUE*/
      result = (double)s;
    }else{
      /* attempt to handle extremely small/large numbers better */
      if( e>307 ){                                      /*OPTIMIZATION-IF-TRUE*/
        if( e<342 ){                                    /*OPTIMIZATION-IF-TRUE*/
          LONGDOUBLE_TYPE scale = sqlite3Pow10(e-308);
          if( esign<0 ){
            result = s / scale;
            result /= 1.0e+308;
          }else{
            result = s * scale;
            result *= 1.0e+308;
          }
        }else{ assert( e>=342 );
          if( esign<0 ){
            result = 0.0*s;
          }else{
#ifdef INFINITY
            result = INFINITY*s;
#else
            result = 1e308*1e308*s;  /* Infinity */
#endif
          }
        }
      }else{
        LONGDOUBLE_TYPE scale = sqlite3Pow10(e);
        if( esign<0 ){
          result = s / scale;
        }else{
          result = s * scale;
        }
      }
    }
  }

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

  /* return true if number and no extra non-whitespace chracters after */
  if( z==zEnd && nDigit>0 && eValid && eType>0 ){
    return eType;
  }else if( eType>=2 && (eType==3 || eValid) && nDigit>0 ){
    return -1;
  }else{
    return 0;
  }
#else
  return !sqlite3Atoi64(z, pResult, length, enc);
#endif /* SQLITE_OMIT_FLOATING_POINT */
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x100, %rsp            # imm = 0x100
movb %cl, %al
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
movb %al, -0x1d(%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 $0x1, -0x60(%rbp)
movq -0x18(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
cmpl $0x0, -0x1c(%rbp)
jne 0x3ef2d1
movl $0x0, -0x4(%rbp)
jmp 0x3efa54
movzbl -0x1d(%rbp), %eax
cmpl $0x1, %eax
jne 0x3ef2f5
movl $0x1, -0x24(%rbp)
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
jmp 0x3ef38c
movl $0x2, -0x24(%rbp)
movl -0x1c(%rbp), %eax
andl $-0x2, %eax
movl %eax, -0x1c(%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, -0xd1(%rbp)
jge 0x3ef33b
movq -0x10(%rbp), %rax
movslq -0x64(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
sete %al
movb %al, -0xd1(%rbp)
movb -0xd1(%rbp), %al
testb $0x1, %al
jne 0x3ef347
jmp 0x3ef354
jmp 0x3ef349
movl -0x64(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x64(%rbp)
jmp 0x3ef313
movl -0x64(%rbp), %eax
cmpl -0x1c(%rbp), %eax
jge 0x3ef363
movl $0xffffff9c, -0x60(%rbp) # imm = 0xFFFFFF9C
movq -0x10(%rbp), %rax
movl -0x64(%rbp), %ecx
xorl $0x1, %ecx
movslq %ecx, %rcx
addq %rcx, %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 0x3ef38e
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpq -0x30(%rbp), %rcx
movb %al, -0xd2(%rbp)
jae 0x3ef3c3
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x1b7820(%rip), %rax    # 0x5a6bd0
movzbl (%rax,%rcx), %eax
andl $0x1, %eax
cmpl $0x0, %eax
setne %al
movb %al, -0xd2(%rbp)
movb -0xd2(%rbp), %al
testb $0x1, %al
jne 0x3ef3cf
jmp 0x3ef3e2
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
jmp 0x3ef38e
movq -0x10(%rbp), %rax
cmpq -0x30(%rbp), %rax
jb 0x3ef3f8
movl $0x0, -0x4(%rbp)
jmp 0x3efa54
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x3ef41e
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 0x3ef43d
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2b, %eax
jne 0x3ef43b
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
jmp 0x3ef43d
jmp 0x3ef43f
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpq -0x30(%rbp), %rcx
movb %al, -0xd3(%rbp)
jae 0x3ef474
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x1b776f(%rip), %rax    # 0x5a6bd0
movzbl (%rax,%rcx), %eax
andl $0x4, %eax
cmpl $0x0, %eax
setne %al
movb %al, -0xd3(%rbp)
movb -0xd3(%rbp), %al
testb $0x1, %al
jne 0x3ef483
jmp 0x3ef52c
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)
movabsq $0xccccccccccccccb, %rax # imm = 0xCCCCCCCCCCCCCCB
cmpq %rax, -0x40(%rbp)
jl 0x3ef527
jmp 0x3ef4c8
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpq -0x30(%rbp), %rcx
movb %al, -0xd4(%rbp)
jae 0x3ef4fd
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x1b76e6(%rip), %rax    # 0x5a6bd0
movzbl (%rax,%rcx), %eax
andl $0x4, %eax
cmpl $0x0, %eax
setne %al
movb %al, -0xd4(%rbp)
movb -0xd4(%rbp), %al
testb $0x1, %al
jne 0x3ef509
jmp 0x3ef525
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x3ef4c8
jmp 0x3ef527
jmp 0x3ef43f
movq -0x10(%rbp), %rax
cmpq -0x30(%rbp), %rax
jb 0x3ef53b
jmp 0x3ef78a
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2e, %eax
jne 0x3ef5f9
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpq -0x30(%rbp), %rcx
movb %al, -0xd5(%rbp)
jae 0x3ef59a
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x1b7649(%rip), %rax    # 0x5a6bd0
movzbl (%rax,%rcx), %eax
andl $0x4, %eax
cmpl $0x0, %eax
setne %al
movb %al, -0xd5(%rbp)
movb -0xd5(%rbp), %al
testb $0x1, %al
jne 0x3ef5a6
jmp 0x3ef5f7
movabsq $0xccccccccccccccb, %rax # imm = 0xCCCCCCCCCCCCCCB
cmpq %rax, -0x40(%rbp)
jge 0x3ef5e1
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 -0x44(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x44(%rbp)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
jmp 0x3ef565
jmp 0x3ef5f9
movq -0x10(%rbp), %rax
cmpq -0x30(%rbp), %rax
jb 0x3ef608
jmp 0x3ef78a
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x65, %eax
je 0x3ef624
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x45, %eax
jne 0x3ef732
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
movl $0x0, -0x50(%rbp)
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
movq -0x10(%rbp), %rax
cmpq -0x30(%rbp), %rax
jb 0x3ef654
jmp 0x3ef78a
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x3ef67a
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 0x3ef699
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2b, %eax
jne 0x3ef697
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
jmp 0x3ef699
jmp 0x3ef69b
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpq -0x30(%rbp), %rcx
movb %al, -0xd6(%rbp)
jae 0x3ef6d0
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x1b7513(%rip), %rax    # 0x5a6bd0
movzbl (%rax,%rcx), %eax
andl $0x4, %eax
cmpl $0x0, %eax
setne %al
movb %al, -0xd6(%rbp)
movb -0xd6(%rbp), %al
testb $0x1, %al
jne 0x3ef6dc
jmp 0x3ef730
cmpl $0x2710, -0x4c(%rbp)    # imm = 0x2710
jge 0x3ef6fd
imull $0xa, -0x4c(%rbp), %eax
movq -0x10(%rbp), %rcx
movsbl (%rcx), %ecx
subl $0x30, %ecx
addl %ecx, %eax
movl %eax, -0xdc(%rbp)
jmp 0x3ef70a
movl $0x2710, %eax           # imm = 0x2710
movl %eax, -0xdc(%rbp)
jmp 0x3ef70a
movl -0xdc(%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 0x3ef69b
jmp 0x3ef732
jmp 0x3ef734
movq -0x10(%rbp), %rcx
xorl %eax, %eax
cmpq -0x30(%rbp), %rcx
movb %al, -0xdd(%rbp)
jae 0x3ef769
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x1b747a(%rip), %rax    # 0x5a6bd0
movzbl (%rax,%rcx), %eax
andl $0x1, %eax
cmpl $0x0, %eax
setne %al
movb %al, -0xdd(%rbp)
movb -0xdd(%rbp), %al
testb $0x1, %al
jne 0x3ef775
jmp 0x3ef788
movl -0x24(%rbp), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
jmp 0x3ef734
jmp 0x3ef78a
movl -0x4c(%rbp), %eax
imull -0x48(%rbp), %eax
addl -0x44(%rbp), %eax
movl %eax, -0x4c(%rbp)
cmpl $0x0, -0x4c(%rbp)
jge 0x3ef7ad
movl $0xffffffff, -0x48(%rbp) # imm = 0xFFFFFFFF
imull $-0x1, -0x4c(%rbp), %eax
movl %eax, -0x4c(%rbp)
jmp 0x3ef7b4
movl $0x1, -0x48(%rbp)
cmpq $0x0, -0x40(%rbp)
jne 0x3ef800
movl -0x34(%rbp), %eax
movsd 0x1bb49a(%rip), %xmm0   # 0x5aac60
xorps %xmm1, %xmm1
movsd %xmm1, -0xf0(%rbp)
cmpl $0x0, %eax
movsd %xmm0, -0xe8(%rbp)
jl 0x3ef7ee
movsd -0xf0(%rbp), %xmm0
movsd %xmm0, -0xe8(%rbp)
movsd -0xe8(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x3ef9fb
jmp 0x3ef802
cmpl $0x0, -0x4c(%rbp)
jle 0x3ef85e
cmpl $0x0, -0x48(%rbp)
jle 0x3ef82b
movabsq $0xccccccccccccccc, %rax # imm = 0xCCCCCCCCCCCCCCC
cmpq %rax, -0x40(%rbp)
jl 0x3ef820
jmp 0x3ef85e
imulq $0xa, -0x40(%rbp), %rax
movq %rax, -0x40(%rbp)
jmp 0x3ef853
movq -0x40(%rbp), %rax
movl $0xa, %ecx
cqto
idivq %rcx
cmpq $0x0, %rdx
je 0x3ef841
jmp 0x3ef85e
movq -0x40(%rbp), %rax
movl $0xa, %ecx
cqto
idivq %rcx
movq %rax, -0x40(%rbp)
movl -0x4c(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x3ef802
cmpl $0x0, -0x34(%rbp)
jge 0x3ef873
xorl %eax, %eax
subq -0x40(%rbp), %rax
movq %rax, -0xf8(%rbp)
jmp 0x3ef87e
movq -0x40(%rbp), %rax
movq %rax, -0xf8(%rbp)
movq -0xf8(%rbp), %rax
movq %rax, -0x40(%rbp)
cmpl $0x0, -0x4c(%rbp)
jne 0x3ef89f
cvtsi2sdq -0x40(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x3ef9f9
cmpl $0x133, -0x4c(%rbp)     # imm = 0x133
jle 0x3ef987
cmpl $0x156, -0x4c(%rbp)     # imm = 0x156
jge 0x3ef94e
movl -0x4c(%rbp), %edi
addl $0xfffffecc, %edi       # imm = 0xFFFFFECC
callq 0x3efa60
fstpt -0x80(%rbp)
cmpl $0x0, -0x48(%rbp)
jge 0x3ef911
movq -0x40(%rbp), %rax
movq %rax, -0xc8(%rbp)
fildll -0xc8(%rbp)
fldt -0x80(%rbp)
fdivrp %st, %st(1)
fstpl -0xd0(%rbp)
movsd -0xd0(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movsd -0x58(%rbp), %xmm0
movsd 0x1bb352(%rip), %xmm1   # 0x5aac58
divsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x3ef94c
movq -0x40(%rbp), %rax
movq %rax, -0xb8(%rbp)
fildll -0xb8(%rbp)
fldt -0x80(%rbp)
fmulp %st, %st(1)
fstpl -0xc0(%rbp)
movsd -0xc0(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movsd 0x1bb316(%rip), %xmm0   # 0x5aac58
mulsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x3ef985
cmpl $0x0, -0x48(%rbp)
jge 0x3ef968
cvtsi2sdq -0x40(%rbp), %xmm1
xorps %xmm0, %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x3ef983
cvtsi2ssq -0x40(%rbp), %xmm1
movss 0x1bb386(%rip), %xmm0   # 0x5aacfc
mulss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x3ef985
jmp 0x3ef9f7
movl -0x4c(%rbp), %edi
callq 0x3efa60
fstpt -0x90(%rbp)
cmpl $0x0, -0x48(%rbp)
jge 0x3ef9c9
movq -0x40(%rbp), %rax
movq %rax, -0xa8(%rbp)
fildll -0xa8(%rbp)
fldt -0x90(%rbp)
fdivrp %st, %st(1)
fstpl -0xb0(%rbp)
movsd -0xb0(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x3ef9f5
movq -0x40(%rbp), %rax
movq %rax, -0x98(%rbp)
fildll -0x98(%rbp)
fldt -0x90(%rbp)
fmulp %st, %st(1)
fstpl -0xa0(%rbp)
movsd -0xa0(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x3ef9f7
jmp 0x3ef9f9
jmp 0x3ef9fb
movsd -0x58(%rbp), %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, (%rax)
movq -0x10(%rbp), %rax
cmpq -0x30(%rbp), %rax
jne 0x3efa2c
cmpl $0x0, -0x5c(%rbp)
jle 0x3efa2c
cmpl $0x0, -0x50(%rbp)
je 0x3efa2c
cmpl $0x0, -0x60(%rbp)
jle 0x3efa2c
movl -0x60(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x3efa54
cmpl $0x2, -0x60(%rbp)
jl 0x3efa4d
cmpl $0x3, -0x60(%rbp)
je 0x3efa3e
cmpl $0x0, -0x50(%rbp)
je 0x3efa4d
cmpl $0x0, -0x5c(%rbp)
jle 0x3efa4d
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0x3efa54
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x100, %rsp            # imm = 0x100
popq %rbp
retq