// File: /workspace/github_c_makefile_star2_O0/barabo[P]advanced-shell-history/src/sqlite3.c
// Function: parseModifier
static int parseModifier(sqlite3_context *pCtx, const char *zMod, DateTime *p){
  int rc = 1;
  int n;
  double r;
  char *z, zBuf[30];
  z = zBuf;
  for(n=0; n<ArraySize(zBuf)-1 && zMod[n]; n++){
    z[n] = (char)sqlite3UpperToLower[(u8)zMod[n]];
  }
  z[n] = 0;
  switch( 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( strcmp(z, "localtime")==0 ){
        computeJD(p);
        p->iJD += localtimeOffset(p, pCtx, &rc);
        clearYMD_HMS_TZ(p);
      }
      break;
    }
#endif
    case 'u': {
      /*
      **    unixepoch
      **
      ** Treat the current value of p->iJD as the number of
      ** seconds since 1970.  Convert to a real julian day number.
      */
      if( strcmp(z, "unixepoch")==0 && p->validJD ){
        p->iJD = (p->iJD + 43200)/86400 + 21086676*(i64)10000000;
        clearYMD_HMS_TZ(p);
        rc = 0;
      }
#ifndef SQLITE_OMIT_LOCALTIME
      else if( strcmp(z, "utc")==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);
        }
      }
#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( strncmp(z, "weekday ", 8)==0
               && sqlite3AtoF(&z[8], &r, sqlite3Strlen30(&z[8]), SQLITE_UTF8)
               && (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( strncmp(z, "start of ", 9)!=0 ) break;
      z += 9;
      computeYMD(p);
      p->validHMS = 1;
      p->h = p->m = 0;
      p->s = 0.0;
      p->validTZ = 0;
      p->validJD = 0;
      if( strcmp(z,"month")==0 ){
        p->D = 1;
        rc = 0;
      }else if( strcmp(z,"year")==0 ){
        computeYMD(p);
        p->M = 1;
        p->D = 1;
        rc = 0;
      }else if( strcmp(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;
      for(n=1; z[n] && z[n]!=':' && !sqlite3Isspace(z[n]); n++){}
      if( !sqlite3AtoF(z, &r, n, SQLITE_UTF8) ){
        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;
      }
      z += n;
      while( sqlite3Isspace(*z) ) z++;
      n = sqlite3Strlen30(z);
      if( n>10 || n<3 ) break;
      if( z[n-1]=='s' ){ z[n-1] = 0; n--; }
      computeJD(p);
      rc = 0;
      rRounder = r<0 ? -0.5 : +0.5;
      if( n==3 && strcmp(z,"day")==0 ){
        p->iJD += (sqlite3_int64)(r*86400000.0 + rRounder);
      }else if( n==4 && strcmp(z,"hour")==0 ){
        p->iJD += (sqlite3_int64)(r*(86400000.0/24.0) + rRounder);
      }else if( n==6 && strcmp(z,"minute")==0 ){
        p->iJD += (sqlite3_int64)(r*(86400000.0/(24.0*60.0)) + rRounder);
      }else if( n==6 && strcmp(z,"second")==0 ){
        p->iJD += (sqlite3_int64)(r*(86400000.0/(24.0*60.0*60.0)) + rRounder);
      }else if( n==5 && strcmp(z,"month")==0 ){
        int x, y;
        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;
        computeJD(p);
        y = (int)r;
        if( y!=r ){
          p->iJD += (sqlite3_int64)((r - y)*30.0*86400000.0 + rRounder);
        }
      }else if( n==4 && strcmp(z,"year")==0 ){
        int y = (int)r;
        computeYMD_HMS(p);
        p->Y += y;
        p->validJD = 0;
        computeJD(p);
        if( y!=r ){
          p->iJD += (sqlite3_int64)((r - y)*365.0*86400000.0 + rRounder);
        }
      }else{
        rc = 1;
      }
      clearYMD_HMS_TZ(p);
      break;
    }
    default: {
      break;
    }
  }
  return rc;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xe0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl $0x1, -0x1c(%rbp)
leaq -0x50(%rbp), %rax
movq %rax, -0x30(%rbp)
movl $0x0, -0x20(%rbp)
xorl %eax, %eax
cmpl $0x1d, -0x20(%rbp)
movb %al, -0xb5(%rbp)
jge 0x882a3
movq -0x10(%rbp), %rax
movslq -0x20(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
setne %al
movb %al, -0xb5(%rbp)
movb -0xb5(%rbp), %al
testb $0x1, %al
jne 0x882af
jmp 0x882dd
movq -0x10(%rbp), %rax
movslq -0x20(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x2287c(%rip), %rax     # 0xaab40
movb (%rax,%rcx), %dl
movq -0x30(%rbp), %rax
movslq -0x20(%rbp), %rcx
movb %dl, (%rax,%rcx)
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x8827d
movq -0x30(%rbp), %rax
movslq -0x20(%rbp), %rcx
movb $0x0, (%rax,%rcx)
movq -0x30(%rbp), %rax
movsbl (%rax), %eax
addl $-0x2b, %eax
movl %eax, %ecx
movq %rcx, -0xc0(%rbp)
subl $0x4c, %eax
ja 0x88bf7
movq -0xc0(%rbp), %rax
leaq 0x225f1(%rip), %rcx     # 0xaa904
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x30(%rbp), %rdi
leaq 0x2aa3e(%rip), %rsi     # 0xb2d65
callq 0x85d0
cmpl $0x0, %eax
jne 0x88361
movq -0x18(%rbp), %rdi
callq 0x87f50
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rsi
leaq -0x1c(%rbp), %rdx
callq 0x894c0
movq %rax, %rcx
movq -0x18(%rbp), %rax
addq (%rax), %rcx
movq %rcx, (%rax)
movq -0x18(%rbp), %rdi
callq 0x89660
jmp 0x88bf9
movq -0x30(%rbp), %rdi
leaq 0x296af(%rip), %rsi     # 0xb1a20
callq 0x85d0
cmpl $0x0, %eax
jne 0x883cb
movq -0x18(%rbp), %rax
movsbl 0x2a(%rax), %eax
cmpl $0x0, %eax
je 0x883cb
movq -0x18(%rbp), %rax
movq (%rax), %rax
addq $0xa8c0, %rax           # imm = 0xA8C0
movl $0x15180, %ecx          # imm = 0x15180
cqto
idivq %rcx
movq %rax, %rcx
movabsq $0xbfc83e532200, %rax   # imm = 0xBFC83E532200
addq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, (%rax)
movq -0x18(%rbp), %rdi
callq 0x89660
movl $0x0, -0x1c(%rbp)
jmp 0x88452
movq -0x30(%rbp), %rdi
leaq 0x29654(%rip), %rsi     # 0xb1a2a
callq 0x85d0
cmpl $0x0, %eax
jne 0x88450
movq -0x18(%rbp), %rdi
callq 0x87f50
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rsi
leaq -0x1c(%rbp), %rdx
callq 0x894c0
movq %rax, -0x58(%rbp)
cmpl $0x0, -0x1c(%rbp)
jne 0x8844e
movq -0x58(%rbp), %rdx
movq -0x18(%rbp), %rax
movq (%rax), %rcx
subq %rdx, %rcx
movq %rcx, (%rax)
movq -0x18(%rbp), %rdi
callq 0x89660
movq -0x58(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rsi
leaq -0x1c(%rbp), %rdx
callq 0x894c0
movq -0xc8(%rbp), %rcx
subq %rax, %rcx
movq -0x18(%rbp), %rax
addq (%rax), %rcx
movq %rcx, (%rax)
jmp 0x88450
jmp 0x88452
jmp 0x88bf9
movq -0x30(%rbp), %rdi
leaq 0x295cc(%rip), %rsi     # 0xb1a2e
movl $0x8, %edx
callq 0x81d0
cmpl $0x0, %eax
jne 0x88574
movq -0x30(%rbp), %rax
addq $0x8, %rax
movq %rax, -0xd0(%rbp)
movq -0x30(%rbp), %rdi
addq $0x8, %rdi
callq 0x92f0
movq -0xd0(%rbp), %rdi
movl %eax, %edx
leaq -0x28(%rbp), %rsi
movl $0x1, %ecx
callq 0x308d0
cmpl $0x0, %eax
je 0x88574
cvttsd2si -0x28(%rbp), %eax
movl %eax, -0x20(%rbp)
cvtsi2sd %eax, %xmm0
ucomisd -0x28(%rbp), %xmm0
jne 0x88574
jp 0x88574
cmpl $0x0, -0x20(%rbp)
jl 0x88574
movsd 0x259c8(%rip), %xmm0    # 0xadea8
ucomisd -0x28(%rbp), %xmm0
jbe 0x88574
movq -0x18(%rbp), %rdi
callq 0x89690
movq -0x18(%rbp), %rax
movb $0x0, 0x2b(%rax)
movq -0x18(%rbp), %rax
movb $0x0, 0x2a(%rax)
movq -0x18(%rbp), %rdi
callq 0x87f50
movq -0x18(%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, -0x60(%rbp)
movq -0x60(%rbp), %rax
movslq -0x20(%rbp), %rcx
cmpq %rcx, %rax
jle 0x8854b
movq -0x60(%rbp), %rax
subq $0x7, %rax
movq %rax, -0x60(%rbp)
movslq -0x20(%rbp), %rax
subq -0x60(%rbp), %rax
imulq $0x5265c00, %rax, %rcx  # imm = 0x5265C00
movq -0x18(%rbp), %rax
addq (%rax), %rcx
movq %rcx, (%rax)
movq -0x18(%rbp), %rdi
callq 0x89660
movl $0x0, -0x1c(%rbp)
jmp 0x88bf9
movq -0x30(%rbp), %rdi
leaq 0x294b3(%rip), %rsi     # 0xb1a37
movl $0x9, %edx
callq 0x81d0
cmpl $0x0, %eax
je 0x88598
jmp 0x88bf9
movq -0x30(%rbp), %rax
addq $0x9, %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rdi
callq 0x896c0
movq -0x18(%rbp), %rax
movb $0x1, 0x29(%rax)
movq -0x18(%rbp), %rax
movl $0x0, 0x18(%rax)
movq -0x18(%rbp), %rax
movl $0x0, 0x14(%rax)
movq -0x18(%rbp), %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x20(%rax)
movq -0x18(%rbp), %rax
movb $0x0, 0x2b(%rax)
movq -0x18(%rbp), %rax
movb $0x0, 0x2a(%rax)
movq -0x30(%rbp), %rdi
leaq 0x2944f(%rip), %rsi     # 0xb1a41
callq 0x85d0
cmpl $0x0, %eax
jne 0x88610
movq -0x18(%rbp), %rax
movl $0x1, 0x10(%rax)
movl $0x0, -0x1c(%rbp)
jmp 0x8866d
movq -0x30(%rbp), %rdi
leaq 0x2942c(%rip), %rsi     # 0xb1a47
callq 0x85d0
cmpl $0x0, %eax
jne 0x8864d
movq -0x18(%rbp), %rdi
callq 0x896c0
movq -0x18(%rbp), %rax
movl $0x1, 0xc(%rax)
movq -0x18(%rbp), %rax
movl $0x1, 0x10(%rax)
movl $0x0, -0x1c(%rbp)
jmp 0x8866b
movq -0x30(%rbp), %rdi
leaq 0x29382(%rip), %rsi     # 0xb19da
callq 0x85d0
cmpl $0x0, %eax
jne 0x88669
movl $0x0, -0x1c(%rbp)
jmp 0x8866b
jmp 0x8866d
jmp 0x88bf9
movl $0x1, -0x20(%rbp)
movq -0x30(%rbp), %rax
movslq -0x20(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0xd1(%rbp)
je 0x886d5
movq -0x30(%rbp), %rax
movslq -0x20(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
xorl %eax, %eax
cmpl $0x3a, %ecx
movb %al, -0xd1(%rbp)
je 0x886d5
movq -0x30(%rbp), %rax
movslq -0x20(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movl %eax, %ecx
leaq 0x22380(%rip), %rax     # 0xaaa40
movzbl (%rax,%rcx), %eax
andl $0x1, %eax
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
movb %al, -0xd1(%rbp)
movb -0xd1(%rbp), %al
testb $0x1, %al
jne 0x886e1
jmp 0x886ee
jmp 0x886e3
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x88679
movq -0x30(%rbp), %rdi
movl -0x20(%rbp), %edx
leaq -0x28(%rbp), %rsi
movl $0x1, %ecx
callq 0x308d0
cmpl $0x0, %eax
jne 0x88714
movl $0x1, -0x1c(%rbp)
jmp 0x88bf9
movq -0x30(%rbp), %rax
movslq -0x20(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x3a, %eax
jne 0x88825
movq -0x30(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x222ff(%rip), %rax     # 0xaaa40
movzbl (%rax,%rcx), %eax
andl $0x4, %eax
cmpl $0x0, %eax
jne 0x88759
movq -0x70(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x70(%rbp)
leaq -0xa0(%rbp), %rdi
xorl %esi, %esi
movl $0x30, %edx
callq 0x8200
movq -0x70(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x88dd0
cmpl $0x0, %eax
je 0x88786
jmp 0x88bf9
leaq -0xa0(%rbp), %rdi
callq 0x87f50
movq -0xa0(%rbp), %rax
subq $0x2932e00, %rax        # imm = 0x2932E00
movq %rax, -0xa0(%rbp)
movq -0xa0(%rbp), %rax
movl $0x5265c00, %ecx        # imm = 0x5265C00
cqto
idivq %rcx
movq %rax, -0xa8(%rbp)
imulq $0x5265c00, -0xa8(%rbp), %rcx # imm = 0x5265C00
movq -0xa0(%rbp), %rax
subq %rcx, %rax
movq %rax, -0xa0(%rbp)
movq -0x30(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x887f6
xorl %eax, %eax
subq -0xa0(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x18(%rbp), %rdi
callq 0x87f50
movq -0x18(%rbp), %rdi
callq 0x89660
movq -0xa0(%rbp), %rcx
movq -0x18(%rbp), %rax
addq (%rax), %rcx
movq %rcx, (%rax)
movl $0x0, -0x1c(%rbp)
jmp 0x88bf9
movl -0x20(%rbp), %ecx
movq -0x30(%rbp), %rax
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %ecx
leaq 0x221fa(%rip), %rax     # 0xaaa40
movzbl (%rax,%rcx), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x88860
movq -0x30(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x30(%rbp)
jmp 0x88836
movq -0x30(%rbp), %rdi
callq 0x92f0
movl %eax, -0x20(%rbp)
cmpl $0xa, -0x20(%rbp)
jg 0x88878
cmpl $0x3, -0x20(%rbp)
jge 0x8887d
jmp 0x88bf9
movq -0x30(%rbp), %rax
movl -0x20(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x73, %eax
jne 0x888ad
movq -0x30(%rbp), %rax
movl -0x20(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movb $0x0, (%rax,%rcx)
movl -0x20(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
callq 0x87f50
movl $0x0, -0x1c(%rbp)
movsd -0x28(%rbp), %xmm0
movsd 0x255b6(%rip), %xmm3    # 0xade80
movsd 0x2551e(%rip), %xmm2    # 0xaddf0
xorps %xmm1, %xmm1
cmpltsd %xmm1, %xmm0
movaps %xmm0, %xmm1
andpd %xmm3, %xmm1
andnpd %xmm2, %xmm0
orpd %xmm1, %xmm0
movsd %xmm0, -0x68(%rbp)
cmpl $0x3, -0x20(%rbp)
jne 0x88937
movq -0x30(%rbp), %rdi
leaq 0x290db(%rip), %rsi     # 0xb19da
callq 0x85d0
cmpl $0x0, %eax
jne 0x88937
movsd -0x28(%rbp), %xmm0
movsd -0x68(%rbp), %xmm1
movsd 0x254fd(%rip), %xmm2    # 0xade18
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
movq -0x18(%rbp), %rax
addq (%rax), %rcx
movq %rcx, (%rax)
jmp 0x88bec
cmpl $0x4, -0x20(%rbp)
jne 0x88980
movq -0x30(%rbp), %rdi
leaq 0x29104(%rip), %rsi     # 0xb1a4c
callq 0x85d0
cmpl $0x0, %eax
jne 0x88980
movsd -0x28(%rbp), %xmm0
movsd -0x68(%rbp), %xmm1
movsd 0x2553c(%rip), %xmm2    # 0xadea0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
movq -0x18(%rbp), %rax
addq (%rax), %rcx
movq %rcx, (%rax)
jmp 0x88bea
cmpl $0x6, -0x20(%rbp)
jne 0x889c9
movq -0x30(%rbp), %rdi
leaq 0x290c0(%rip), %rsi     # 0xb1a51
callq 0x85d0
cmpl $0x0, %eax
jne 0x889c9
movsd -0x28(%rbp), %xmm0
movsd -0x68(%rbp), %xmm1
movsd 0x254eb(%rip), %xmm2    # 0xade98
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
movq -0x18(%rbp), %rax
addq (%rax), %rcx
movq %rcx, (%rax)
jmp 0x88be8
cmpl $0x6, -0x20(%rbp)
jne 0x88a12
movq -0x30(%rbp), %rdi
leaq 0x2907e(%rip), %rsi     # 0xb1a58
callq 0x85d0
cmpl $0x0, %eax
jne 0x88a12
movsd -0x28(%rbp), %xmm0
movsd -0x68(%rbp), %xmm1
movsd 0x25482(%rip), %xmm2    # 0xade78
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
movq -0x18(%rbp), %rax
addq (%rax), %rcx
movq %rcx, (%rax)
jmp 0x88be6
cmpl $0x5, -0x20(%rbp)
jne 0x88b2d
movq -0x30(%rbp), %rdi
leaq 0x2901a(%rip), %rsi     # 0xb1a41
callq 0x85d0
cmpl $0x0, %eax
jne 0x88b2d
movq -0x18(%rbp), %rdi
callq 0x89690
cvttsd2si -0x28(%rbp), %ecx
movq -0x18(%rbp), %rax
addl 0xc(%rax), %ecx
movl %ecx, 0xc(%rax)
movq -0x18(%rbp), %rax
cmpl $0x0, 0xc(%rax)
jle 0x88a71
movq -0x18(%rbp), %rax
movl 0xc(%rax), %eax
subl $0x1, %eax
movl $0xc, %ecx
cltd
idivl %ecx
movl %eax, -0xd8(%rbp)
jmp 0x88a89
movq -0x18(%rbp), %rax
movl 0xc(%rax), %eax
subl $0xc, %eax
movl $0xc, %ecx
cltd
idivl %ecx
movl %eax, -0xd8(%rbp)
movl -0xd8(%rbp), %eax
movl %eax, -0xac(%rbp)
movl -0xac(%rbp), %ecx
movq -0x18(%rbp), %rax
addl 0x8(%rax), %ecx
movl %ecx, 0x8(%rax)
imull $0xc, -0xac(%rbp), %edx
movq -0x18(%rbp), %rax
movl 0xc(%rax), %ecx
subl %edx, %ecx
movl %ecx, 0xc(%rax)
movq -0x18(%rbp), %rax
movb $0x0, 0x2a(%rax)
movq -0x18(%rbp), %rdi
callq 0x87f50
cvttsd2si -0x28(%rbp), %eax
movl %eax, -0xb0(%rbp)
cvtsi2sdl -0xb0(%rbp), %xmm0
ucomisd -0x28(%rbp), %xmm0
jne 0x88ae7
jp 0x88ae7
jmp 0x88b28
movsd -0x28(%rbp), %xmm0
cvtsi2sdl -0xb0(%rbp), %xmm1
subsd %xmm1, %xmm0
movsd 0x25390(%rip), %xmm1    # 0xade90
mulsd %xmm1, %xmm0
movsd -0x68(%rbp), %xmm1
movsd 0x25307(%rip), %xmm2    # 0xade18
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
movq -0x18(%rbp), %rax
addq (%rax), %rcx
movq %rcx, (%rax)
jmp 0x88be4
cmpl $0x4, -0x20(%rbp)
jne 0x88bdb
movq -0x30(%rbp), %rdi
leaq 0x28f05(%rip), %rsi     # 0xb1a47
callq 0x85d0
cmpl $0x0, %eax
jne 0x88bdb
cvttsd2si -0x28(%rbp), %eax
movl %eax, -0xb4(%rbp)
movq -0x18(%rbp), %rdi
callq 0x89690
movl -0xb4(%rbp), %ecx
movq -0x18(%rbp), %rax
addl 0x8(%rax), %ecx
movl %ecx, 0x8(%rax)
movq -0x18(%rbp), %rax
movb $0x0, 0x2a(%rax)
movq -0x18(%rbp), %rdi
callq 0x87f50
cvtsi2sdl -0xb4(%rbp), %xmm0
ucomisd -0x28(%rbp), %xmm0
jne 0x88b98
jp 0x88b98
jmp 0x88bd9
movsd -0x28(%rbp), %xmm0
cvtsi2sdl -0xb4(%rbp), %xmm1
subsd %xmm1, %xmm0
movsd 0x252d7(%rip), %xmm1    # 0xade88
mulsd %xmm1, %xmm0
movsd -0x68(%rbp), %xmm1
movsd 0x25256(%rip), %xmm2    # 0xade18
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
movq -0x18(%rbp), %rax
addq (%rax), %rcx
movq %rcx, (%rax)
jmp 0x88be2
movl $0x1, -0x1c(%rbp)
jmp 0x88be4
jmp 0x88be6
jmp 0x88be8
jmp 0x88bea
jmp 0x88bec
movq -0x18(%rbp), %rdi
callq 0x89660
jmp 0x88bf9
jmp 0x88bf9
movl -0x1c(%rbp), %eax
addq $0xe0, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)