// File: DoubleString[P]RtConverter/src/Rtklib/rcvraw.cpp
// Function: bamboo::decode_gal_inav(unsigned char const*, bamboo::eph_t*)
extern int decode_gal_inav(const unsigned char *buff, eph_t *eph)
{
    double tow,toc,tt,sqrtA;
    int i,time_f,week,svid,e5b_hs,e1b_hs,e5b_dvs,e1b_dvs,type[6],iod_nav[4];
    
    i=0; /* word type 0 */
    type[0]    =getbitu(buff,i, 6);              i+= 6;
    time_f     =getbitu(buff,i, 2);              i+= 2+88;
    week       =getbitu(buff,i,12);              i+=12; /* gst-week */
    tow        =getbitu(buff,i,20);
    
    i=128; /* word type 1 */
    type[1]    =getbitu(buff,i, 6);              i+= 6;
    iod_nav[0] =getbitu(buff,i,10);              i+=10;
    eph->toes  =getbitu(buff,i,14)*60.0;         i+=14;
    eph->M0    =getbits(buff,i,32)*P2_31*SC2RAD; i+=32;
    eph->e     =getbitu(buff,i,32)*P2_33;        i+=32;
    sqrtA      =getbitu(buff,i,32)*P2_19;
    
    i=128*2; /* word type 2 */
    type[2]    =getbitu(buff,i, 6);              i+= 6;
    iod_nav[1] =getbitu(buff,i,10);              i+=10;
    eph->OMG0  =getbits(buff,i,32)*P2_31*SC2RAD; i+=32;
    eph->i0    =getbits(buff,i,32)*P2_31*SC2RAD; i+=32;
    eph->omg   =getbits(buff,i,32)*P2_31*SC2RAD; i+=32;
    eph->idot  =getbits(buff,i,14)*P2_43*SC2RAD;
    
    i=128*3; /* word type 3 */
    type[3]    =getbitu(buff,i, 6);              i+= 6;
    iod_nav[2] =getbitu(buff,i,10);              i+=10;
    eph->OMGd  =getbits(buff,i,24)*P2_43*SC2RAD; i+=24;
    eph->deln  =getbits(buff,i,16)*P2_43*SC2RAD; i+=16;
    eph->cuc   =getbits(buff,i,16)*P2_29;        i+=16;
    eph->cus   =getbits(buff,i,16)*P2_29;        i+=16;
    eph->crc   =getbits(buff,i,16)*P2_5;         i+=16;
    eph->crs   =getbits(buff,i,16)*P2_5;         i+=16;
    eph->sva   =getbitu(buff,i, 8);
    
    i=128*4; /* word type 4 */
    type[4]    =getbitu(buff,i, 6);              i+= 6;
    iod_nav[3] =getbitu(buff,i,10);              i+=10;
    svid       =getbitu(buff,i, 6);              i+= 6;
    eph->cic   =getbits(buff,i,16)*P2_29;        i+=16;
    eph->cis   =getbits(buff,i,16)*P2_29;        i+=16;
    toc        =getbitu(buff,i,14)*60.0;         i+=14;
    eph->f0    =getbits(buff,i,31)*P2_34;        i+=31;
    eph->f1    =getbits(buff,i,21)*P2_46;        i+=21;
    eph->f2    =getbits(buff,i, 6)*P2_59;
    
    i=128*5; /* word type 5 */
    type[5]    =getbitu(buff,i, 6);              i+= 6+41;
    eph->tgd[0]=getbits(buff,i,10)*P2_32;        i+=10; /* BGD E5a/E1 */
    eph->tgd[1]=getbits(buff,i,10)*P2_32;        i+=10; /* BGD E5b/E1 */
    e5b_hs     =getbitu(buff,i, 2);              i+= 2;
    e1b_hs     =getbitu(buff,i, 2);              i+= 2;
    e5b_dvs    =getbitu(buff,i, 1);              i+= 1;
    e1b_dvs    =getbitu(buff,i, 1);
    
    /* test word types */
    if (type[0]!=0||type[1]!=1||type[2]!=2||type[3]!=3||type[4]!=4||type[5]!=5) {
        trace(3,"decode_gal_inav error: type=%d %d %d %d %d %d\n",type[0],
              type[1],type[2],type[3],type[4],type[5]);
        return 0;
    }
    /* test word type 0 time field */
    if (time_f!=2) {
        trace(3,"decode_gal_inav error: word0-time=%d\n",time_f);
        return 0;
    }
    /* test consistency of iod_nav */
    if (iod_nav[0]!=iod_nav[1]||iod_nav[0]!=iod_nav[2]||iod_nav[0]!=iod_nav[3]) {
        trace(3,"decode_gal_inav error: ionav=%d %d %d %d\n",iod_nav[0],
              iod_nav[1],iod_nav[2],iod_nav[3]);
        return 0;
    }
    if (!(eph->sat=satno(SYS_GAL,svid))) {
        trace(2,"decode_gal_inav svid error: svid=%d\n",svid);
        return 0;
    }
    eph->A=sqrtA*sqrtA;
    eph->iode=eph->iodc=iod_nav[0];
    eph->svh=(e5b_hs<<7)|(e5b_dvs<<6)|(e1b_hs<<1)|e1b_dvs;
    eph->ttr=gst2time(week,tow);
    tt=timediff(gst2time(week,eph->toes),eph->ttr); /* week complient to toe */
    if      (tt> 302400.0) week--;
    else if (tt<-302400.0) week++;
    eph->toe=gst2time(week,eph->toes);
    eph->toc=gst2time(week,toc);
    eph->week=week+1024; /* gal-week = gst-week + 1024 */
    eph->code =(1<<0)|(1<<9); /* data source = i/nav e1b, af0-2,toc,sisa for e5b-e1 */
    return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x130, %rsp            # imm = 0x130
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl $0x0, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
movl $0x6, %edx
movl %edx, -0xe8(%rbp)
callq 0x8bfc0
movl %eax, -0x70(%rbp)
movl -0x3c(%rbp), %eax
addl $0x6, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
movl $0x2, %edx
callq 0x8bfc0
movl %eax, -0x40(%rbp)
movl -0x3c(%rbp), %eax
addl $0x5a, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
movl $0xc, %edx
callq 0x8bfc0
movl %eax, -0x44(%rbp)
movl -0x3c(%rbp), %eax
addl $0xc, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
movl $0x14, %edx
callq 0x8bfc0
movl -0xe8(%rbp), %edx
movl %eax, %eax
cvtsi2sd %rax, %xmm0
movsd %xmm0, -0x20(%rbp)
movl $0x80, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x8bfc0
movl %eax, -0x6c(%rbp)
movl -0x3c(%rbp), %eax
addl $0x6, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
movl $0xa, %edx
movl %edx, -0xec(%rbp)
callq 0x8bfc0
movl %eax, -0x80(%rbp)
movl -0x3c(%rbp), %eax
addl $0xa, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
movl $0xe, %edx
movl %edx, -0xd4(%rbp)
callq 0x8bfc0
movl %eax, %eax
cvtsi2sd %rax, %xmm0
movsd 0x5a6d6(%rip), %xmm1    # 0xbce18
mulsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, 0xc8(%rax)
movl -0x3c(%rbp), %eax
addl $0xe, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
movl $0x20, %edx
movl %edx, -0x114(%rbp)
callq 0x8c050
movl -0x114(%rbp), %edx
cvtsi2sd %eax, %xmm0
movsd 0x5a854(%rip), %xmm1    # 0xbcfd8
movsd %xmm1, -0x110(%rbp)
mulsd %xmm1, %xmm0
movsd 0x5b5c0(%rip), %xmm1    # 0xbdd58
movsd %xmm1, -0x100(%rbp)
mulsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, 0x78(%rax)
movl -0x3c(%rbp), %eax
addl $0x20, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x8bfc0
movl -0x114(%rbp), %edx
movl %eax, %eax
cvtsi2sd %rax, %xmm0
movsd 0x5c689(%rip), %xmm1    # 0xbee60
mulsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, 0x58(%rax)
movl -0x3c(%rbp), %eax
addl $0x20, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x8bfc0
movl -0xe8(%rbp), %edx
movl %eax, %eax
cvtsi2sd %rax, %xmm0
movsd 0x5a7d2(%rip), %xmm1    # 0xbcfe0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x38(%rbp)
movl $0x100, -0x3c(%rbp)     # imm = 0x100
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x8bfc0
movl -0xec(%rbp), %edx
movl %eax, -0x68(%rbp)
movl -0x3c(%rbp), %eax
addl $0x6, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x8bfc0
movl -0x114(%rbp), %edx
movl %eax, -0x7c(%rbp)
movl -0x3c(%rbp), %eax
addl $0xa, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x8c050
movl -0x114(%rbp), %edx
movsd -0x110(%rbp), %xmm2
movsd -0x100(%rbp), %xmm1
cvtsi2sd %eax, %xmm0
mulsd %xmm2, %xmm0
mulsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, 0x68(%rax)
movl -0x3c(%rbp), %eax
addl $0x20, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x8c050
movl -0x114(%rbp), %edx
movsd -0x110(%rbp), %xmm2
movsd -0x100(%rbp), %xmm1
cvtsi2sd %eax, %xmm0
mulsd %xmm2, %xmm0
mulsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, 0x60(%rax)
movl -0x3c(%rbp), %eax
addl $0x20, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x8c050
movsd -0x110(%rbp), %xmm2
movsd -0x100(%rbp), %xmm1
movl -0xd4(%rbp), %edx
cvtsi2sd %eax, %xmm0
mulsd %xmm2, %xmm0
mulsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, 0x70(%rax)
movl -0x3c(%rbp), %eax
addl $0x20, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x8c050
movsd -0x100(%rbp), %xmm1
movl -0xe8(%rbp), %edx
cvtsi2sd %eax, %xmm0
movsd 0x5c528(%rip), %xmm2    # 0xbee68
movsd %xmm2, -0x108(%rbp)
mulsd %xmm2, %xmm0
mulsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, 0x90(%rax)
movl $0x180, -0x3c(%rbp)     # imm = 0x180
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x8bfc0
movl -0xec(%rbp), %edx
movl %eax, -0x64(%rbp)
movl -0x3c(%rbp), %eax
addl $0x6, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x8bfc0
movl %eax, -0x78(%rbp)
movl -0x3c(%rbp), %eax
addl $0xa, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
movl $0x18, %edx
callq 0x8c050
movsd -0x108(%rbp), %xmm2
movsd -0x100(%rbp), %xmm1
cvtsi2sd %eax, %xmm0
mulsd %xmm2, %xmm0
mulsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, 0x88(%rax)
movl -0x3c(%rbp), %eax
addl $0x18, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
movl $0x10, %edx
movl %edx, -0xe4(%rbp)
callq 0x8c050
movsd -0x108(%rbp), %xmm2
movsd -0x100(%rbp), %xmm1
movl -0xe4(%rbp), %edx
cvtsi2sd %eax, %xmm0
mulsd %xmm2, %xmm0
mulsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, 0x80(%rax)
movl -0x3c(%rbp), %eax
addl $0x10, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x8c050
movl -0xe4(%rbp), %edx
cvtsi2sd %eax, %xmm0
movsd 0x5c429(%rip), %xmm1    # 0xbee70
movsd %xmm1, -0xe0(%rbp)
mulsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, 0xa8(%rax)
movl -0x3c(%rbp), %eax
addl $0x10, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x8c050
movl -0xe4(%rbp), %edx
movsd -0xe0(%rbp), %xmm1
cvtsi2sd %eax, %xmm0
mulsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, 0xb0(%rax)
movl -0x3c(%rbp), %eax
addl $0x10, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x8c050
movl -0xe4(%rbp), %edx
cvtsi2sd %eax, %xmm0
movsd 0x5c3bb(%rip), %xmm1    # 0xbee78
movsd %xmm1, -0xf8(%rbp)
mulsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, 0x98(%rax)
movl -0x3c(%rbp), %eax
addl $0x10, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x8c050
movsd -0xf8(%rbp), %xmm1
cvtsi2sd %eax, %xmm0
mulsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, 0xa0(%rax)
movl -0x3c(%rbp), %eax
addl $0x10, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
movl $0x8, %edx
callq 0x8bfc0
movl -0xe8(%rbp), %edx
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0xc(%rax)
movl $0x200, -0x3c(%rbp)     # imm = 0x200
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x8bfc0
movl -0xec(%rbp), %edx
movl %eax, -0x60(%rbp)
movl -0x3c(%rbp), %eax
addl $0x6, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x8bfc0
movl -0xe8(%rbp), %edx
movl %eax, -0x74(%rbp)
movl -0x3c(%rbp), %eax
addl $0xa, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x8bfc0
movl -0xe4(%rbp), %edx
movl %eax, -0x48(%rbp)
movl -0x3c(%rbp), %eax
addl $0x6, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x8c050
movl -0xe4(%rbp), %edx
movsd -0xe0(%rbp), %xmm1
cvtsi2sd %eax, %xmm0
mulsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, 0xb8(%rax)
movl -0x3c(%rbp), %eax
addl $0x10, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x8c050
movsd -0xe0(%rbp), %xmm1
movl -0xd4(%rbp), %edx
cvtsi2sd %eax, %xmm0
mulsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, 0xc0(%rax)
movl -0x3c(%rbp), %eax
addl $0x10, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
callq 0x8bfc0
movl %eax, %eax
cvtsi2sd %rax, %xmm0
movsd 0x5a1ff(%rip), %xmm1    # 0xbce18
mulsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
movl -0x3c(%rbp), %eax
addl $0xe, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
movl $0x1f, %edx
callq 0x8c050
cvtsi2sd %eax, %xmm0
movsd 0x5c210(%rip), %xmm1    # 0xbee58
mulsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, 0xd8(%rax)
movl -0x3c(%rbp), %eax
addl $0x1f, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
movl $0x15, %edx
callq 0x8c050
cvtsi2sd %eax, %xmm0
movsd 0x5c1d2(%rip), %xmm1    # 0xbee50
mulsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, 0xe0(%rax)
movl -0x3c(%rbp), %eax
addl $0x15, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
movl $0x6, %edx
callq 0x8c050
cvtsi2sd %eax, %xmm0
movsd 0x5c194(%rip), %xmm1    # 0xbee48
mulsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, 0xe8(%rax)
movl $0x280, -0x3c(%rbp)     # imm = 0x280
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
movl $0x6, %edx
callq 0x8bfc0
movl %eax, -0x5c(%rbp)
movl -0x3c(%rbp), %eax
addl $0x2f, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
movl $0xa, %edx
callq 0x8c050
cvtsi2sd %eax, %xmm0
movsd 0x5c13b(%rip), %xmm1    # 0xbee40
mulsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, 0xf0(%rax)
movl -0x3c(%rbp), %eax
addl $0xa, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
movl $0xa, %edx
callq 0x8c050
cvtsi2sd %eax, %xmm0
movsd 0x5c105(%rip), %xmm1    # 0xbee40
mulsd %xmm1, %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, 0xf8(%rax)
movl -0x3c(%rbp), %eax
addl $0xa, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
movl $0x2, %edx
callq 0x8bfc0
movl %eax, -0x4c(%rbp)
movl -0x3c(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
movl $0x2, %edx
callq 0x8bfc0
movl %eax, -0x50(%rbp)
movl -0x3c(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
movl $0x1, %edx
callq 0x8bfc0
movl %eax, -0x54(%rbp)
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
movq -0x10(%rbp), %rdi
movl -0x3c(%rbp), %esi
movl $0x1, %edx
callq 0x8bfc0
movl %eax, -0x58(%rbp)
cmpl $0x0, -0x70(%rbp)
jne 0x62de3
cmpl $0x1, -0x6c(%rbp)
jne 0x62de3
cmpl $0x2, -0x68(%rbp)
jne 0x62de3
cmpl $0x3, -0x64(%rbp)
jne 0x62de3
cmpl $0x4, -0x60(%rbp)
jne 0x62de3
cmpl $0x5, -0x5c(%rbp)
je 0x62e1f
movl -0x70(%rbp), %edx
movl -0x6c(%rbp), %ecx
movl -0x68(%rbp), %r8d
movl -0x64(%rbp), %r9d
movl -0x60(%rbp), %r10d
movl -0x5c(%rbp), %eax
movl $0x3, %edi
leaq 0x5c2e4(%rip), %rsi     # 0xbf0e8
movl %r10d, (%rsp)
movl %eax, 0x8(%rsp)
movb $0x0, %al
callq 0x8b980
movl $0x0, -0x4(%rbp)
jmp 0x63071
cmpl $0x2, -0x40(%rbp)
je 0x62e47
movl -0x40(%rbp), %edx
movl $0x3, %edi
leaq 0x5c2e3(%rip), %rsi     # 0xbf117
movb $0x0, %al
callq 0x8b980
movl $0x0, -0x4(%rbp)
jmp 0x63071
movl -0x80(%rbp), %eax
cmpl -0x7c(%rbp), %eax
jne 0x62e5f
movl -0x80(%rbp), %eax
cmpl -0x78(%rbp), %eax
jne 0x62e5f
movl -0x80(%rbp), %eax
cmpl -0x74(%rbp), %eax
je 0x62e8c
movl -0x80(%rbp), %edx
movl -0x7c(%rbp), %ecx
movl -0x78(%rbp), %r8d
movl -0x74(%rbp), %r9d
movl $0x3, %edi
leaq 0x5c2c4(%rip), %rsi     # 0xbf13d
movb $0x0, %al
callq 0x8b980
movl $0x0, -0x4(%rbp)
jmp 0x63071
movl -0x48(%rbp), %esi
movl $0x8, %edi
callq 0x8b1b0
movq -0x18(%rbp), %rcx
movl %eax, (%rcx)
cmpl $0x0, %eax
jne 0x62ec6
movl -0x48(%rbp), %edx
movl $0x2, %edi
leaq 0x5c2b4(%rip), %rsi     # 0xbf167
movb $0x0, %al
callq 0x8b980
movl $0x0, -0x4(%rbp)
jmp 0x63071
movsd -0x38(%rbp), %xmm0
mulsd -0x38(%rbp), %xmm0
movq -0x18(%rbp), %rax
movsd %xmm0, 0x50(%rax)
movl -0x80(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x18(%rbp), %rax
movl %ecx, 0x4(%rax)
movl -0x4c(%rbp), %ecx
shll $0x7, %ecx
movl -0x54(%rbp), %eax
shll $0x6, %eax
orl %eax, %ecx
movl -0x50(%rbp), %eax
shll %eax
orl %eax, %ecx
orl -0x58(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x10(%rax)
movl -0x44(%rbp), %edi
movsd -0x20(%rbp), %xmm0
callq 0x8e5e0
movq %rax, -0x90(%rbp)
movsd %xmm0, -0x88(%rbp)
movq -0x18(%rbp), %rax
movq -0x90(%rbp), %rcx
movq %rcx, 0x40(%rax)
movq -0x88(%rbp), %rcx
movq %rcx, 0x48(%rax)
movl -0x44(%rbp), %edi
movq -0x18(%rbp), %rax
movsd 0xc8(%rax), %xmm0
callq 0x8e5e0
movq %rax, -0xa0(%rbp)
movsd %xmm0, -0x98(%rbp)
movq -0x18(%rbp), %rax
movq 0x40(%rax), %rcx
movq %rcx, -0xb0(%rbp)
movq 0x48(%rax), %rax
movq %rax, -0xa8(%rbp)
movq -0xa0(%rbp), %rdi
movsd -0x98(%rbp), %xmm0
movq -0xb0(%rbp), %rsi
movsd -0xa8(%rbp), %xmm1
callq 0x8e8e0
movsd %xmm0, -0x30(%rbp)
movsd -0x30(%rbp), %xmm0
movsd 0x5adaf(%rip), %xmm1    # 0xbdd60
ucomisd %xmm1, %xmm0
jbe 0x62fc2
movl -0x44(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x62fdc
movsd 0x5beb6(%rip), %xmm0    # 0xbee80
ucomisd -0x30(%rbp), %xmm0
jbe 0x62fda
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x62fdc
movl -0x44(%rbp), %edi
movq -0x18(%rbp), %rax
movsd 0xc8(%rax), %xmm0
callq 0x8e5e0
movq %rax, -0xc0(%rbp)
movsd %xmm0, -0xb8(%rbp)
movq -0x18(%rbp), %rax
movq -0xc0(%rbp), %rcx
movq %rcx, 0x20(%rax)
movq -0xb8(%rbp), %rcx
movq %rcx, 0x28(%rax)
movl -0x44(%rbp), %edi
movsd -0x28(%rbp), %xmm0
callq 0x8e5e0
movq %rax, -0xd0(%rbp)
movsd %xmm0, -0xc8(%rbp)
movq -0x18(%rbp), %rax
movq -0xd0(%rbp), %rcx
movq %rcx, 0x30(%rax)
movq -0xc8(%rbp), %rcx
movq %rcx, 0x38(%rax)
movl -0x44(%rbp), %ecx
addl $0x400, %ecx            # imm = 0x400
movq -0x18(%rbp), %rax
movl %ecx, 0x14(%rax)
movq -0x18(%rbp), %rax
movl $0x201, 0x18(%rax)      # imm = 0x201
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x130, %rsp            # imm = 0x130
popq %rbp
retq
nopl (%rax)