// File: /workspace/github_c_makefile_star2_O0/genometools[P]genometools/src/external/sqlite-3.33.0/sqlite3.c
// Function: parseModifier
static int parseModifier(
  sqlite3_context *pCtx,      /* Function context */
  const char *z,              /* The text of the modifier */
  int n,                      /* Length of zMod in bytes */
  DateTime *p                 /* The date/time value to be modified */
){
  int rc = 1;
  double r;
  switch(sqlite3UpperToLower[(u8)z[0]] ){
#ifndef SQLITE_OMIT_LOCALTIME
    case 'l': {
      /*    localtime
      **
      ** Assuming the current time value is UTC (a.k.a. GMT), shift it to
      ** show local time.
      */
      if( sqlite3_stricmp(z, "localtime")==0 && sqlite3NotPureFunc(pCtx) ){
        computeJD(p);
        p->iJD += localtimeOffset(p, pCtx, &rc);
        clearYMD_HMS_TZ(p);
      }
      break;
    }
#endif
    case 'u': {
      /*
      **    unixepoch
      **
      ** Treat the current value of p->s as the number of
      ** seconds since 1970.  Convert to a real julian day number.
      */
      if( sqlite3_stricmp(z, "unixepoch")==0 && p->rawS ){
        r = p->s*1000.0 + 210866760000000.0;
        if( r>=0.0 && r<464269060800000.0 ){
          clearYMD_HMS_TZ(p);
          p->iJD = (sqlite3_int64)(r + 0.5);
          p->validJD = 1;
          p->rawS = 0;
          rc = 0;
        }
      }
#ifndef SQLITE_OMIT_LOCALTIME
      else if( sqlite3_stricmp(z, "utc")==0 && sqlite3NotPureFunc(pCtx) ){
        if( p->tzSet==0 ){
          sqlite3_int64 c1;
          computeJD(p);
          c1 = localtimeOffset(p, pCtx, &rc);
          if( rc==SQLITE_OK ){
            p->iJD -= c1;
            clearYMD_HMS_TZ(p);
            p->iJD += c1 - localtimeOffset(p, pCtx, &rc);
          }
          p->tzSet = 1;
        }else{
          rc = SQLITE_OK;
        }
      }
#endif
      break;
    }
    case 'w': {
      /*
      **    weekday N
      **
      ** Move the date to the same time on the next occurrence of
      ** weekday N where 0==Sunday, 1==Monday, and so forth.  If the
      ** date is already on the appropriate weekday, this is a no-op.
      */
      if( sqlite3_strnicmp(z, "weekday ", 8)==0
               && sqlite3AtoF(&z[8], &r, sqlite3Strlen30(&z[8]), SQLITE_UTF8)>0
               && (n=(int)r)==r && n>=0 && r<7 ){
        sqlite3_int64 Z;
        computeYMD_HMS(p);
        p->validTZ = 0;
        p->validJD = 0;
        computeJD(p);
        Z = ((p->iJD + 129600000)/86400000) % 7;
        if( Z>n ) Z -= 7;
        p->iJD += (n - Z)*86400000;
        clearYMD_HMS_TZ(p);
        rc = 0;
      }
      break;
    }
    case 's': {
      /*
      **    start of TTTTT
      **
      ** Move the date backwards to the beginning of the current day,
      ** or month or year.
      */
      if( sqlite3_strnicmp(z, "start of ", 9)!=0 ) break;
      if( !p->validJD && !p->validYMD && !p->validHMS ) break;
      z += 9;
      computeYMD(p);
      p->validHMS = 1;
      p->h = p->m = 0;
      p->s = 0.0;
      p->rawS = 0;
      p->validTZ = 0;
      p->validJD = 0;
      if( sqlite3_stricmp(z,"month")==0 ){
        p->D = 1;
        rc = 0;
      }else if( sqlite3_stricmp(z,"year")==0 ){
        p->M = 1;
        p->D = 1;
        rc = 0;
      }else if( sqlite3_stricmp(z,"day")==0 ){
        rc = 0;
      }
      break;
    }
    case '+':
    case '-':
    case '0':
    case '1':
    case '2':
    case '3':
    case '4':
    case '5':
    case '6':
    case '7':
    case '8':
    case '9': {
      double rRounder;
      int i;
      for(n=1; z[n] && z[n]!=':' && !sqlite3Isspace(z[n]); n++){}
      if( sqlite3AtoF(z, &r, n, SQLITE_UTF8)<=0 ){
        rc = 1;
        break;
      }
      if( z[n]==':' ){
        /* A modifier of the form (+|-)HH:MM:SS.FFF adds (or subtracts) the
        ** specified number of hours, minutes, seconds, and fractional seconds
        ** to the time.  The ".FFF" may be omitted.  The ":SS.FFF" may be
        ** omitted.
        */
        const char *z2 = z;
        DateTime tx;
        sqlite3_int64 day;
        if( !sqlite3Isdigit(*z2) ) z2++;
        memset(&tx, 0, sizeof(tx));
        if( parseHhMmSs(z2, &tx) ) break;
        computeJD(&tx);
        tx.iJD -= 43200000;
        day = tx.iJD/86400000;
        tx.iJD -= day*86400000;
        if( z[0]=='-' ) tx.iJD = -tx.iJD;
        computeJD(p);
        clearYMD_HMS_TZ(p);
        p->iJD += tx.iJD;
        rc = 0;
        break;
      }

      /* If control reaches this point, it means the transformation is
      ** one of the forms like "+NNN days".  */
      z += n;
      while( sqlite3Isspace(*z) ) z++;
      n = sqlite3Strlen30(z);
      if( n>10 || n<3 ) break;
      if( sqlite3UpperToLower[(u8)z[n-1]]=='s' ) n--;
      computeJD(p);
      rc = 1;
      rRounder = r<0 ? -0.5 : +0.5;
      for(i=0; i<ArraySize(aXformType); i++){
        if( aXformType[i].nName==n
         && sqlite3_strnicmp(aXformType[i].zName, z, n)==0
         && r>-aXformType[i].rLimit && r<aXformType[i].rLimit
        ){
          switch( aXformType[i].eType ){
            case 1: { /* Special processing to add months */
              int x;
              computeYMD_HMS(p);
              p->M += (int)r;
              x = p->M>0 ? (p->M-1)/12 : (p->M-12)/12;
              p->Y += x;
              p->M -= x*12;
              p->validJD = 0;
              r -= (int)r;
              break;
            }
            case 2: { /* Special processing to add years */
              int y = (int)r;
              computeYMD_HMS(p);
              p->Y += y;
              p->validJD = 0;
              r -= (int)r;
              break;
            }
          }
          computeJD(p);
          p->iJD += (sqlite3_int64)(r*aXformType[i].rXform + rRounder);
          rc = 0;
          break;
        }
      }
      clearYMD_HMS_TZ(p);
      break;
    }
    default: {
      break;
    }
  }
  return rc;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq %rcx, -0x20(%rbp)
movl $0x1, -0x24(%rbp)
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
leaq 0x13af01(%rip), %rcx    # 0x5a6a60
movzbl (%rax,%rcx), %eax
addl $-0x2b, %eax
movl %eax, %ecx
movq %rcx, -0xa0(%rbp)
subl $0x4c, %eax
ja 0x46c445
movq -0xa0(%rbp), %rax
leaq 0x13ac6a(%rip), %rcx    # 0x5a67f0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rdi
leaq 0x143adb(%rip), %rsi    # 0x5af675
callq 0x3c3e00
cmpl $0x0, %eax
jne 0x46bbe2
movq -0x8(%rbp), %rdi
callq 0x46c860
cmpl $0x0, %eax
je 0x46bbe2
movq -0x20(%rbp), %rdi
callq 0x46b7b0
movq -0x20(%rbp), %rdi
movq -0x8(%rbp), %rsi
leaq -0x24(%rbp), %rdx
callq 0x46cca0
movq %rax, %rcx
movq -0x20(%rbp), %rax
addq (%rax), %rcx
movq %rcx, (%rax)
movq -0x20(%rbp), %rdi
callq 0x46ce50
jmp 0x46c447
movq -0x10(%rbp), %rdi
leaq 0x143a8d(%rip), %rsi    # 0x5af67f
callq 0x3c3e00
cmpl $0x0, %eax
jne 0x46bc92
movq -0x20(%rbp), %rax
movsbl 0x29(%rax), %eax
cmpl $0x0, %eax
je 0x46bc92
movq -0x20(%rbp), %rax
movsd 0x20(%rax), %xmm0
movsd 0xeadde(%rip), %xmm1    # 0x556a00
mulsd %xmm1, %xmm0
movsd 0x13f082(%rip), %xmm1   # 0x5aacb0
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x30(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jb 0x46bc8d
movsd 0x13f06b(%rip), %xmm0   # 0x5aacb8
ucomisd -0x30(%rbp), %xmm0
jbe 0x46bc8d
movq -0x20(%rbp), %rdi
callq 0x46ce50
movsd 0xbb2a3(%rip), %xmm0    # 0x526f08
addsd -0x30(%rbp), %xmm0
cvttsd2si %xmm0, %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movq -0x20(%rbp), %rax
movb $0x1, 0x28(%rax)
movq -0x20(%rbp), %rax
movb $0x0, 0x29(%rax)
movl $0x0, -0x24(%rbp)
jmp 0x46bd4d
movq -0x10(%rbp), %rdi
leaq 0xd00fc(%rip), %rsi     # 0x53bd99
callq 0x3c3e00
cmpl $0x0, %eax
jne 0x46bd4b
movq -0x8(%rbp), %rdi
callq 0x46c860
cmpl $0x0, %eax
je 0x46bd4b
movq -0x20(%rbp), %rax
movsbl 0x2d(%rax), %eax
cmpl $0x0, %eax
jne 0x46bd42
movq -0x20(%rbp), %rdi
callq 0x46b7b0
movq -0x20(%rbp), %rdi
movq -0x8(%rbp), %rsi
leaq -0x24(%rbp), %rdx
callq 0x46cca0
movq %rax, -0x38(%rbp)
cmpl $0x0, -0x24(%rbp)
jne 0x46bd38
movq -0x38(%rbp), %rdx
movq -0x20(%rbp), %rax
movq (%rax), %rcx
subq %rdx, %rcx
movq %rcx, (%rax)
movq -0x20(%rbp), %rdi
callq 0x46ce50
movq -0x38(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0x20(%rbp), %rdi
movq -0x8(%rbp), %rsi
leaq -0x24(%rbp), %rdx
callq 0x46cca0
movq -0xa8(%rbp), %rcx
subq %rax, %rcx
movq -0x20(%rbp), %rax
addq (%rax), %rcx
movq %rcx, (%rax)
movq -0x20(%rbp), %rax
movb $0x1, 0x2d(%rax)
jmp 0x46bd49
movl $0x0, -0x24(%rbp)
jmp 0x46bd4b
jmp 0x46bd4d
jmp 0x46c447
movq -0x10(%rbp), %rdi
leaq 0x14392c(%rip), %rsi    # 0x5af689
movl $0x8, %edx
callq 0x3c3ef0
cmpl $0x0, %eax
jne 0x46be6f
movq -0x10(%rbp), %rax
addq $0x8, %rax
movq %rax, -0xb0(%rbp)
movq -0x10(%rbp), %rdi
addq $0x8, %rdi
callq 0x3c3400
movq -0xb0(%rbp), %rdi
movl %eax, %edx
leaq -0x30(%rbp), %rsi
movl $0x1, %ecx
callq 0x3ef260
cmpl $0x0, %eax
jle 0x46be6f
cvttsd2si -0x30(%rbp), %eax
movl %eax, -0x14(%rbp)
cvtsi2sd %eax, %xmm0
ucomisd -0x30(%rbp), %xmm0
jne 0x46be6f
jp 0x46be6f
cmpl $0x0, -0x14(%rbp)
jl 0x46be6f
movsd 0x12ce1d(%rip), %xmm0   # 0x598bf8
ucomisd -0x30(%rbp), %xmm0
jbe 0x46be6f
movq -0x20(%rbp), %rdi
callq 0x46ce80
movq -0x20(%rbp), %rax
movb $0x0, 0x2c(%rax)
movq -0x20(%rbp), %rax
movb $0x0, 0x28(%rax)
movq -0x20(%rbp), %rdi
callq 0x46b7b0
movq -0x20(%rbp), %rax
movq (%rax), %rax
addq $0x7b98a00, %rax        # imm = 0x7B98A00
movl $0x5265c00, %ecx        # imm = 0x5265C00
cqto
idivq %rcx
movl $0x7, %ecx
cqto
idivq %rcx
movq %rdx, -0x40(%rbp)
movq -0x40(%rbp), %rax
movslq -0x14(%rbp), %rcx
cmpq %rcx, %rax
jle 0x46be46
movq -0x40(%rbp), %rax
subq $0x7, %rax
movq %rax, -0x40(%rbp)
movslq -0x14(%rbp), %rax
subq -0x40(%rbp), %rax
imulq $0x5265c00, %rax, %rcx  # imm = 0x5265C00
movq -0x20(%rbp), %rax
addq (%rax), %rcx
movq %rcx, (%rax)
movq -0x20(%rbp), %rdi
callq 0x46ce50
movl $0x0, -0x24(%rbp)
jmp 0x46c447
movq -0x10(%rbp), %rdi
leaq 0x143813(%rip), %rsi    # 0x5af692
movl $0x9, %edx
callq 0x3c3ef0
cmpl $0x0, %eax
je 0x46be93
jmp 0x46c447
movq -0x20(%rbp), %rax
cmpb $0x0, 0x28(%rax)
jne 0x46beb6
movq -0x20(%rbp), %rax
cmpb $0x0, 0x2a(%rax)
jne 0x46beb6
movq -0x20(%rbp), %rax
cmpb $0x0, 0x2b(%rax)
jne 0x46beb6
jmp 0x46c447
movq -0x10(%rbp), %rax
addq $0x9, %rax
movq %rax, -0x10(%rbp)
movq -0x20(%rbp), %rdi
callq 0x46ceb0
movq -0x20(%rbp), %rax
movb $0x1, 0x2b(%rax)
movq -0x20(%rbp), %rax
movl $0x0, 0x18(%rax)
movq -0x20(%rbp), %rax
movl $0x0, 0x14(%rax)
movq -0x20(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x20(%rax)
movq -0x20(%rbp), %rax
movb $0x0, 0x29(%rax)
movq -0x20(%rbp), %rax
movb $0x0, 0x2c(%rax)
movq -0x20(%rbp), %rax
movb $0x0, 0x28(%rax)
movq -0x10(%rbp), %rdi
leaq 0x13021c(%rip), %rsi    # 0x59c134
callq 0x3c3e00
cmpl $0x0, %eax
jne 0x46bf36
movq -0x20(%rbp), %rax
movl $0x1, 0x10(%rax)
movl $0x0, -0x24(%rbp)
jmp 0x46bf8a
movq -0x10(%rbp), %rdi
leaq 0x1301f9(%rip), %rsi    # 0x59c13a
callq 0x3c3e00
cmpl $0x0, %eax
jne 0x46bf6a
movq -0x20(%rbp), %rax
movl $0x1, 0xc(%rax)
movq -0x20(%rbp), %rax
movl $0x1, 0x10(%rax)
movl $0x0, -0x24(%rbp)
jmp 0x46bf88
movq -0x10(%rbp), %rdi
leaq 0x143667(%rip), %rsi    # 0x5af5dc
callq 0x3c3e00
cmpl $0x0, %eax
jne 0x46bf86
movl $0x0, -0x24(%rbp)
jmp 0x46bf88
jmp 0x46bf8a
jmp 0x46c447
movl $0x1, -0x14(%rbp)
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0xb1(%rbp)
je 0x46bff2
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
xorl %eax, %eax
cmpl $0x3a, %ecx
movb %al, -0xb1(%rbp)
je 0x46bff2
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x13abf3(%rip), %rax    # 0x5a6bd0
movzbl (%rax,%rcx), %eax
andl $0x1, %eax
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
movb %al, -0xb1(%rbp)
movb -0xb1(%rbp), %al
testb $0x1, %al
jne 0x46bffe
jmp 0x46c00b
jmp 0x46c000
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x46bf96
movq -0x10(%rbp), %rdi
movl -0x14(%rbp), %edx
leaq -0x30(%rbp), %rsi
movl $0x1, %ecx
callq 0x3ef260
cmpl $0x0, %eax
jg 0x46c031
movl $0x1, -0x24(%rbp)
jmp 0x46c447
movq -0x10(%rbp), %rax
movslq -0x14(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x3a, %eax
jne 0x46c142
movq -0x10(%rbp), %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x13ab72(%rip), %rax    # 0x5a6bd0
movzbl (%rax,%rcx), %eax
andl $0x4, %eax
cmpl $0x0, %eax
jne 0x46c076
movq -0x58(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x58(%rbp)
leaq -0x88(%rbp), %rdi
xorl %esi, %esi
movl $0x30, %edx
callq 0x19360
movq -0x58(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x46c660
cmpl $0x0, %eax
je 0x46c0a3
jmp 0x46c447
leaq -0x88(%rbp), %rdi
callq 0x46b7b0
movq -0x88(%rbp), %rax
subq $0x2932e00, %rax        # imm = 0x2932E00
movq %rax, -0x88(%rbp)
movq -0x88(%rbp), %rax
movl $0x5265c00, %ecx        # imm = 0x5265C00
cqto
idivq %rcx
movq %rax, -0x90(%rbp)
imulq $0x5265c00, -0x90(%rbp), %rcx # imm = 0x5265C00
movq -0x88(%rbp), %rax
subq %rcx, %rax
movq %rax, -0x88(%rbp)
movq -0x10(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x46c113
xorl %eax, %eax
subq -0x88(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x20(%rbp), %rdi
callq 0x46b7b0
movq -0x20(%rbp), %rdi
callq 0x46ce50
movq -0x88(%rbp), %rcx
movq -0x20(%rbp), %rax
addq (%rax), %rcx
movq %rcx, (%rax)
movl $0x0, -0x24(%rbp)
jmp 0x46c447
movl -0x14(%rbp), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x13aa6d(%rip), %rax    # 0x5a6bd0
movzbl (%rax,%rcx), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x46c17d
movq -0x10(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x10(%rbp)
jmp 0x46c153
movq -0x10(%rbp), %rdi
callq 0x3c3400
movl %eax, -0x14(%rbp)
cmpl $0xa, -0x14(%rbp)
jg 0x46c195
cmpl $0x3, -0x14(%rbp)
jge 0x46c19a
jmp 0x46c447
movq -0x10(%rbp), %rax
movl -0x14(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x13a8ac(%rip), %rax    # 0x5a6a60
movzbl (%rax,%rcx), %eax
cmpl $0x73, %eax
jne 0x46c1c6
movl -0x14(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x14(%rbp)
movq -0x20(%rbp), %rdi
callq 0x46b7b0
movl $0x1, -0x24(%rbp)
movsd -0x30(%rbp), %xmm0
movsd 0xd124d(%rip), %xmm3    # 0x53d430
movsd 0xbad1d(%rip), %xmm2    # 0x526f08
xorps %xmm1, %xmm1
cmpltsd %xmm1, %xmm0
movaps %xmm0, %xmm1
andpd %xmm3, %xmm1
andnpd %xmm2, %xmm0
orpd %xmm1, %xmm0
movsd %xmm0, -0x48(%rbp)
movl $0x0, -0x4c(%rbp)
cmpl $0x6, -0x4c(%rbp)
jge 0x46c43a
movslq -0x4c(%rbp), %rcx
leaq 0x1ceedd(%rip), %rax    # 0x63b100
shlq $0x5, %rcx
addq %rcx, %rax
movzbl 0x1(%rax), %eax
cmpl -0x14(%rbp), %eax
jne 0x46c42a
movslq -0x4c(%rbp), %rcx
leaq 0x1ceebe(%rip), %rax    # 0x63b100
shlq $0x5, %rcx
addq %rcx, %rax
movq 0x8(%rax), %rdi
movq -0x10(%rbp), %rsi
movl -0x14(%rbp), %edx
callq 0x3c3ef0
cmpl $0x0, %eax
jne 0x46c42a
movsd -0x30(%rbp), %xmm0
movslq -0x4c(%rbp), %rcx
leaq 0x1cee8e(%rip), %rax    # 0x63b100
shlq $0x5, %rcx
addq %rcx, %rax
movsd 0x10(%rax), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x46c42a
movsd -0x30(%rbp), %xmm1
movslq -0x4c(%rbp), %rcx
leaq 0x1cee51(%rip), %rax    # 0x63b100
shlq $0x5, %rcx
addq %rcx, %rax
movsd 0x10(%rax), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x46c42a
movslq -0x4c(%rbp), %rax
shlq $0x5, %rax
leaq 0x1cee2c(%rip), %rcx    # 0x63b100
movzbl (%rax,%rcx), %eax
movl %eax, -0xb8(%rbp)
subl $0x1, %eax
je 0x46c2f9
jmp 0x46c2e5
movl -0xb8(%rbp), %eax
subl $0x2, %eax
je 0x46c39d
jmp 0x46c3e0
movq -0x20(%rbp), %rdi
callq 0x46ce80
cvttsd2si -0x30(%rbp), %ecx
movq -0x20(%rbp), %rax
addl 0xc(%rax), %ecx
movl %ecx, 0xc(%rax)
movq -0x20(%rbp), %rax
cmpl $0x0, 0xc(%rax)
jle 0x46c335
movq -0x20(%rbp), %rax
movl 0xc(%rax), %eax
subl $0x1, %eax
movl $0xc, %ecx
cltd
idivl %ecx
movl %eax, -0xbc(%rbp)
jmp 0x46c34d
movq -0x20(%rbp), %rax
movl 0xc(%rax), %eax
subl $0xc, %eax
movl $0xc, %ecx
cltd
idivl %ecx
movl %eax, -0xbc(%rbp)
movl -0xbc(%rbp), %eax
movl %eax, -0x94(%rbp)
movl -0x94(%rbp), %ecx
movq -0x20(%rbp), %rax
addl 0x8(%rax), %ecx
movl %ecx, 0x8(%rax)
imull $0xc, -0x94(%rbp), %edx
movq -0x20(%rbp), %rax
movl 0xc(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0xc(%rax)
movq -0x20(%rbp), %rax
movb $0x0, 0x28(%rax)
cvttsd2si -0x30(%rbp), %eax
cvtsi2sd %eax, %xmm1
movsd -0x30(%rbp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
jmp 0x46c3e0
cvttsd2si -0x30(%rbp), %eax
movl %eax, -0x98(%rbp)
movq -0x20(%rbp), %rdi
callq 0x46ce80
movl -0x98(%rbp), %ecx
movq -0x20(%rbp), %rax
addl 0x8(%rax), %ecx
movl %ecx, 0x8(%rax)
movq -0x20(%rbp), %rax
movb $0x0, 0x28(%rax)
cvttsd2si -0x30(%rbp), %eax
cvtsi2sd %eax, %xmm1
movsd -0x30(%rbp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movq -0x20(%rbp), %rdi
callq 0x46b7b0
movsd -0x30(%rbp), %xmm0
movslq -0x4c(%rbp), %rcx
leaq 0x1ced07(%rip), %rax    # 0x63b100
shlq $0x5, %rcx
addq %rcx, %rax
movsd 0x18(%rax), %xmm2
movsd -0x48(%rbp), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
movq -0x20(%rbp), %rax
addq (%rax), %rcx
movq %rcx, (%rax)
movl $0x0, -0x24(%rbp)
jmp 0x46c43a
jmp 0x46c42c
movl -0x4c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x4c(%rbp)
jmp 0x46c20e
movq -0x20(%rbp), %rdi
callq 0x46ce50
jmp 0x46c447
jmp 0x46c447
movl -0x24(%rbp), %eax
addq $0xc0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)