// File: DoubleString[P]RtConverter/src/Rtklib/ublox.cpp
// Function: bamboo::decode_trkmeas(bamboo::raw_t*)
static int decode_trkmeas(raw_t *raw)
{
    static double adrs[MAXRTKSAT]={0};
    gtime_t time;
    double ts,tr=-1.0,t,tau,utc_gpst,snr,adr,dop;
    int i,j,n=0,nch,sys,prn,sat,qi,frq,flag,lock1,lock2,week;
    unsigned char *p=raw->buff+6;
    
    trace(4,"decode_trkmeas: len=%d\n",raw->len);
    
    if (raw->outtype) {
        sprintf(raw->msgtype,"UBX TRK-MEAS  (%4d):",raw->len);
    }
    if (!raw->time.time) return 0;
    
    /* number of channels */
    nch=U1(p+2);
    
    if (raw->len<112+nch*56) {
        trace(2,"decode_trkmeas: length error len=%d nch=%2d\n",raw->len,nch);
        return -1;
    }
    /* time-tag = max(transmission time + 0.08) rounded by 100 ms */
    for (i=0,p=raw->buff+110;i<nch;i++,p+=56) {
        if (U1(p+1)<4||ubx_sys(U1(p+4))!=SYS_GPS) continue;
        if ((t=I8(p+24)*P2_32/1000.0)>tr) tr=t;
    }
    if (tr<0.0) return 0;
    
    tr=ROUND((tr+0.08)/0.1)*0.1;
    
    /* adjust week handover */
    t=time2gpst(raw->time,&week);
    if      (tr<t-302400.0) week++;
    else if (tr>t+302400.0) week--;
    time=gpst2time(week,tr);
    
    utc_gpst=timediff(gpst2utc(time),time);
    
    for (i=0,p=raw->buff+110;i<nch;i++,p+=56) {
        
        /* quality indicator (0:idle,1:search,2:aquired,3:unusable, */
        /*                    4:code lock,5,6,7:code/carrier lock) */
        qi=U1(p+1);
        if (qi<4||7<qi) continue;
        
        /* system and satellite number */
        if (!(sys=ubx_sys(U1(p+4)))) {
            trace(2,"ubx trkmeas: system error\n");
            continue;
        }
        prn=U1(p+5)+(sys==SYS_QZS?192:0);
        if (!(sat=satno(sys,prn))) {
            trace(2,"ubx trkmeas sat number error: sys=%2d prn=%2d\n",sys,prn);
            continue;
        }
        /* transmission time */
        ts=I8(p+24)*P2_32/1000.0;
        if      (sys==SYS_CMP) ts+=14.0;             /* bdt  -> gpst */
        else if (sys==SYS_GLO) ts-=10800.0+utc_gpst; /* glot -> gpst */
        
        /* signal travel time */
        tau=tr-ts;
        if      (tau<-302400.0) tau+=604800.0;
        else if (tau> 302400.0) tau-=604800.0;
        
        frq  =U1(p+ 7)-7; /* frequency */
        flag =U1(p+ 8);   /* tracking status */
        lock1=U1(p+16);   /* code lock count */
        lock2=U1(p+17);   /* phase lock count */
        snr  =U2(p+20)/256.0;
        adr  =I8(p+32)*P2_32+(flag&0x40?0.5:0.0);
        dop  =I4(p+40)*P2_10*10.0;
        
        /* set slip flag */
        if (lock2==0||lock2<raw->lockt[sat-1][0]) raw->lockt[sat-1][1]=1.0;
        raw->lockt[sat-1][0]=lock2;
        
#if 0 /* for debug */
        trace(2,"[%2d] qi=%d sys=%d prn=%3d frq=%2d flag=%02X ?=%02X %02X "
              "%02X %02X %02X %02X %02X lock=%3d %3d ts=%10.3f snr=%4.1f "
              "dop=%9.3f adr=%13.3f %6.3f\n",U1(p),qi,U1(p+4),prn,frq,flag,
              U1(p+9),U1(p+10),U1(p+11),U1(p+12),U1(p+13),U1(p+14),U1(p+15),
              lock1,lock2,ts,snr,dop,adr,
              adrs[sat-1]==0.0||dop==0.0?0.0:(adr-adrs[sat-1])-dop);
#endif
        adrs[sat-1]=adr;
        
        /* check phase lock */
        if (!(flag&0x20)) continue;
        
        raw->obs.data[n].time=time;
        raw->obs.data[n].sat=sat;
        raw->obs.data[n].P[0]=tau*CLIGHT;
        raw->obs.data[n].L[0]=-adr;
        raw->obs.data[n].D[0]=(float)dop;
        raw->obs.data[n].SNR[0]=(unsigned char)(snr*4.0);
        raw->obs.data[n].code[0]=sys==SYS_CMP?CODE_L1I:CODE_L1C;
        raw->obs.data[n].LLI[0]=raw->lockt[sat-1][1]>0.0?1:0;
        if (sys==SYS_SBS) { /* half-cycle valid */
            raw->obs.data[n].LLI[0]|=lock2>142?0:2;
        }
        else {
            raw->obs.data[n].LLI[0]|=flag&0x80?0:2;
        }
        raw->lockt[sat-1][1]=0.0;
        
        for (j=1;j<NFREQ+NEXOBS;j++) {
            raw->obs.data[n].L[j]=raw->obs.data[n].P[j]=0.0;
            raw->obs.data[n].D[j]=0.0;
            raw->obs.data[n].SNR[j]=raw->obs.data[n].LLI[j]=0;
            raw->obs.data[n].code[j]=CODE_NONE;
        }
        n++;
    }
    if (n<=0) return 0;
    raw->time=time;
    raw->obs.n=n;
    return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x110, %rsp            # imm = 0x110
movq %rdi, -0x10(%rbp)
movsd 0x13bc1(%rip), %xmm0    # 0xbedd8
movsd %xmm0, -0x30(%rbp)
movl $0x0, -0x6c(%rbp)
movq -0x10(%rbp), %rax
addq $0x81a90, %rax          # imm = 0x81A90
addq $0x6, %rax
movq %rax, -0xa0(%rbp)
movq -0x10(%rbp), %rax
movl 0x81a78(%rax), %edx
movl $0x4, %edi
leaq 0x20c49(%rip), %rsi     # 0xcbe97
movb $0x0, %al
callq 0x8b980
movq -0x10(%rbp), %rax
cmpl $0x0, 0x81a8c(%rax)
je 0xab285
movq -0x10(%rbp), %rdi
addq $0x70e70, %rdi          # imm = 0x70E70
movq -0x10(%rbp), %rax
movl 0x81a78(%rax), %edx
leaq 0x20c31(%rip), %rsi     # 0xcbeaf
movb $0x0, %al
callq 0x9150
movq -0x10(%rbp), %rax
cmpq $0x0, (%rax)
jne 0xab29b
movl $0x0, -0x4(%rbp)
jmp 0xabbc7
movq -0xa0(%rbp), %rax
movzbl 0x2(%rax), %eax
movl %eax, -0x70(%rbp)
movq -0x10(%rbp), %rax
movl 0x81a78(%rax), %eax
imull $0x38, -0x70(%rbp), %ecx
addl $0x70, %ecx
cmpl %ecx, %eax
jge 0xab2ea
movq -0x10(%rbp), %rax
movl 0x81a78(%rax), %edx
movl -0x70(%rbp), %ecx
movl $0x2, %edi
leaq 0x20bed(%rip), %rsi     # 0xcbec4
movb $0x0, %al
callq 0x8b980
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xabbc7
movl $0x0, -0x64(%rbp)
movq -0x10(%rbp), %rax
addq $0x81a90, %rax          # imm = 0x81A90
addq $0x6e, %rax
movq %rax, -0xa0(%rbp)
movl -0x64(%rbp), %eax
cmpl -0x70(%rbp), %eax
jge 0xab399
movq -0xa0(%rbp), %rax
movzbl 0x1(%rax), %eax
cmpl $0x4, %eax
jl 0xab337
movq -0xa0(%rbp), %rax
movzbl 0x4(%rax), %edi
callq 0xac810
cmpl $0x1, %eax
je 0xab339
jmp 0xab379
movq -0xa0(%rbp), %rdi
addq $0x18, %rdi
callq 0xae6b0
movsd 0x13aef(%rip), %xmm1    # 0xbee40
mulsd %xmm1, %xmm0
movsd 0x120cb(%rip), %xmm1    # 0xbd428
divsd %xmm1, %xmm0
movsd %xmm0, -0x38(%rbp)
ucomisd -0x30(%rbp), %xmm0
jbe 0xab377
movsd -0x38(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
jmp 0xab379
movl -0x64(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x64(%rbp)
movq -0xa0(%rbp), %rax
addq $0x38, %rax
movq %rax, -0xa0(%rbp)
jmp 0xab306
xorps %xmm0, %xmm0
ucomisd -0x30(%rbp), %xmm0
jbe 0xab3af
movl $0x0, -0x4(%rbp)
jmp 0xabbc7
movsd 0x203b9(%rip), %xmm0    # 0xcb770
addsd -0x30(%rbp), %xmm0
movsd 0x1298c(%rip), %xmm1    # 0xbdd50
divsd %xmm1, %xmm0
movsd 0x11ab0(%rip), %xmm1    # 0xbce80
addsd %xmm1, %xmm0
callq 0x9c90
cvttsd2si %xmm0, %eax
cvtsi2sd %eax, %xmm0
movsd 0x12967(%rip), %xmm1    # 0xbdd50
mulsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rcx
movq %rcx, -0xb0(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0xa8(%rbp)
movq -0xb0(%rbp), %rdi
movsd -0xa8(%rbp), %xmm0
leaq -0x94(%rbp), %rsi
callq 0x8e540
movsd %xmm0, -0x38(%rbp)
movsd -0x30(%rbp), %xmm1
movsd -0x38(%rbp), %xmm0
movsd 0x12923(%rip), %xmm2    # 0xbdd60
subsd %xmm2, %xmm0
ucomisd %xmm1, %xmm0
jbe 0xab458
movl -0x94(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x94(%rbp)
jmp 0xab481
movsd -0x30(%rbp), %xmm0
movsd 0x128fb(%rip), %xmm1    # 0xbdd60
addsd -0x38(%rbp), %xmm1
ucomisd %xmm1, %xmm0
jbe 0xab47f
movl -0x94(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x94(%rbp)
jmp 0xab481
movl -0x94(%rbp), %edi
movsd -0x30(%rbp), %xmm0
callq 0x8e4a0
movq %rax, -0xc0(%rbp)
movsd %xmm0, -0xb8(%rbp)
movq -0xc0(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0xb8(%rbp), %rax
movq %rax, -0x18(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0xe0(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0xe0(%rbp), %rdi
movsd -0xd8(%rbp), %xmm0
callq 0x8ef80
movq %rax, -0xd0(%rbp)
movsd %xmm0, -0xc8(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq -0xd0(%rbp), %rdi
movsd -0xc8(%rbp), %xmm0
movq -0xf0(%rbp), %rsi
movsd -0xe8(%rbp), %xmm1
callq 0x8e8e0
movsd %xmm0, -0x48(%rbp)
movl $0x0, -0x64(%rbp)
movq -0x10(%rbp), %rax
addq $0x81a90, %rax          # imm = 0x81A90
addq $0x6e, %rax
movq %rax, -0xa0(%rbp)
movl -0x64(%rbp), %eax
cmpl -0x70(%rbp), %eax
jge 0xabb91
movq -0xa0(%rbp), %rax
movzbl 0x1(%rax), %eax
movl %eax, -0x80(%rbp)
cmpl $0x4, -0x80(%rbp)
jl 0xab573
movl $0x7, %eax
cmpl -0x80(%rbp), %eax
jge 0xab578
jmp 0xabb71
movq -0xa0(%rbp), %rax
movzbl 0x4(%rax), %edi
callq 0xac810
movl %eax, -0x74(%rbp)
cmpl $0x0, %eax
jne 0xab5a8
movl $0x2, %edi
leaq 0x20955(%rip), %rsi     # 0xcbef1
movb $0x0, %al
callq 0x8b980
jmp 0xabb71
movq -0xa0(%rbp), %rax
movzbl 0x5(%rax), %eax
movl -0x74(%rbp), %esi
xorl %ecx, %ecx
movl $0xc0, %edx
cmpl $0x10, %esi
cmovel %edx, %ecx
addl %ecx, %eax
movl %eax, -0x78(%rbp)
movl -0x74(%rbp), %edi
movl -0x78(%rbp), %esi
callq 0x8b1b0
movl %eax, -0x7c(%rbp)
cmpl $0x0, %eax
jne 0xab5f9
movl -0x74(%rbp), %edx
movl -0x78(%rbp), %ecx
movl $0x2, %edi
leaq 0x2091f(%rip), %rsi     # 0xcbf0c
movb $0x0, %al
callq 0x8b980
jmp 0xabb71
movq -0xa0(%rbp), %rdi
addq $0x18, %rdi
callq 0xae6b0
movsd 0x1382f(%rip), %xmm1    # 0xbee40
mulsd %xmm1, %xmm0
movsd 0x11e0b(%rip), %xmm1    # 0xbd428
divsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
cmpl $0x20, -0x74(%rbp)
jne 0xab640
movsd 0x118b4(%rip), %xmm0    # 0xbcee8
addsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x28(%rbp)
jmp 0xab663
cmpl $0x4, -0x74(%rbp)
jne 0xab661
movsd 0x119a2(%rip), %xmm1    # 0xbcff0
addsd -0x48(%rbp), %xmm1
movsd -0x28(%rbp), %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, -0x28(%rbp)
jmp 0xab663
movsd -0x30(%rbp), %xmm0
subsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
movsd 0x13806(%rip), %xmm0    # 0xbee80
ucomisd -0x40(%rbp), %xmm0
jbe 0xab695
movsd 0x126df(%rip), %xmm0    # 0xbdd68
addsd -0x40(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
jmp 0xab6c0
movsd -0x40(%rbp), %xmm0
movsd 0x126be(%rip), %xmm1    # 0xbdd60
ucomisd %xmm1, %xmm0
jbe 0xab6be
movsd -0x40(%rbp), %xmm0
movsd 0x126b3(%rip), %xmm1    # 0xbdd68
subsd %xmm1, %xmm0
movsd %xmm0, -0x40(%rbp)
jmp 0xab6c0
movq -0xa0(%rbp), %rax
movzbl 0x7(%rax), %eax
subl $0x7, %eax
movl %eax, -0x84(%rbp)
movq -0xa0(%rbp), %rax
movzbl 0x8(%rax), %eax
movl %eax, -0x88(%rbp)
movq -0xa0(%rbp), %rax
movzbl 0x10(%rax), %eax
movl %eax, -0x8c(%rbp)
movq -0xa0(%rbp), %rax
movzbl 0x11(%rax), %eax
movl %eax, -0x90(%rbp)
movq -0xa0(%rbp), %rdi
addq $0x14, %rdi
callq 0xa8920
movzwl %ax, %eax
cvtsi2sd %eax, %xmm0
movsd 0x126a2(%rip), %xmm1    # 0xbddc8
divsd %xmm1, %xmm0
movsd %xmm0, -0x50(%rbp)
movq -0xa0(%rbp), %rdi
addq $0x20, %rdi
callq 0xae6b0
movsd %xmm0, -0x108(%rbp)
movl -0x88(%rbp), %eax
andl $0x40, %eax
movsd 0x11728(%rip), %xmm0    # 0xbce80
xorps %xmm1, %xmm1
movsd %xmm1, -0x100(%rbp)
cmpl $0x0, %eax
movsd %xmm0, -0xf8(%rbp)
jne 0xab780
movsd -0x100(%rbp), %xmm0
movsd %xmm0, -0xf8(%rbp)
movsd -0x108(%rbp), %xmm0
movsd -0xf8(%rbp), %xmm1
movsd 0x136a8(%rip), %xmm2    # 0xbee40
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
movq -0xa0(%rbp), %rdi
addq $0x28, %rdi
callq 0xae690
cvtsi2sd %eax, %xmm0
movsd 0x15267(%rip), %xmm1    # 0xc0a28
mulsd %xmm1, %xmm0
movsd 0x11833(%rip), %xmm1    # 0xbd000
mulsd %xmm1, %xmm0
movsd %xmm0, -0x60(%rbp)
cmpl $0x0, -0x90(%rbp)
je 0xab80b
cvtsi2sdl -0x90(%rbp), %xmm1
movq -0x10(%rbp), %rax
addq $0x7f670, %rax          # imm = 0x7F670
movl -0x7c(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movsd (%rax), %xmm0
ucomisd %xmm1, %xmm0
jbe 0xab832
movq -0x10(%rbp), %rax
addq $0x7f670, %rax          # imm = 0x7F670
movl -0x7c(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movsd 0x10633(%rip), %xmm0    # 0xbbe60
movsd %xmm0, 0x8(%rax)
cvtsi2sdl -0x90(%rbp), %xmm0
movq -0x10(%rbp), %rax
addq $0x7f670, %rax          # imm = 0x7F670
movl -0x7c(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movsd %xmm0, (%rax)
movsd -0x58(%rbp), %xmm0
movl -0x7c(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rcx
leaq 0x64903(%rip), %rax     # 0x110170
movsd %xmm0, (%rax,%rcx,8)
movl -0x88(%rbp), %eax
andl $0x20, %eax
cmpl $0x0, %eax
jne 0xab885
jmp 0xabb71
movq -0x10(%rbp), %rax
movq 0x1d28(%rax), %rax
movslq -0x6c(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
shlq $0x5, %rcx
movups -0x20(%rbp), %xmm0
movups %xmm0, (%rax,%rcx)
movb -0x7c(%rbp), %dl
movq -0x10(%rbp), %rax
movq 0x1d28(%rax), %rax
movslq -0x6c(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
shlq $0x5, %rcx
movb %dl, 0x10(%rax,%rcx)
movsd -0x40(%rbp), %xmm0
movsd 0x124d9(%rip), %xmm1    # 0xbdda8
mulsd %xmm1, %xmm0
movq -0x10(%rbp), %rax
movq 0x1d28(%rax), %rax
movslq -0x6c(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
shlq $0x5, %rcx
movsd %xmm0, 0x38(%rax,%rcx)
movaps 0xfe19(%rip), %xmm1     # 0xbb710
movsd -0x58(%rbp), %xmm0
pxor %xmm1, %xmm0
movq -0x10(%rbp), %rax
movq 0x1d28(%rax), %rax
movslq -0x6c(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
shlq $0x5, %rcx
movlpd %xmm0, 0x20(%rax,%rcx)
movsd -0x60(%rbp), %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x10(%rbp), %rax
movq 0x1d28(%rax), %rax
movslq -0x6c(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
shlq $0x5, %rcx
movss %xmm0, 0x50(%rax,%rcx)
movsd -0x50(%rbp), %xmm0
movsd 0x114a0(%rip), %xmm1    # 0xbcdf0
mulsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movb %al, %cl
movq -0x10(%rbp), %rax
movq 0x1d28(%rax), %rax
movslq -0x6c(%rbp), %rdx
imulq $0x60, %rdx, %rdx
addq %rdx, %rax
movb %cl, 0x12(%rax)
movl -0x74(%rbp), %edx
movl $0x1, %eax
movl $0x2f, %ecx
cmpl $0x20, %edx
cmovel %ecx, %eax
movb %al, %cl
movq -0x10(%rbp), %rax
movq 0x1d28(%rax), %rax
movslq -0x6c(%rbp), %rdx
imulq $0x60, %rdx, %rdx
addq %rdx, %rax
movb %cl, 0x18(%rax)
movq -0x10(%rbp), %rax
addq $0x7f670, %rax          # imm = 0x7F670
movl -0x7c(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movsd 0x8(%rax), %xmm0
xorps %xmm1, %xmm1
xorl %eax, %eax
movl $0x1, %ecx
ucomisd %xmm1, %xmm0
cmoval %ecx, %eax
movb %al, %cl
movq -0x10(%rbp), %rax
movq 0x1d28(%rax), %rax
movslq -0x6c(%rbp), %rdx
imulq $0x60, %rdx, %rdx
addq %rdx, %rax
movb %cl, 0x15(%rax)
cmpl $0x2, -0x74(%rbp)
jne 0xaba29
movl -0x90(%rbp), %ecx
movl $0x2, %edx
xorl %eax, %eax
cmpl $0x8e, %ecx
cmovgl %eax, %edx
movq -0x10(%rbp), %rax
movq 0x1d28(%rax), %rax
movslq -0x6c(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movzbl 0x15(%rax), %ecx
orl %edx, %ecx
movb %cl, 0x15(%rax)
jmp 0xaba61
movl -0x88(%rbp), %ecx
andl $0x80, %ecx
movl $0x2, %edx
xorl %eax, %eax
cmpl $0x0, %ecx
cmovnel %eax, %edx
movq -0x10(%rbp), %rax
movq 0x1d28(%rax), %rax
movslq -0x6c(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movzbl 0x15(%rax), %ecx
orl %edx, %ecx
movb %cl, 0x15(%rax)
movq -0x10(%rbp), %rax
addq $0x7f670, %rax          # imm = 0x7F670
movl -0x7c(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
xorps %xmm0, %xmm0
movsd %xmm0, 0x8(%rax)
movl $0x1, -0x68(%rbp)
cmpl $0x3, -0x68(%rbp)
jge 0xabb68
movq -0x10(%rbp), %rax
movq 0x1d28(%rax), %rax
movslq -0x6c(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movslq -0x68(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, 0x38(%rax,%rcx,8)
movq -0x10(%rbp), %rax
movq 0x1d28(%rax), %rax
movslq -0x6c(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movslq -0x68(%rbp), %rcx
xorps %xmm0, %xmm0
movsd %xmm0, 0x20(%rax,%rcx,8)
movq -0x10(%rbp), %rax
movq 0x1d28(%rax), %rax
movslq -0x6c(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movslq -0x68(%rbp), %rcx
xorps %xmm0, %xmm0
movss %xmm0, 0x50(%rax,%rcx,4)
movq -0x10(%rbp), %rax
movq 0x1d28(%rax), %rax
movslq -0x6c(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movslq -0x68(%rbp), %rcx
movb $0x0, 0x15(%rax,%rcx)
movq -0x10(%rbp), %rax
movq 0x1d28(%rax), %rax
movslq -0x6c(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movslq -0x68(%rbp), %rcx
movb $0x0, 0x12(%rax,%rcx)
movq -0x10(%rbp), %rax
movq 0x1d28(%rax), %rax
movslq -0x6c(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movslq -0x68(%rbp), %rcx
movb $0x0, 0x18(%rax,%rcx)
movl -0x68(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x68(%rbp)
jmp 0xaba8a
movl -0x6c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6c(%rbp)
movl -0x64(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x64(%rbp)
movq -0xa0(%rbp), %rax
addq $0x38, %rax
movq %rax, -0xa0(%rbp)
jmp 0xab549
cmpl $0x0, -0x6c(%rbp)
jg 0xabba0
movl $0x0, -0x4(%rbp)
jmp 0xabbc7
movq -0x10(%rbp), %rax
movq -0x20(%rbp), %rcx
movq %rcx, (%rax)
movq -0x18(%rbp), %rcx
movq %rcx, 0x8(%rax)
movl -0x6c(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x1d20(%rax)
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x110, %rsp            # imm = 0x110
popq %rbp
retq
nopw %cs:(%rax,%rax)