// File: mouda[P]LTE_random_access-simulate/alglibinternal.cpp
// Function: alglib_impl::cmatrixscaledtrsafesolve(alglib_impl::ae_matrix*, double, long, alglib_impl::ae_vector*, bool, long, bool, double, alglib_impl::ae_state*)
ae_bool cmatrixscaledtrsafesolve(/* Complex */ ae_matrix* a,
     double sa,
     ae_int_t n,
     /* Complex */ ae_vector* x,
     ae_bool isupper,
     ae_int_t trans,
     ae_bool isunit,
     double maxgrowth,
     ae_state *_state)
{
    ae_frame _frame_block;
    double lnmax;
    double nrmb;
    double nrmx;
    ae_int_t i;
    ae_complex alpha;
    ae_complex beta;
    ae_complex vc;
    ae_vector tmp;
    ae_bool result;

    ae_frame_make(_state, &_frame_block);
    ae_vector_init(&tmp, 0, DT_COMPLEX, _state, ae_true);

    ae_assert(n>0, "CMatrixTRSafeSolve: incorrect N!", _state);
    ae_assert((trans==0||trans==1)||trans==2, "CMatrixTRSafeSolve: incorrect Trans!", _state);
    result = ae_true;
    lnmax = ae_log(ae_maxrealnumber, _state);
    
    /*
     * Quick return if possible
     */
    if( n<=0 )
    {
        ae_frame_leave(_state);
        return result;
    }
    
    /*
     * Load norms: right part and X
     */
    nrmb = 0;
    for(i=0; i<=n-1; i++)
    {
        nrmb = ae_maxreal(nrmb, ae_c_abs(x->ptr.p_complex[i], _state), _state);
    }
    nrmx = 0;
    
    /*
     * Solve
     */
    ae_vector_set_length(&tmp, n, _state);
    result = ae_true;
    if( isupper&&trans==0 )
    {
        
        /*
         * U*x = b
         */
        for(i=n-1; i>=0; i--)
        {
            
            /*
             * Task is reduced to alpha*x[i] = beta
             */
            if( isunit )
            {
                alpha = ae_complex_from_d(sa);
            }
            else
            {
                alpha = ae_c_mul_d(a->ptr.pp_complex[i][i],sa);
            }
            if( i<n-1 )
            {
                ae_v_cmoved(&tmp.ptr.p_complex[i+1], 1, &a->ptr.pp_complex[i][i+1], 1, "N", ae_v_len(i+1,n-1), sa);
                vc = ae_v_cdotproduct(&tmp.ptr.p_complex[i+1], 1, "N", &x->ptr.p_complex[i+1], 1, "N", ae_v_len(i+1,n-1));
                beta = ae_c_sub(x->ptr.p_complex[i],vc);
            }
            else
            {
                beta = x->ptr.p_complex[i];
            }
            
            /*
             * solve alpha*x[i] = beta
             */
            result = safesolve_cbasicsolveandupdate(alpha, beta, lnmax, nrmb, maxgrowth, &nrmx, &vc, _state);
            if( !result )
            {
                ae_frame_leave(_state);
                return result;
            }
            x->ptr.p_complex[i] = vc;
        }
        ae_frame_leave(_state);
        return result;
    }
    if( !isupper&&trans==0 )
    {
        
        /*
         * L*x = b
         */
        for(i=0; i<=n-1; i++)
        {
            
            /*
             * Task is reduced to alpha*x[i] = beta
             */
            if( isunit )
            {
                alpha = ae_complex_from_d(sa);
            }
            else
            {
                alpha = ae_c_mul_d(a->ptr.pp_complex[i][i],sa);
            }
            if( i>0 )
            {
                ae_v_cmoved(&tmp.ptr.p_complex[0], 1, &a->ptr.pp_complex[i][0], 1, "N", ae_v_len(0,i-1), sa);
                vc = ae_v_cdotproduct(&tmp.ptr.p_complex[0], 1, "N", &x->ptr.p_complex[0], 1, "N", ae_v_len(0,i-1));
                beta = ae_c_sub(x->ptr.p_complex[i],vc);
            }
            else
            {
                beta = x->ptr.p_complex[i];
            }
            
            /*
             * solve alpha*x[i] = beta
             */
            result = safesolve_cbasicsolveandupdate(alpha, beta, lnmax, nrmb, maxgrowth, &nrmx, &vc, _state);
            if( !result )
            {
                ae_frame_leave(_state);
                return result;
            }
            x->ptr.p_complex[i] = vc;
        }
        ae_frame_leave(_state);
        return result;
    }
    if( isupper&&trans==1 )
    {
        
        /*
         * U^T*x = b
         */
        for(i=0; i<=n-1; i++)
        {
            
            /*
             * Task is reduced to alpha*x[i] = beta
             */
            if( isunit )
            {
                alpha = ae_complex_from_d(sa);
            }
            else
            {
                alpha = ae_c_mul_d(a->ptr.pp_complex[i][i],sa);
            }
            beta = x->ptr.p_complex[i];
            
            /*
             * solve alpha*x[i] = beta
             */
            result = safesolve_cbasicsolveandupdate(alpha, beta, lnmax, nrmb, maxgrowth, &nrmx, &vc, _state);
            if( !result )
            {
                ae_frame_leave(_state);
                return result;
            }
            x->ptr.p_complex[i] = vc;
            
            /*
             * update the rest of right part
             */
            if( i<n-1 )
            {
                ae_v_cmoved(&tmp.ptr.p_complex[i+1], 1, &a->ptr.pp_complex[i][i+1], 1, "N", ae_v_len(i+1,n-1), sa);
                ae_v_csubc(&x->ptr.p_complex[i+1], 1, &tmp.ptr.p_complex[i+1], 1, "N", ae_v_len(i+1,n-1), vc);
            }
        }
        ae_frame_leave(_state);
        return result;
    }
    if( !isupper&&trans==1 )
    {
        
        /*
         * L^T*x = b
         */
        for(i=n-1; i>=0; i--)
        {
            
            /*
             * Task is reduced to alpha*x[i] = beta
             */
            if( isunit )
            {
                alpha = ae_complex_from_d(sa);
            }
            else
            {
                alpha = ae_c_mul_d(a->ptr.pp_complex[i][i],sa);
            }
            beta = x->ptr.p_complex[i];
            
            /*
             * solve alpha*x[i] = beta
             */
            result = safesolve_cbasicsolveandupdate(alpha, beta, lnmax, nrmb, maxgrowth, &nrmx, &vc, _state);
            if( !result )
            {
                ae_frame_leave(_state);
                return result;
            }
            x->ptr.p_complex[i] = vc;
            
            /*
             * update the rest of right part
             */
            if( i>0 )
            {
                ae_v_cmoved(&tmp.ptr.p_complex[0], 1, &a->ptr.pp_complex[i][0], 1, "N", ae_v_len(0,i-1), sa);
                ae_v_csubc(&x->ptr.p_complex[0], 1, &tmp.ptr.p_complex[0], 1, "N", ae_v_len(0,i-1), vc);
            }
        }
        ae_frame_leave(_state);
        return result;
    }
    if( isupper&&trans==2 )
    {
        
        /*
         * U^H*x = b
         */
        for(i=0; i<=n-1; i++)
        {
            
            /*
             * Task is reduced to alpha*x[i] = beta
             */
            if( isunit )
            {
                alpha = ae_complex_from_d(sa);
            }
            else
            {
                alpha = ae_c_mul_d(ae_c_conj(a->ptr.pp_complex[i][i], _state),sa);
            }
            beta = x->ptr.p_complex[i];
            
            /*
             * solve alpha*x[i] = beta
             */
            result = safesolve_cbasicsolveandupdate(alpha, beta, lnmax, nrmb, maxgrowth, &nrmx, &vc, _state);
            if( !result )
            {
                ae_frame_leave(_state);
                return result;
            }
            x->ptr.p_complex[i] = vc;
            
            /*
             * update the rest of right part
             */
            if( i<n-1 )
            {
                ae_v_cmoved(&tmp.ptr.p_complex[i+1], 1, &a->ptr.pp_complex[i][i+1], 1, "Conj", ae_v_len(i+1,n-1), sa);
                ae_v_csubc(&x->ptr.p_complex[i+1], 1, &tmp.ptr.p_complex[i+1], 1, "N", ae_v_len(i+1,n-1), vc);
            }
        }
        ae_frame_leave(_state);
        return result;
    }
    if( !isupper&&trans==2 )
    {
        
        /*
         * L^T*x = b
         */
        for(i=n-1; i>=0; i--)
        {
            
            /*
             * Task is reduced to alpha*x[i] = beta
             */
            if( isunit )
            {
                alpha = ae_complex_from_d(sa);
            }
            else
            {
                alpha = ae_c_mul_d(ae_c_conj(a->ptr.pp_complex[i][i], _state),sa);
            }
            beta = x->ptr.p_complex[i];
            
            /*
             * solve alpha*x[i] = beta
             */
            result = safesolve_cbasicsolveandupdate(alpha, beta, lnmax, nrmb, maxgrowth, &nrmx, &vc, _state);
            if( !result )
            {
                ae_frame_leave(_state);
                return result;
            }
            x->ptr.p_complex[i] = vc;
            
            /*
             * update the rest of right part
             */
            if( i>0 )
            {
                ae_v_cmoved(&tmp.ptr.p_complex[0], 1, &a->ptr.pp_complex[i][0], 1, "Conj", ae_v_len(0,i-1), sa);
                ae_v_csubc(&x->ptr.p_complex[0], 1, &tmp.ptr.p_complex[0], 1, "N", ae_v_len(0,i-1), vc);
            }
        }
        ae_frame_leave(_state);
        return result;
    }
    result = ae_false;
    ae_frame_leave(_state);
    return result;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x490, %rsp            # imm = 0x490
movb %r9b, %al
movq 0x10(%rbp), %r9
movq %rdi, -0x10(%rbp)
movsd %xmm0, -0x18(%rbp)
movq %rsi, -0x20(%rbp)
movq %rdx, -0x28(%rbp)
andb $0x1, %cl
movb %cl, -0x29(%rbp)
movq %r8, -0x38(%rbp)
andb $0x1, %al
movb %al, -0x39(%rbp)
movsd %xmm1, -0x48(%rbp)
movq 0x10(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x3b0f0
movq 0x10(%rbp), %rcx
leaq -0xe0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x4, %edx
movl $0x1, %r8d
callq 0x3b400
cmpq $0x0, -0x20(%rbp)
setg %al
movq 0x10(%rbp), %rdx
movzbl %al, %edi
andl $0x1, %edi
leaq 0x287f8(%rip), %rsi     # 0x57e04
callq 0x3b240
movb $0x1, %al
cmpq $0x0, -0x38(%rbp)
movb %al, -0x3b9(%rbp)
je 0x2f63d
movb $0x1, %al
cmpq $0x1, -0x38(%rbp)
movb %al, -0x3b9(%rbp)
je 0x2f63d
cmpq $0x2, -0x38(%rbp)
sete %al
movb %al, -0x3b9(%rbp)
movb -0x3b9(%rbp), %al
movq 0x10(%rbp), %rdx
movzbl %al, %edi
andl $0x1, %edi
leaq 0x287d1(%rip), %rsi     # 0x57e25
callq 0x3b240
movb $0x1, -0xe1(%rbp)
movq 0x10(%rbp), %rdi
movsd 0x2613c(%rip), %xmm0    # 0x557a8
callq 0x3cd70
movsd %xmm0, -0x68(%rbp)
cmpq $0x0, -0x20(%rbp)
jg 0x2f696
movq 0x10(%rbp), %rdi
callq 0x3b030
movb -0xe1(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30b74
xorps %xmm0, %xmm0
movsd %xmm0, -0x70(%rbp)
movq $0x0, -0x80(%rbp)
movq -0x80(%rbp), %rax
movq -0x20(%rbp), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jg 0x2f72f
movsd -0x70(%rbp), %xmm0
movsd %xmm0, -0x3c8(%rbp)
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x80(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq %rcx, -0xf8(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0xf0(%rbp)
movq 0x10(%rbp), %rdi
movsd -0xf8(%rbp), %xmm0
movsd -0xf0(%rbp), %xmm1
callq 0x3f2b0
movaps %xmm0, %xmm1
movsd -0x3c8(%rbp), %xmm0
movq 0x10(%rbp), %rdi
callq 0x3ca70
movsd %xmm0, -0x70(%rbp)
movq -0x80(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x80(%rbp)
jmp 0x2f6a6
xorps %xmm0, %xmm0
movsd %xmm0, -0x78(%rbp)
movq -0x20(%rbp), %rsi
movq 0x10(%rbp), %rdx
leaq -0xe0(%rbp), %rdi
callq 0x3b620
movb $0x1, -0xe1(%rbp)
testb $0x1, -0x29(%rbp)
je 0x2fb25
cmpq $0x0, -0x38(%rbp)
jne 0x2fb25
movq -0x20(%rbp), %rax
subq $0x1, %rax
movq %rax, -0x80(%rbp)
cmpq $0x0, -0x80(%rbp)
jl 0x2fb0c
testb $0x1, -0x39(%rbp)
je 0x2f7bc
movsd -0x18(%rbp), %xmm0
callq 0x3f1b0
movsd %xmm0, -0x108(%rbp)
movsd %xmm1, -0x100(%rbp)
movq -0x108(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x100(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x2f832
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x80(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq -0x80(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq %rcx, -0x128(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x120(%rbp)
movsd -0x18(%rbp), %xmm2
movsd -0x128(%rbp), %xmm0
movsd -0x120(%rbp), %xmm1
callq 0x3f850
movsd %xmm0, -0x118(%rbp)
movsd %xmm1, -0x110(%rbp)
movq -0x118(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x110(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x80(%rbp), %rax
movq -0x20(%rbp), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jge 0x2fa06
movq -0xb8(%rbp), %rax
movq -0x80(%rbp), %rcx
addq $0x1, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x3e8(%rbp)
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x80(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq -0x80(%rbp), %rcx
addq $0x1, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x3e0(%rbp)
movq -0x80(%rbp), %rdi
addq $0x1, %rdi
movq -0x20(%rbp), %rsi
subq $0x1, %rsi
callq 0x42370
movq -0x3e8(%rbp), %rdi
movq -0x3e0(%rbp), %rdx
movq %rax, %r9
movsd -0x18(%rbp), %xmm0
movl $0x1, %ecx
leaq 0x28c87(%rip), %r8      # 0x58548
movq %rcx, %rsi
callq 0x404a0
movq -0xb8(%rbp), %rax
movq -0x80(%rbp), %rcx
addq $0x1, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x3d8(%rbp)
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x80(%rbp), %rcx
addq $0x1, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x3d0(%rbp)
movq -0x80(%rbp), %rdi
addq $0x1, %rdi
movq -0x20(%rbp), %rsi
subq $0x1, %rsi
callq 0x42370
movq -0x3d8(%rbp), %rdi
movq -0x3d0(%rbp), %rcx
movl $0x1, %r8d
leaq 0x28c14(%rip), %r9      # 0x58548
movq %r8, %rsi
movq %r9, %rdx
movq %rax, (%rsp)
callq 0x3faa0
movsd %xmm0, -0x138(%rbp)
movsd %xmm1, -0x130(%rbp)
movq -0x138(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0x130(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x80(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq %rcx, -0x158(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x150(%rbp)
movq -0xb0(%rbp), %rax
movq %rax, -0x168(%rbp)
movq -0xa8(%rbp), %rax
movq %rax, -0x160(%rbp)
movsd -0x158(%rbp), %xmm0
movsd -0x150(%rbp), %xmm1
movsd -0x168(%rbp), %xmm2
movsd -0x160(%rbp), %xmm3
callq 0x3f580
movsd %xmm0, -0x148(%rbp)
movsd %xmm1, -0x140(%rbp)
movq -0x148(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x140(%rbp), %rax
movq %rax, -0x98(%rbp)
jmp 0x2fa2e
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x80(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq %rcx, -0xa0(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x98(%rbp)
movq -0x90(%rbp), %rax
movq %rax, -0x178(%rbp)
movq -0x88(%rbp), %rax
movq %rax, -0x170(%rbp)
movq -0xa0(%rbp), %rax
movq %rax, -0x188(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0x180(%rbp)
movsd -0x68(%rbp), %xmm4
movsd -0x70(%rbp), %xmm5
movsd -0x48(%rbp), %xmm6
movq 0x10(%rbp), %rdx
movsd -0x178(%rbp), %xmm0
movsd -0x170(%rbp), %xmm1
movsd -0x188(%rbp), %xmm2
movsd -0x180(%rbp), %xmm3
leaq -0x78(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x2f2d0
andb $0x1, %al
movb %al, -0xe1(%rbp)
testb $0x1, -0xe1(%rbp)
jne 0x2fad3
movq 0x10(%rbp), %rdi
callq 0x3b030
movb -0xe1(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30b74
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x80(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq -0xb0(%rbp), %rcx
movq %rcx, (%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0x80(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x80(%rbp)
jmp 0x2f773
movq 0x10(%rbp), %rdi
callq 0x3b030
movb -0xe1(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30b74
testb $0x1, -0x29(%rbp)
jne 0x2feb0
cmpq $0x0, -0x38(%rbp)
jne 0x2feb0
movq $0x0, -0x80(%rbp)
movq -0x80(%rbp), %rax
movq -0x20(%rbp), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jg 0x2fe97
testb $0x1, -0x39(%rbp)
je 0x2fb95
movsd -0x18(%rbp), %xmm0
callq 0x3f1b0
movsd %xmm0, -0x198(%rbp)
movsd %xmm1, -0x190(%rbp)
movq -0x198(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x190(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x2fc0b
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x80(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq -0x80(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq %rcx, -0x1b8(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x1b0(%rbp)
movsd -0x18(%rbp), %xmm2
movsd -0x1b8(%rbp), %xmm0
movsd -0x1b0(%rbp), %xmm1
callq 0x3f850
movsd %xmm0, -0x1a8(%rbp)
movsd %xmm1, -0x1a0(%rbp)
movq -0x1a8(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x1a0(%rbp), %rax
movq %rax, -0x88(%rbp)
cmpq $0x0, -0x80(%rbp)
jle 0x2fd91
movq -0xb8(%rbp), %rax
movq %rax, -0x408(%rbp)
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x80(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x400(%rbp)
movq -0x80(%rbp), %rsi
subq $0x1, %rsi
xorl %eax, %eax
movl %eax, %edi
callq 0x42370
movq -0x408(%rbp), %rdi
movq -0x400(%rbp), %rdx
movq %rax, %r9
movsd -0x18(%rbp), %xmm0
movl $0x1, %ecx
leaq 0x288da(%rip), %r8      # 0x58548
movq %rcx, %rsi
callq 0x404a0
movq -0xb8(%rbp), %rax
movq %rax, -0x3f8(%rbp)
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x3f0(%rbp)
movq -0x80(%rbp), %rsi
subq $0x1, %rsi
xorl %eax, %eax
movl %eax, %edi
callq 0x42370
movq -0x3f8(%rbp), %rdi
movq -0x3f0(%rbp), %rcx
movl $0x1, %r8d
leaq 0x28889(%rip), %r9      # 0x58548
movq %r8, %rsi
movq %r9, %rdx
movq %rax, (%rsp)
callq 0x3faa0
movsd %xmm0, -0x1c8(%rbp)
movsd %xmm1, -0x1c0(%rbp)
movq -0x1c8(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0x1c0(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x80(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq %rcx, -0x1e8(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x1e0(%rbp)
movq -0xb0(%rbp), %rax
movq %rax, -0x1f8(%rbp)
movq -0xa8(%rbp), %rax
movq %rax, -0x1f0(%rbp)
movsd -0x1e8(%rbp), %xmm0
movsd -0x1e0(%rbp), %xmm1
movsd -0x1f8(%rbp), %xmm2
movsd -0x1f0(%rbp), %xmm3
callq 0x3f580
movsd %xmm0, -0x1d8(%rbp)
movsd %xmm1, -0x1d0(%rbp)
movq -0x1d8(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq -0x1d0(%rbp), %rax
movq %rax, -0x98(%rbp)
jmp 0x2fdb9
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x80(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq %rcx, -0xa0(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x98(%rbp)
movq -0x90(%rbp), %rax
movq %rax, -0x208(%rbp)
movq -0x88(%rbp), %rax
movq %rax, -0x200(%rbp)
movq -0xa0(%rbp), %rax
movq %rax, -0x218(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0x210(%rbp)
movsd -0x68(%rbp), %xmm4
movsd -0x70(%rbp), %xmm5
movsd -0x48(%rbp), %xmm6
movq 0x10(%rbp), %rdx
movsd -0x208(%rbp), %xmm0
movsd -0x200(%rbp), %xmm1
movsd -0x218(%rbp), %xmm2
movsd -0x210(%rbp), %xmm3
leaq -0x78(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x2f2d0
andb $0x1, %al
movb %al, -0xe1(%rbp)
testb $0x1, -0xe1(%rbp)
jne 0x2fe5e
movq 0x10(%rbp), %rdi
callq 0x3b030
movb -0xe1(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30b74
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x80(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq -0xb0(%rbp), %rcx
movq %rcx, (%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0x80(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x80(%rbp)
jmp 0x2fb42
movq 0x10(%rbp), %rdi
callq 0x3b030
movb -0xe1(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30b74
testb $0x1, -0x29(%rbp)
je 0x301ef
cmpq $0x1, -0x38(%rbp)
jne 0x301ef
movq $0x0, -0x80(%rbp)
movq -0x80(%rbp), %rax
movq -0x20(%rbp), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jg 0x301d6
testb $0x1, -0x39(%rbp)
je 0x2ff20
movsd -0x18(%rbp), %xmm0
callq 0x3f1b0
movsd %xmm0, -0x228(%rbp)
movsd %xmm1, -0x220(%rbp)
movq -0x228(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x220(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x2ff96
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x80(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq -0x80(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq %rcx, -0x248(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x240(%rbp)
movsd -0x18(%rbp), %xmm2
movsd -0x248(%rbp), %xmm0
movsd -0x240(%rbp), %xmm1
callq 0x3f850
movsd %xmm0, -0x238(%rbp)
movsd %xmm1, -0x230(%rbp)
movq -0x238(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x230(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x80(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq %rcx, -0xa0(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x98(%rbp)
movq -0x90(%rbp), %rax
movq %rax, -0x258(%rbp)
movq -0x88(%rbp), %rax
movq %rax, -0x250(%rbp)
movq -0xa0(%rbp), %rax
movq %rax, -0x268(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0x260(%rbp)
movsd -0x68(%rbp), %xmm4
movsd -0x70(%rbp), %xmm5
movsd -0x48(%rbp), %xmm6
movq 0x10(%rbp), %rdx
movsd -0x258(%rbp), %xmm0
movsd -0x250(%rbp), %xmm1
movsd -0x268(%rbp), %xmm2
movsd -0x260(%rbp), %xmm3
leaq -0x78(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x2f2d0
andb $0x1, %al
movb %al, -0xe1(%rbp)
testb $0x1, -0xe1(%rbp)
jne 0x30063
movq 0x10(%rbp), %rdi
callq 0x3b030
movb -0xe1(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30b74
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x80(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq -0xb0(%rbp), %rcx
movq %rcx, (%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0x80(%rbp), %rax
movq -0x20(%rbp), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jge 0x301c3
movq -0xb8(%rbp), %rax
movq -0x80(%rbp), %rcx
addq $0x1, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x428(%rbp)
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x80(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq -0x80(%rbp), %rcx
addq $0x1, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x420(%rbp)
movq -0x80(%rbp), %rdi
addq $0x1, %rdi
movq -0x20(%rbp), %rsi
subq $0x1, %rsi
callq 0x42370
movq -0x428(%rbp), %rdi
movq -0x420(%rbp), %rdx
movq %rax, %r9
movsd -0x18(%rbp), %xmm0
movl $0x1, %ecx
leaq 0x2842e(%rip), %r8      # 0x58548
movq %rcx, %rsi
callq 0x404a0
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x80(%rbp), %rcx
addq $0x1, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x418(%rbp)
movq -0xb8(%rbp), %rax
movq -0x80(%rbp), %rcx
addq $0x1, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x410(%rbp)
movq -0x80(%rbp), %rdi
addq $0x1, %rdi
movq -0x20(%rbp), %rsi
subq $0x1, %rsi
callq 0x42370
movq -0x418(%rbp), %rdi
movq -0x410(%rbp), %rdx
movq %rax, %r9
movq -0xb0(%rbp), %rax
movq %rax, -0x278(%rbp)
movq -0xa8(%rbp), %rax
movq %rax, -0x270(%rbp)
movsd -0x278(%rbp), %xmm0
movsd -0x270(%rbp), %xmm1
movl $0x1, %ecx
leaq 0x2838d(%rip), %r8      # 0x58548
movq %rcx, %rsi
callq 0x41600
jmp 0x301c5
movq -0x80(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x80(%rbp)
jmp 0x2fecd
movq 0x10(%rbp), %rdi
callq 0x3b030
movb -0xe1(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30b74
testb $0x1, -0x29(%rbp)
jne 0x304da
cmpq $0x1, -0x38(%rbp)
jne 0x304da
movq -0x20(%rbp), %rax
subq $0x1, %rax
movq %rax, -0x80(%rbp)
cmpq $0x0, -0x80(%rbp)
jl 0x304c1
testb $0x1, -0x39(%rbp)
je 0x30259
movsd -0x18(%rbp), %xmm0
callq 0x3f1b0
movsd %xmm0, -0x288(%rbp)
movsd %xmm1, -0x280(%rbp)
movq -0x288(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x280(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x302cf
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x80(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq -0x80(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq %rcx, -0x2a8(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x2a0(%rbp)
movsd -0x18(%rbp), %xmm2
movsd -0x2a8(%rbp), %xmm0
movsd -0x2a0(%rbp), %xmm1
callq 0x3f850
movsd %xmm0, -0x298(%rbp)
movsd %xmm1, -0x290(%rbp)
movq -0x298(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x290(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x80(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq %rcx, -0xa0(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x98(%rbp)
movq -0x90(%rbp), %rax
movq %rax, -0x2b8(%rbp)
movq -0x88(%rbp), %rax
movq %rax, -0x2b0(%rbp)
movq -0xa0(%rbp), %rax
movq %rax, -0x2c8(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0x2c0(%rbp)
movsd -0x68(%rbp), %xmm4
movsd -0x70(%rbp), %xmm5
movsd -0x48(%rbp), %xmm6
movq 0x10(%rbp), %rdx
movsd -0x2b8(%rbp), %xmm0
movsd -0x2b0(%rbp), %xmm1
movsd -0x2c8(%rbp), %xmm2
movsd -0x2c0(%rbp), %xmm3
leaq -0x78(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x2f2d0
andb $0x1, %al
movb %al, -0xe1(%rbp)
testb $0x1, -0xe1(%rbp)
jne 0x3039c
movq 0x10(%rbp), %rdi
callq 0x3b030
movb -0xe1(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30b74
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x80(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq -0xb0(%rbp), %rcx
movq %rcx, (%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x8(%rax)
cmpq $0x0, -0x80(%rbp)
jle 0x304ae
movq -0xb8(%rbp), %rax
movq %rax, -0x448(%rbp)
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x80(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x440(%rbp)
movq -0x80(%rbp), %rsi
subq $0x1, %rsi
xorl %eax, %eax
movl %eax, %edi
callq 0x42370
movq -0x448(%rbp), %rdi
movq -0x440(%rbp), %rdx
movq %rax, %r9
movsd -0x18(%rbp), %xmm0
movl $0x1, %ecx
leaq 0x28121(%rip), %r8      # 0x58548
movq %rcx, %rsi
callq 0x404a0
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x438(%rbp)
movq -0xb8(%rbp), %rax
movq %rax, -0x430(%rbp)
movq -0x80(%rbp), %rsi
subq $0x1, %rsi
xorl %eax, %eax
movl %eax, %edi
callq 0x42370
movq -0x438(%rbp), %rdi
movq -0x430(%rbp), %rdx
movq %rax, %r9
movq -0xb0(%rbp), %rax
movq %rax, -0x2d8(%rbp)
movq -0xa8(%rbp), %rax
movq %rax, -0x2d0(%rbp)
movsd -0x2d8(%rbp), %xmm0
movsd -0x2d0(%rbp), %xmm1
movl $0x1, %ecx
leaq 0x280a2(%rip), %r8      # 0x58548
movq %rcx, %rsi
callq 0x41600
jmp 0x304b0
movq -0x80(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x80(%rbp)
jmp 0x30210
movq 0x10(%rbp), %rdi
callq 0x3b030
movb -0xe1(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30b74
testb $0x1, -0x29(%rbp)
je 0x30845
cmpq $0x2, -0x38(%rbp)
jne 0x30845
movq $0x0, -0x80(%rbp)
movq -0x80(%rbp), %rax
movq -0x20(%rbp), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jg 0x3082c
testb $0x1, -0x39(%rbp)
je 0x3054d
movsd -0x18(%rbp), %xmm0
callq 0x3f1b0
movsd %xmm0, -0x2e8(%rbp)
movsd %xmm1, -0x2e0(%rbp)
movq -0x2e8(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x2e0(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x305ec
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x80(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq -0x80(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq %rcx, -0x318(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x310(%rbp)
movq 0x10(%rbp), %rdi
movsd -0x318(%rbp), %xmm0
movsd -0x310(%rbp), %xmm1
callq 0x3f220
movsd %xmm0, -0x308(%rbp)
movsd %xmm1, -0x300(%rbp)
movsd -0x18(%rbp), %xmm2
movsd -0x308(%rbp), %xmm0
movsd -0x300(%rbp), %xmm1
callq 0x3f850
movsd %xmm0, -0x2f8(%rbp)
movsd %xmm1, -0x2f0(%rbp)
movq -0x2f8(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x2f0(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x80(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq %rcx, -0xa0(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x98(%rbp)
movq -0x90(%rbp), %rax
movq %rax, -0x328(%rbp)
movq -0x88(%rbp), %rax
movq %rax, -0x320(%rbp)
movq -0xa0(%rbp), %rax
movq %rax, -0x338(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0x330(%rbp)
movsd -0x68(%rbp), %xmm4
movsd -0x70(%rbp), %xmm5
movsd -0x48(%rbp), %xmm6
movq 0x10(%rbp), %rdx
movsd -0x328(%rbp), %xmm0
movsd -0x320(%rbp), %xmm1
movsd -0x338(%rbp), %xmm2
movsd -0x330(%rbp), %xmm3
leaq -0x78(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x2f2d0
andb $0x1, %al
movb %al, -0xe1(%rbp)
testb $0x1, -0xe1(%rbp)
jne 0x306b9
movq 0x10(%rbp), %rdi
callq 0x3b030
movb -0xe1(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30b74
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x80(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq -0xb0(%rbp), %rcx
movq %rcx, (%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0x80(%rbp), %rax
movq -0x20(%rbp), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
jge 0x30819
movq -0xb8(%rbp), %rax
movq -0x80(%rbp), %rcx
addq $0x1, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x468(%rbp)
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x80(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq -0x80(%rbp), %rcx
addq $0x1, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x460(%rbp)
movq -0x80(%rbp), %rdi
addq $0x1, %rdi
movq -0x20(%rbp), %rsi
subq $0x1, %rsi
callq 0x42370
movq -0x468(%rbp), %rdi
movq -0x460(%rbp), %rdx
movq %rax, %r9
movsd -0x18(%rbp), %xmm0
movl $0x1, %ecx
leaq 0x275c2(%rip), %r8      # 0x57d32
movq %rcx, %rsi
callq 0x404a0
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x80(%rbp), %rcx
addq $0x1, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x458(%rbp)
movq -0xb8(%rbp), %rax
movq -0x80(%rbp), %rcx
addq $0x1, %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x450(%rbp)
movq -0x80(%rbp), %rdi
addq $0x1, %rdi
movq -0x20(%rbp), %rsi
subq $0x1, %rsi
callq 0x42370
movq -0x458(%rbp), %rdi
movq -0x450(%rbp), %rdx
movq %rax, %r9
movq -0xb0(%rbp), %rax
movq %rax, -0x348(%rbp)
movq -0xa8(%rbp), %rax
movq %rax, -0x340(%rbp)
movsd -0x348(%rbp), %xmm0
movsd -0x340(%rbp), %xmm1
movl $0x1, %ecx
leaq 0x27d37(%rip), %r8      # 0x58548
movq %rcx, %rsi
callq 0x41600
jmp 0x3081b
movq -0x80(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x80(%rbp)
jmp 0x304f7
movq 0x10(%rbp), %rdi
callq 0x3b030
movb -0xe1(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30b74
testb $0x1, -0x29(%rbp)
jne 0x30b59
cmpq $0x2, -0x38(%rbp)
jne 0x30b59
movq -0x20(%rbp), %rax
subq $0x1, %rax
movq %rax, -0x80(%rbp)
cmpq $0x0, -0x80(%rbp)
jl 0x30b43
testb $0x1, -0x39(%rbp)
je 0x308b2
movsd -0x18(%rbp), %xmm0
callq 0x3f1b0
movsd %xmm0, -0x358(%rbp)
movsd %xmm1, -0x350(%rbp)
movq -0x358(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x350(%rbp), %rax
movq %rax, -0x88(%rbp)
jmp 0x30951
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x80(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq -0x80(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq %rcx, -0x388(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x380(%rbp)
movq 0x10(%rbp), %rdi
movsd -0x388(%rbp), %xmm0
movsd -0x380(%rbp), %xmm1
callq 0x3f220
movsd %xmm0, -0x378(%rbp)
movsd %xmm1, -0x370(%rbp)
movsd -0x18(%rbp), %xmm2
movsd -0x378(%rbp), %xmm0
movsd -0x370(%rbp), %xmm1
callq 0x3f850
movsd %xmm0, -0x368(%rbp)
movsd %xmm1, -0x360(%rbp)
movq -0x368(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x360(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x80(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq (%rax), %rcx
movq %rcx, -0xa0(%rbp)
movq 0x8(%rax), %rax
movq %rax, -0x98(%rbp)
movq -0x90(%rbp), %rax
movq %rax, -0x398(%rbp)
movq -0x88(%rbp), %rax
movq %rax, -0x390(%rbp)
movq -0xa0(%rbp), %rax
movq %rax, -0x3a8(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0x3a0(%rbp)
movsd -0x68(%rbp), %xmm4
movsd -0x70(%rbp), %xmm5
movsd -0x48(%rbp), %xmm6
movq 0x10(%rbp), %rdx
movsd -0x398(%rbp), %xmm0
movsd -0x390(%rbp), %xmm1
movsd -0x3a8(%rbp), %xmm2
movsd -0x3a0(%rbp), %xmm3
leaq -0x78(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x2f2d0
andb $0x1, %al
movb %al, -0xe1(%rbp)
testb $0x1, -0xe1(%rbp)
jne 0x30a1e
movq 0x10(%rbp), %rdi
callq 0x3b030
movb -0xe1(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30b74
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x80(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
movq -0xb0(%rbp), %rcx
movq %rcx, (%rax)
movq -0xa8(%rbp), %rcx
movq %rcx, 0x8(%rax)
cmpq $0x0, -0x80(%rbp)
jle 0x30b30
movq -0xb8(%rbp), %rax
movq %rax, -0x488(%rbp)
movq -0x10(%rbp), %rax
movq 0x38(%rax), %rax
movq -0x80(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x480(%rbp)
movq -0x80(%rbp), %rsi
subq $0x1, %rsi
xorl %eax, %eax
movl %eax, %edi
callq 0x42370
movq -0x488(%rbp), %rdi
movq -0x480(%rbp), %rdx
movq %rax, %r9
movsd -0x18(%rbp), %xmm0
movl $0x1, %ecx
leaq 0x27289(%rip), %r8      # 0x57d32
movq %rcx, %rsi
callq 0x404a0
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x478(%rbp)
movq -0xb8(%rbp), %rax
movq %rax, -0x470(%rbp)
movq -0x80(%rbp), %rsi
subq $0x1, %rsi
xorl %eax, %eax
movl %eax, %edi
callq 0x42370
movq -0x478(%rbp), %rdi
movq -0x470(%rbp), %rdx
movq %rax, %r9
movq -0xb0(%rbp), %rax
movq %rax, -0x3b8(%rbp)
movq -0xa8(%rbp), %rax
movq %rax, -0x3b0(%rbp)
movsd -0x3b8(%rbp), %xmm0
movsd -0x3b0(%rbp), %xmm1
movl $0x1, %ecx
leaq 0x27a20(%rip), %r8      # 0x58548
movq %rcx, %rsi
callq 0x41600
jmp 0x30b32
movq -0x80(%rbp), %rax
addq $-0x1, %rax
movq %rax, -0x80(%rbp)
jmp 0x30866
movq 0x10(%rbp), %rdi
callq 0x3b030
movb -0xe1(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0x30b74
movb $0x0, -0xe1(%rbp)
movq 0x10(%rbp), %rdi
callq 0x3b030
movb -0xe1(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x490, %rsp            # imm = 0x490
popq %rbp
retq
nopw %cs:(%rax,%rax)