// File: DoubleString[P]RtConverter/src/Rtklib/binex.cpp
// Function: bamboo::decode_bnx_7f_05_obs(bamboo::raw_t*, unsigned char*, int, int, bamboo::obsd_t*)
static unsigned char *decode_bnx_7f_05_obs(raw_t *raw, unsigned char *buff,
                                           int sat, int nobs, obsd_t *data)
{
    const unsigned char codes_gps[32]={
        CODE_L1C ,CODE_L1C ,CODE_L1P ,CODE_L1W ,CODE_L1Y ,CODE_L1M , /*  0- 5 */
        CODE_L1X ,CODE_L1N ,CODE_NONE,CODE_NONE,CODE_L2W ,CODE_L2C , /*  6-11 */
        CODE_L2D ,CODE_L2S ,CODE_L2L ,CODE_L2X ,CODE_L2P ,CODE_L2W , /* 12-17 */
        CODE_L2Y ,CODE_L2M ,CODE_L2N ,CODE_NONE,CODE_NONE,CODE_L5X , /* 18-23 */
        CODE_L5I ,CODE_L5Q ,CODE_L5X                                 /* 24-26 */
    };
    const unsigned char codes_glo[32]={
        CODE_L1C ,CODE_L1C ,CODE_L1P ,CODE_NONE,CODE_NONE,CODE_NONE, /*  0- 5 */
        CODE_NONE,CODE_NONE,CODE_NONE,CODE_NONE,CODE_L2C ,CODE_L2C , /*  6-11 */
        CODE_L2P ,CODE_L3X ,CODE_L3I ,CODE_L3Q ,CODE_L3X             /* 12-16 */
    };
    const unsigned char codes_gal[32]={
        CODE_L1C ,CODE_L1A ,CODE_L1B ,CODE_L1C ,CODE_L1X ,CODE_L1Z , /*  0- 5 */
        CODE_L5X ,CODE_L5I ,CODE_L5Q ,CODE_L5X ,CODE_L7X ,CODE_L7I , /*  6-11 */
        CODE_L7Q ,CODE_L7X ,CODE_L8X ,CODE_L8I ,CODE_L8Q ,CODE_L8X , /* 12-17 */
        CODE_L6X ,CODE_L6A ,CODE_L6B ,CODE_L6C ,CODE_L6X ,CODE_L6Z , /* 18-23 */
    };
    const unsigned char codes_sbs[32]={
        CODE_L1C ,CODE_L1C ,CODE_NONE,CODE_NONE,CODE_NONE,CODE_NONE, /*  0- 5 */
        CODE_L5X ,CODE_L5I ,CODE_L5Q ,CODE_L5X                       /*  6- 9 */
    };
    const unsigned char codes_cmp[32]={
        CODE_L1X ,CODE_L1I ,CODE_L1Q ,CODE_L1X ,CODE_L7X ,CODE_L7I , /*  0- 5 */
        CODE_L7Q ,CODE_L7X ,CODE_L6X ,CODE_L6I ,CODE_L6Q ,CODE_L6X , /*  6-11 */
        CODE_L1X ,CODE_L1S ,CODE_L1L ,CODE_L1X                       /* 12-15 */
    };
    const unsigned char codes_qzs[32]={
        CODE_L1C ,CODE_L1C ,CODE_L1S ,CODE_L1L ,CODE_L1X ,CODE_NONE, /*  0- 5 */
        CODE_NONE,CODE_L2X ,CODE_L2S ,CODE_L2L ,CODE_L2X ,CODE_NONE, /*  6-11 */
        CODE_NONE,CODE_L5X ,CODE_L5I ,CODE_L5Q ,CODE_L5X ,CODE_NONE, /* 12-17 */
        CODE_NONE,CODE_L6X ,CODE_L6S ,CODE_L6L ,CODE_L6X ,CODE_NONE, /* 18-23 */
        CODE_NONE,CODE_NONE,CODE_NONE,CODE_NONE,CODE_NONE,CODE_NONE, /* 24-29 */
        CODE_L1Z                                                     /* 30-30 */
    };
    const unsigned char *codes=NULL;
    double range[8],phase[8],cnr[8],dopp[8]={0},acc,wl;
    unsigned char *p=buff;
    unsigned char flag,flags[4];
    int i,j,k,sys,fcn=-10,code[8],slip[8],pri[8],freq[8],slipcnt[8]={0},mask[8]={0};
    
    trace(5,"decode_bnx_7f_05_obs: sat=%2d nobs=%2d\n",sat,nobs);
    
    sys=satsys(sat,NULL);
    
    switch (sys) {
        case SYS_GPS: codes=codes_gps; break;
        case SYS_GLO: codes=codes_glo; break;
        case SYS_GAL: codes=codes_gal; break;
        case SYS_QZS: codes=codes_qzs; break;
        case SYS_SBS: codes=codes_sbs; break;
        case SYS_CMP: codes=codes_cmp; break;
    }
    for (i=0;i<nobs;i++) {
        
        flag   =getbitu(p,0,1);
        slip[i]=getbitu(p,2,1);
        code[i]=getbitu(p,3,5); p++;
        
        for (j=0;j<4;j++) flags[j]=0;
        
        for (j=0;flag&&j<4;j++) {
            flag=U1(p++);
            flags[flag&0x03]=flag&0x7F;
            flag&=0x80;
        }
        if (flags[2]) {
            fcn=getbits(flags+2,2,4);
        }
        acc=(flags[0]&0x20)?0.0001:0.00002; /* phase accuracy */
        
        cnr[i]=U1(p++)*0.4;
        
        if (i==0) {
            cnr[i]+=getbits(p,0,2)*0.1;
            range[i]=getbitu(p,2,32)*0.064+getbitu(p,34,6)*0.001; p+=5;
        }
        else if (flags[0]&0x40) {
            cnr[i]+=getbits(p,0,2)*0.1;
            range[i]=range[0]+getbits(p,4,20)*0.001; p+=3;
        }
        else {
            range[i]=range[0]+getbits(p,0,16)*0.001; p+=2;
        }
        if (flags[0]&0x40) {
            phase[i]=range[i]+getbits(p,0,24)*acc; p+=3;
        }
        else {
            cnr[i]+=getbits(p,0,2)*0.1;
            phase[i]=range[i]+getbits(p,2,22)*acc; p+=3;
        }
        if (flags[0]&0x04) {
            dopp[i]=getbits(p,0,24)/256.0; p+=3;
        }
        if (flags[0]&0x08) {
            if (flags[0]&0x10) {
                slipcnt[i]=U2(p); p+=2;
            }
            else {
                slipcnt[i]=U1(p); p+=1;
            }
        }
        trace(5,"(%d) CODE=%2d S=%d F=%02X %02X %02X %02X\n",i+1,
              code[i],slip[i],flags[0],flags[1],flags[2],flags[3]);
        trace(5,"(%d) P=%13.3f L=%13.3f D=%7.1f SNR=%4.1f SCNT=%2d\n",
              i+1,range[i],phase[i],dopp[i],cnr[i],slipcnt[i]);
    }
    if (!codes) {
        data->sat=0;
        return p;
    }
    data->time=raw->time;
    data->sat=sat;
    
    /* get code priority */
    for (i=0;i<nobs;i++) {
        code2obs(codes[code[i]&0x3F],freq+i);
        pri[i]=getcodepri(sys,codes[code[i]&0x3F],raw->opt);
        
        /* frequency index for beidou */
        if (sys==SYS_CMP) {
            if      (freq[i]==5) freq[i]=2; /* B2 */
            else if (freq[i]==4) freq[i]=3; /* B3 */
        }
        else if (sys==SYS_GAL) {
            if (freq[i]==5) freq[i]=2; /* E5b */
        }
    }
    for (i=0;i<NFREQ;i++) {
        for (j=0,k=-1;j<nobs;j++) {
            if (freq[j]==i+1&&(k<0||pri[j]>pri[k])) k=j;
        }
        if (k<0) {
            data->P[i]=data->L[i]=0.0;
            data->D[i]=0.0f;
            data->SNR[i]=data->LLI[i]=0;
            data->code[i]=CODE_NONE;
        }
        else {
            wl=satwavelen(sat,i,&raw->nav);
            if (sys==SYS_GLO&&fcn>=-7&&freq[k]<=2) {
                wl=CLIGHT/(freq[k]==1?FREQ1_GLO+DFRQ1_GLO*fcn:
                                      FREQ2_GLO+DFRQ2_GLO*fcn);
            }
            data->P[i]=range[k];
            data->L[i]=wl<=0.0?0.0:phase[k]/wl;
            data->D[i]=dopp[k];
            data->SNR[i]=(unsigned char)(cnr[k]/0.25+0.5);
            data->code[i]=codes[code[k]&0x3F];
            data->LLI[i]=slip[k]?1:0;
            mask[k]=1;
        }
    }
    for (;i<NFREQ+NEXOBS;i++) {
        for (k=0;k<nobs;k++) {
            if (!mask[k]) break;
        }
        if (k>=nobs) {
            data->P[i]=data->L[i]=0.0;
            data->D[i]=0.0f;
            data->SNR[i]=data->LLI[i]=0;
            data->code[i]=CODE_NONE;
        }
        else {
            wl=satwavelen(sat,freq[k]-1,&raw->nav);
            if (sys==SYS_GLO&&fcn>=-7&&freq[k]<=2) {
                wl=CLIGHT/(freq[k]==1?FREQ1_GLO+DFRQ1_GLO*fcn:
                                      FREQ2_GLO+DFRQ2_GLO*fcn);
            }
            data->P[i]=range[k];
            data->L[i]=wl<=0.0?0.0:phase[k]/wl;
            data->D[i]=dopp[k];
            data->SNR[i]=(unsigned char)(cnr[k]/0.25+0.5);
            data->code[i]=codes[code[k]&0x3F];
            data->LLI[i]=slip[k]?1:0;
            mask[k]=1;
        }
    }
    return p;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3a0, %rsp            # imm = 0x3A0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
movl %ecx, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movaps 0x5ea2c(%rip), %xmm0    # 0xbed20
movaps %xmm0, -0x40(%rbp)
movaps 0x5ea11(%rip), %xmm0    # 0xbed10
movaps %xmm0, -0x50(%rbp)
movaps 0x5ea36(%rip), %xmm0    # 0xbed40
movaps %xmm0, -0x60(%rbp)
movaps 0x5ea1b(%rip), %xmm0    # 0xbed30
movaps %xmm0, -0x70(%rbp)
movaps 0x5ea40(%rip), %xmm0    # 0xbed60
movaps %xmm0, -0x80(%rbp)
movaps 0x5ea25(%rip), %xmm0    # 0xbed50
movaps %xmm0, -0x90(%rbp)
movaps 0x5ea47(%rip), %xmm0    # 0xbed80
movaps %xmm0, -0xa0(%rbp)
movaps 0x5ea29(%rip), %xmm0    # 0xbed70
movaps %xmm0, -0xb0(%rbp)
movaps 0x5ea4b(%rip), %xmm0    # 0xbeda0
movaps %xmm0, -0xc0(%rbp)
movaps 0x5ea2d(%rip), %xmm0    # 0xbed90
movaps %xmm0, -0xd0(%rbp)
movaps 0x5ea4f(%rip), %xmm0    # 0xbedc0
movaps %xmm0, -0xe0(%rbp)
movaps 0x5ea31(%rip), %xmm0    # 0xbedb0
movaps %xmm0, -0xf0(%rbp)
movq $0x0, -0xf8(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x320(%rbp)
movaps %xmm0, -0x1d0(%rbp)
movaps %xmm0, -0x1e0(%rbp)
movaps %xmm0, -0x1f0(%rbp)
movaps %xmm0, -0x200(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0x218(%rbp)
movl $0xfffffff6, -0x234(%rbp) # imm = 0xFFFFFFF6
movaps %xmm0, -0x2d0(%rbp)
movaps %xmm0, -0x2e0(%rbp)
movaps %xmm0, -0x2f0(%rbp)
movaps %xmm0, -0x300(%rbp)
movl -0x1c(%rbp), %edx
movl -0x20(%rbp), %ecx
leaq 0x5e893(%rip), %rsi     # 0xbec88
xorl %eax, %eax
movl %eax, -0x30c(%rbp)
movl $0x5, %edi
callq 0x8b980
movl -0x30c(%rbp), %eax
movl -0x1c(%rbp), %edi
movl %eax, %esi
callq 0x8b3b0
movl %eax, -0x230(%rbp)
movl -0x230(%rbp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x308(%rbp)
subl $0x1f, %eax
ja 0x604a2
movq -0x308(%rbp), %rax
leaq 0x5dc13(%rip), %rcx     # 0xbe054
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq -0x50(%rbp), %rax
movq %rax, -0xf8(%rbp)
jmp 0x604a2
leaq -0x70(%rbp), %rax
movq %rax, -0xf8(%rbp)
jmp 0x604a2
leaq -0x90(%rbp), %rax
movq %rax, -0xf8(%rbp)
jmp 0x604a2
leaq -0xf0(%rbp), %rax
movq %rax, -0xf8(%rbp)
jmp 0x604a2
leaq -0xb0(%rbp), %rax
movq %rax, -0xf8(%rbp)
jmp 0x604a2
leaq -0xd0(%rbp), %rax
movq %rax, -0xf8(%rbp)
movl $0x0, -0x224(%rbp)
movl -0x224(%rbp), %eax
cmpl -0x20(%rbp), %eax
jge 0x60b86
movq -0x218(%rbp), %rdi
xorl %esi, %esi
movl $0x1, %edx
callq 0x8bfc0
movb %al, -0x219(%rbp)
movq -0x218(%rbp), %rdi
movl $0x2, %esi
movl $0x1, %edx
callq 0x8bfc0
movl %eax, %ecx
movslq -0x224(%rbp), %rax
movl %ecx, -0x280(%rbp,%rax,4)
movq -0x218(%rbp), %rdi
movl $0x3, %esi
movl $0x5, %edx
callq 0x8bfc0
movl %eax, %ecx
movslq -0x224(%rbp), %rax
movl %ecx, -0x260(%rbp,%rax,4)
movq -0x218(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x218(%rbp)
movl $0x0, -0x228(%rbp)
cmpl $0x4, -0x228(%rbp)
jge 0x60565
movslq -0x228(%rbp), %rax
movb $0x0, -0x21d(%rbp,%rax)
movl -0x228(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x228(%rbp)
jmp 0x6053c
movl $0x0, -0x228(%rbp)
xorl %eax, %eax
cmpb $0x0, -0x219(%rbp)
movb %al, -0x321(%rbp)
je 0x60590
cmpl $0x4, -0x228(%rbp)
setl %al
movb %al, -0x321(%rbp)
movb -0x321(%rbp), %al
testb $0x1, %al
jne 0x6059c
jmp 0x605fe
movq -0x218(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x218(%rbp)
movb (%rax), %al
movb %al, -0x219(%rbp)
movzbl -0x219(%rbp), %eax
andl $0x7f, %eax
movb %al, %cl
movzbl -0x219(%rbp), %eax
andl $0x3, %eax
cltq
movb %cl, -0x21d(%rbp,%rax)
movzbl -0x219(%rbp), %eax
andl $0x80, %eax
movb %al, -0x219(%rbp)
movl -0x228(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x228(%rbp)
jmp 0x6056f
cmpb $0x0, -0x21b(%rbp)
je 0x60627
leaq -0x21d(%rbp), %rdi
addq $0x2, %rdi
movl $0x2, %esi
movl $0x4, %edx
callq 0x8c050
movl %eax, -0x234(%rbp)
movzbl -0x21d(%rbp), %eax
andl $0x20, %eax
movsd 0x5c82f(%rip), %xmm0    # 0xbce68
movsd 0x5d777(%rip), %xmm1    # 0xbddb8
movsd %xmm1, -0x338(%rbp)
cmpl $0x0, %eax
movsd %xmm0, -0x330(%rbp)
jne 0x60666
movsd -0x338(%rbp), %xmm0
movsd %xmm0, -0x330(%rbp)
movsd -0x330(%rbp), %xmm0
movsd %xmm0, -0x208(%rbp)
movq -0x218(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x218(%rbp)
movzbl (%rax), %eax
cvtsi2sd %eax, %xmm0
movsd 0x5d716(%rip), %xmm1    # 0xbddb0
mulsd %xmm1, %xmm0
movslq -0x224(%rbp), %rax
movsd %xmm0, -0x1c0(%rbp,%rax,8)
cmpl $0x0, -0x224(%rbp)
jne 0x6078f
movq -0x218(%rbp), %rdi
xorl %esi, %esi
movl $0x2, %edx
movl %edx, -0x344(%rbp)
callq 0x8c050
movl -0x344(%rbp), %esi
cvtsi2sd %eax, %xmm0
movslq -0x224(%rbp), %rax
movsd -0x1c0(%rbp,%rax,8), %xmm1
movsd 0x5d65a(%rip), %xmm2    # 0xbdd50
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x1c0(%rbp,%rax,8)
movq -0x218(%rbp), %rdi
movl $0x20, %edx
callq 0x8bfc0
movl %eax, %eax
cvtsi2sd %rax, %xmm0
movsd %xmm0, -0x340(%rbp)
movq -0x218(%rbp), %rdi
movl $0x22, %esi
movl $0x6, %edx
callq 0x8bfc0
movsd -0x340(%rbp), %xmm0
movl %eax, %eax
cvtsi2sd %rax, %xmm1
movsd 0x5d5f4(%rip), %xmm2    # 0xbdd48
mulsd %xmm2, %xmm1
movsd 0x5d660(%rip), %xmm2    # 0xbddc0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movslq -0x224(%rbp), %rax
movsd %xmm0, -0x140(%rbp,%rax,8)
movq -0x218(%rbp), %rax
addq $0x5, %rax
movq %rax, -0x218(%rbp)
jmp 0x608ab
movzbl -0x21d(%rbp), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x60848
movq -0x218(%rbp), %rdi
xorl %esi, %esi
movl $0x2, %edx
callq 0x8c050
cvtsi2sd %eax, %xmm0
movslq -0x224(%rbp), %rax
movsd -0x1c0(%rbp,%rax,8), %xmm1
movsd 0x5d57f(%rip), %xmm2    # 0xbdd50
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x1c0(%rbp,%rax,8)
movsd -0x140(%rbp), %xmm0
movsd %xmm0, -0x350(%rbp)
movq -0x218(%rbp), %rdi
movl $0x4, %esi
movl $0x14, %edx
callq 0x8c050
movsd -0x350(%rbp), %xmm1
cvtsi2sd %eax, %xmm0
movsd 0x5d52c(%rip), %xmm2    # 0xbdd48
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movslq -0x224(%rbp), %rax
movsd %xmm0, -0x140(%rbp,%rax,8)
movq -0x218(%rbp), %rax
addq $0x3, %rax
movq %rax, -0x218(%rbp)
jmp 0x608a9
movsd -0x140(%rbp), %xmm0
movsd %xmm0, -0x358(%rbp)
movq -0x218(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0x8c050
movsd -0x358(%rbp), %xmm1
cvtsi2sd %eax, %xmm0
movsd 0x5d4c9(%rip), %xmm2    # 0xbdd48
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movslq -0x224(%rbp), %rax
movsd %xmm0, -0x140(%rbp,%rax,8)
movq -0x218(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x218(%rbp)
jmp 0x608ab
movzbl -0x21d(%rbp), %eax
andl $0x40, %eax
cmpl $0x0, %eax
je 0x60928
movslq -0x224(%rbp), %rax
movsd -0x140(%rbp,%rax,8), %xmm0
movsd %xmm0, -0x360(%rbp)
movq -0x218(%rbp), %rdi
xorl %esi, %esi
movl $0x18, %edx
callq 0x8c050
movsd -0x360(%rbp), %xmm1
cvtsi2sd %eax, %xmm0
movsd -0x208(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movslq -0x224(%rbp), %rax
movsd %xmm0, -0x180(%rbp,%rax,8)
movq -0x218(%rbp), %rax
addq $0x3, %rax
movq %rax, -0x218(%rbp)
jmp 0x609d4
movq -0x218(%rbp), %rdi
xorl %esi, %esi
movl $0x2, %edx
callq 0x8c050
cvtsi2sd %eax, %xmm0
movslq -0x224(%rbp), %rax
movsd -0x1c0(%rbp,%rax,8), %xmm1
movsd 0x5d3f9(%rip), %xmm2    # 0xbdd50
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x1c0(%rbp,%rax,8)
movslq -0x224(%rbp), %rax
movsd -0x140(%rbp,%rax,8), %xmm0
movsd %xmm0, -0x368(%rbp)
movq -0x218(%rbp), %rdi
movl $0x2, %esi
movl $0x16, %edx
callq 0x8c050
movsd -0x368(%rbp), %xmm1
cvtsi2sd %eax, %xmm0
movsd -0x208(%rbp), %xmm2
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movslq -0x224(%rbp), %rax
movsd %xmm0, -0x180(%rbp,%rax,8)
movq -0x218(%rbp), %rax
addq $0x3, %rax
movq %rax, -0x218(%rbp)
movzbl -0x21d(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x60a28
movq -0x218(%rbp), %rdi
xorl %esi, %esi
movl $0x18, %edx
callq 0x8c050
cvtsi2sd %eax, %xmm0
movsd 0x5d3c6(%rip), %xmm1    # 0xbddc8
divsd %xmm1, %xmm0
movslq -0x224(%rbp), %rax
movsd %xmm0, -0x200(%rbp,%rax,8)
movq -0x218(%rbp), %rax
addq $0x3, %rax
movq %rax, -0x218(%rbp)
movzbl -0x21d(%rbp), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x60aa3
movzbl -0x21d(%rbp), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x60a77
movq -0x218(%rbp), %rdi
callq 0x5b2b0
movzwl %ax, %ecx
movslq -0x224(%rbp), %rax
movl %ecx, -0x2e0(%rbp,%rax,4)
movq -0x218(%rbp), %rax
addq $0x2, %rax
movq %rax, -0x218(%rbp)
jmp 0x60aa1
movq -0x218(%rbp), %rax
movzbl (%rax), %ecx
movslq -0x224(%rbp), %rax
movl %ecx, -0x2e0(%rbp,%rax,4)
movq -0x218(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x218(%rbp)
jmp 0x60aa3
movl -0x224(%rbp), %edx
addl $0x1, %edx
movslq -0x224(%rbp), %rax
movl -0x260(%rbp,%rax,4), %ecx
movslq -0x224(%rbp), %rax
movl -0x280(%rbp,%rax,4), %r8d
movzbl -0x21d(%rbp), %r9d
movzbl -0x21c(%rbp), %r11d
movzbl -0x21b(%rbp), %r10d
movzbl -0x21a(%rbp), %eax
movl $0x5, %edi
leaq 0x5e1bc(%rip), %rsi     # 0xbecb0
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
movl %eax, 0x10(%rsp)
movb $0x0, %al
callq 0x8b980
movl -0x224(%rbp), %edx
addl $0x1, %edx
movslq -0x224(%rbp), %rax
movsd -0x140(%rbp,%rax,8), %xmm0
movslq -0x224(%rbp), %rax
movsd -0x180(%rbp,%rax,8), %xmm1
movslq -0x224(%rbp), %rax
movsd -0x200(%rbp,%rax,8), %xmm2
movslq -0x224(%rbp), %rax
movsd -0x1c0(%rbp,%rax,8), %xmm3
movslq -0x224(%rbp), %rax
movl -0x2e0(%rbp,%rax,4), %ecx
movl $0x5, %edi
leaq 0x5e16f(%rip), %rsi     # 0xbecda
movb $0x4, %al
callq 0x8b980
movl -0x224(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x224(%rbp)
jmp 0x604ac
cmpq $0x0, -0xf8(%rbp)
jne 0x60ba8
movq -0x28(%rbp), %rax
movb $0x0, 0x10(%rax)
movq -0x218(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x61331
movq -0x10(%rbp), %rcx
movq -0x28(%rbp), %rax
movq (%rcx), %rdx
movq %rdx, (%rax)
movq 0x8(%rcx), %rcx
movq %rcx, 0x8(%rax)
movl -0x1c(%rbp), %eax
movb %al, %cl
movq -0x28(%rbp), %rax
movb %cl, 0x10(%rax)
movl $0x0, -0x224(%rbp)
movl -0x224(%rbp), %eax
cmpl -0x20(%rbp), %eax
jge 0x60d00
movq -0xf8(%rbp), %rax
movslq -0x224(%rbp), %rcx
movl -0x260(%rbp,%rcx,4), %ecx
andl $0x3f, %ecx
movslq %ecx, %rcx
movb (%rax,%rcx), %al
leaq -0x2c0(%rbp), %rsi
movslq -0x224(%rbp), %rcx
shlq $0x2, %rcx
addq %rcx, %rsi
movzbl %al, %edi
callq 0x8bb90
movl -0x230(%rbp), %edi
movq -0xf8(%rbp), %rax
movslq -0x224(%rbp), %rcx
movl -0x260(%rbp,%rcx,4), %ecx
andl $0x3f, %ecx
movslq %ecx, %rcx
movb (%rax,%rcx), %al
movq -0x10(%rbp), %rdx
addq $0x82a90, %rdx          # imm = 0x82A90
movzbl %al, %esi
callq 0x8bdb0
movl %eax, %ecx
movslq -0x224(%rbp), %rax
movl %ecx, -0x2a0(%rbp,%rax,4)
cmpl $0x20, -0x230(%rbp)
jne 0x60cba
movslq -0x224(%rbp), %rax
cmpl $0x5, -0x2c0(%rbp,%rax,4)
jne 0x60c93
movslq -0x224(%rbp), %rax
movl $0x2, -0x2c0(%rbp,%rax,4)
jmp 0x60cb8
movslq -0x224(%rbp), %rax
cmpl $0x4, -0x2c0(%rbp,%rax,4)
jne 0x60cb6
movslq -0x224(%rbp), %rax
movl $0x3, -0x2c0(%rbp,%rax,4)
jmp 0x60cb8
jmp 0x60cea
cmpl $0x8, -0x230(%rbp)
jne 0x60ce8
movslq -0x224(%rbp), %rax
cmpl $0x5, -0x2c0(%rbp,%rax,4)
jne 0x60ce6
movslq -0x224(%rbp), %rax
movl $0x2, -0x2c0(%rbp,%rax,4)
jmp 0x60ce8
jmp 0x60cea
jmp 0x60cec
movl -0x224(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x224(%rbp)
jmp 0x60bd4
movl $0x0, -0x224(%rbp)
cmpl $0x3, -0x224(%rbp)
jge 0x61033
movl $0x0, -0x228(%rbp)
movl $0xffffffff, -0x22c(%rbp) # imm = 0xFFFFFFFF
movl -0x228(%rbp), %eax
cmpl -0x20(%rbp), %eax
jge 0x60d97
movslq -0x228(%rbp), %rax
movl -0x2c0(%rbp,%rax,4), %eax
movl -0x224(%rbp), %ecx
addl $0x1, %ecx
cmpl %ecx, %eax
jne 0x60d84
cmpl $0x0, -0x22c(%rbp)
jl 0x60d78
movslq -0x228(%rbp), %rax
movl -0x2a0(%rbp,%rax,4), %eax
movslq -0x22c(%rbp), %rcx
cmpl -0x2a0(%rbp,%rcx,4), %eax
jle 0x60d84
movl -0x228(%rbp), %eax
movl %eax, -0x22c(%rbp)
jmp 0x60d86
movl -0x228(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x228(%rbp)
jmp 0x60d2b
cmpl $0x0, -0x22c(%rbp)
jge 0x60e11
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, 0x20(%rax,%rcx,8)
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, 0x38(%rax,%rcx,8)
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
xorps %xmm0, %xmm0
movss %xmm0, 0x50(%rax,%rcx,4)
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
movb $0x0, 0x15(%rax,%rcx)
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
movb $0x0, 0x12(%rax,%rcx)
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
movb $0x0, 0x18(%rax,%rcx)
jmp 0x6101d
movl -0x1c(%rbp), %edi
movl -0x224(%rbp), %esi
movq -0x10(%rbp), %rdx
addq $0x1d40, %rdx           # imm = 0x1D40
callq 0x938e0
movsd %xmm0, -0x210(%rbp)
cmpl $0x4, -0x230(%rbp)
jne 0x60edc
cmpl $-0x7, -0x234(%rbp)
jl 0x60edc
movslq -0x22c(%rbp), %rax
cmpl $0x2, -0x2c0(%rbp,%rax,4)
jg 0x60edc
movslq -0x22c(%rbp), %rax
cmpl $0x1, -0x2c0(%rbp,%rax,4)
jne 0x60e98
cvtsi2sdl -0x234(%rbp), %xmm0
movsd 0x5c05a(%rip), %xmm1    # 0xbced8
mulsd %xmm1, %xmm0
movsd 0x5c056(%rip), %xmm1    # 0xbcee0
addsd %xmm1, %xmm0
movsd %xmm0, -0x370(%rbp)
jmp 0x60ec0
cvtsi2sdl -0x234(%rbp), %xmm0
movsd 0x5c020(%rip), %xmm1    # 0xbcec8
mulsd %xmm1, %xmm0
movsd 0x5c01c(%rip), %xmm1    # 0xbced0
addsd %xmm1, %xmm0
movsd %xmm0, -0x370(%rbp)
movsd -0x370(%rbp), %xmm1
movsd 0x5ced8(%rip), %xmm0    # 0xbdda8
divsd %xmm1, %xmm0
movsd %xmm0, -0x210(%rbp)
movslq -0x22c(%rbp), %rax
movsd -0x140(%rbp,%rax,8), %xmm0
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
movsd %xmm0, 0x38(%rax,%rcx,8)
xorps %xmm0, %xmm0
ucomisd -0x210(%rbp), %xmm0
jb 0x60f17
xorps %xmm0, %xmm0
movsd %xmm0, -0x378(%rbp)
jmp 0x60f37
movslq -0x22c(%rbp), %rax
movsd -0x180(%rbp,%rax,8), %xmm0
divsd -0x210(%rbp), %xmm0
movsd %xmm0, -0x378(%rbp)
movsd -0x378(%rbp), %xmm0
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
movsd %xmm0, 0x20(%rax,%rcx,8)
movslq -0x22c(%rbp), %rax
movsd -0x200(%rbp,%rax,8), %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
movss %xmm0, 0x50(%rax,%rcx,4)
movslq -0x22c(%rbp), %rax
movsd -0x1c0(%rbp,%rax,8), %xmm0
movsd 0x5be63(%rip), %xmm1    # 0xbcdf0
mulsd %xmm1, %xmm0
movsd 0x5bee7(%rip), %xmm1    # 0xbce80
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movb %al, %dl
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
movb %dl, 0x12(%rax,%rcx)
movq -0xf8(%rbp), %rax
movslq -0x22c(%rbp), %rcx
movl -0x260(%rbp,%rcx,4), %ecx
andl $0x3f, %ecx
movslq %ecx, %rcx
movb (%rax,%rcx), %dl
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
movb %dl, 0x18(%rax,%rcx)
movslq -0x22c(%rbp), %rax
movl -0x280(%rbp,%rax,4), %edx
xorl %eax, %eax
movl $0x1, %ecx
cmpl $0x0, %edx
cmovnel %ecx, %eax
movb %al, %dl
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
movb %dl, 0x15(%rax,%rcx)
movslq -0x22c(%rbp), %rax
movl $0x1, -0x300(%rbp,%rax,4)
jmp 0x6101f
movl -0x224(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x224(%rbp)
jmp 0x60d0a
jmp 0x61035
cmpl $0x3, -0x224(%rbp)
jge 0x61326
movl $0x0, -0x22c(%rbp)
movl -0x22c(%rbp), %eax
cmpl -0x20(%rbp), %eax
jge 0x6107d
movslq -0x22c(%rbp), %rax
cmpl $0x0, -0x300(%rbp,%rax,4)
jne 0x6106a
jmp 0x6107d
jmp 0x6106c
movl -0x22c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x22c(%rbp)
jmp 0x6104c
movl -0x22c(%rbp), %eax
cmpl -0x20(%rbp), %eax
jl 0x610f9
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, 0x20(%rax,%rcx,8)
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, 0x38(%rax,%rcx,8)
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
xorps %xmm0, %xmm0
movss %xmm0, 0x50(%rax,%rcx,4)
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
movb $0x0, 0x15(%rax,%rcx)
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
movb $0x0, 0x12(%rax,%rcx)
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
movb $0x0, 0x18(%rax,%rcx)
jmp 0x61310
movl -0x1c(%rbp), %edi
movslq -0x22c(%rbp), %rax
movl -0x2c0(%rbp,%rax,4), %esi
subl $0x1, %esi
movq -0x10(%rbp), %rdx
addq $0x1d40, %rdx           # imm = 0x1D40
callq 0x938e0
movsd %xmm0, -0x210(%rbp)
cmpl $0x4, -0x230(%rbp)
jne 0x611cf
cmpl $-0x7, -0x234(%rbp)
jl 0x611cf
movslq -0x22c(%rbp), %rax
cmpl $0x2, -0x2c0(%rbp,%rax,4)
jg 0x611cf
movslq -0x22c(%rbp), %rax
cmpl $0x1, -0x2c0(%rbp,%rax,4)
jne 0x6118b
cvtsi2sdl -0x234(%rbp), %xmm0
movsd 0x5bd67(%rip), %xmm1    # 0xbced8
mulsd %xmm1, %xmm0
movsd 0x5bd63(%rip), %xmm1    # 0xbcee0
addsd %xmm1, %xmm0
movsd %xmm0, -0x380(%rbp)
jmp 0x611b3
cvtsi2sdl -0x234(%rbp), %xmm0
movsd 0x5bd2d(%rip), %xmm1    # 0xbcec8
mulsd %xmm1, %xmm0
movsd 0x5bd29(%rip), %xmm1    # 0xbced0
addsd %xmm1, %xmm0
movsd %xmm0, -0x380(%rbp)
movsd -0x380(%rbp), %xmm1
movsd 0x5cbe5(%rip), %xmm0    # 0xbdda8
divsd %xmm1, %xmm0
movsd %xmm0, -0x210(%rbp)
movslq -0x22c(%rbp), %rax
movsd -0x140(%rbp,%rax,8), %xmm0
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
movsd %xmm0, 0x38(%rax,%rcx,8)
xorps %xmm0, %xmm0
ucomisd -0x210(%rbp), %xmm0
jb 0x6120a
xorps %xmm0, %xmm0
movsd %xmm0, -0x388(%rbp)
jmp 0x6122a
movslq -0x22c(%rbp), %rax
movsd -0x180(%rbp,%rax,8), %xmm0
divsd -0x210(%rbp), %xmm0
movsd %xmm0, -0x388(%rbp)
movsd -0x388(%rbp), %xmm0
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
movsd %xmm0, 0x20(%rax,%rcx,8)
movslq -0x22c(%rbp), %rax
movsd -0x200(%rbp,%rax,8), %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
movss %xmm0, 0x50(%rax,%rcx,4)
movslq -0x22c(%rbp), %rax
movsd -0x1c0(%rbp,%rax,8), %xmm0
movsd 0x5bb70(%rip), %xmm1    # 0xbcdf0
mulsd %xmm1, %xmm0
movsd 0x5bbf4(%rip), %xmm1    # 0xbce80
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movb %al, %dl
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
movb %dl, 0x12(%rax,%rcx)
movq -0xf8(%rbp), %rax
movslq -0x22c(%rbp), %rcx
movl -0x260(%rbp,%rcx,4), %ecx
andl $0x3f, %ecx
movslq %ecx, %rcx
movb (%rax,%rcx), %dl
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
movb %dl, 0x18(%rax,%rcx)
movslq -0x22c(%rbp), %rax
movl -0x280(%rbp,%rax,4), %edx
xorl %eax, %eax
movl $0x1, %ecx
cmpl $0x0, %edx
cmovnel %ecx, %eax
movb %al, %dl
movq -0x28(%rbp), %rax
movslq -0x224(%rbp), %rcx
movb %dl, 0x15(%rax,%rcx)
movslq -0x22c(%rbp), %rax
movl $0x1, -0x300(%rbp,%rax,4)
jmp 0x61312
movl -0x224(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x224(%rbp)
jmp 0x61035
movq -0x218(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x3a0, %rsp            # imm = 0x3A0
popq %rbp
retq
nop