; ***** BEGIN LICENSE BLOCK *****
; Version: MPL 1.1/GPL 2.0/LGPL 2.1
; 
; The contents of this file are subject to the Mozilla Public License Version
; 1.1 (the "License"); you may not use this file except in compliance with
; the License. You may obtain a copy of the License at
; http://www.mozilla.org/MPL/
; 
; Software distributed under the License is distributed on an "AS IS" basis,
; WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
; for the specific language governing rights and limitations under the
; License.
; 
; The Original Code is TomsFastMath, a fast ISO C bignum library.
; 
; The Initial Developer of the Original Code is
; Tom St Denis, tomstdenis@iahu.ca .
; Portions created by the Initial Developer are Copyright (C) 2005
; the Initial Developer. All Rights Reserved.
; 
; Contributor(s):
;   Sun Microsystems, Inc.
;   Makoto Kato <m_kato@ga2.so-net.ne.jp>
; 
; Alternatively, the contents of this file may be used under the terms of
; either the GNU General Public License Version 2 or later (the "GPL"), or
; the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
; in which case the provisions of the GPL or the LGPL are applicable instead
; of those above. If you wish to allow use of your version of this file only
; under the terms of either the GPL or the LGPL, and not to allow others to
; use your version of this file under the terms of the MPL, indicate your
; decision by deleting the provisions above and replace them with the notice
; and other provisions required by the GPL or the LGPL. If you do not delete
; the provisions above, a recipient may use your version of this file under
; the terms of any one of the MPL, the GPL or the LGPL.
; 
; ***** END LICENSE BLOCK ***** */

;/* TomsFastMath, a fast ISO C bignum library.
; * 
; * This project is meant to fill in where LibTomMath
; * falls short.  That is speed ;-)
; *
; * This project is public domain and free for all purposes.
; * 
; * Tom St Denis, tomstdenis@iahu.ca
; */

;/*
; * The source file from which this assembly was derived
; * comes from TFM v0.03, which has the above license.
; * This source was from mp_comba_amd64.sun.s and convert to
; * MASM code set.
; */

.CODE

externdef memcpy:PROC

public s_mp_mul_comba_4
public s_mp_mul_comba_8
public s_mp_mul_comba_16
public s_mp_mul_comba_32
public s_mp_sqr_comba_8
public s_mp_sqr_comba_16
public s_mp_sqr_comba_32


; void s_mp_mul_comba_4(const mp_int *A, const mp_int *B, mp_int *C)

        ALIGN 16
s_mp_mul_comba_4 PROC

        push rdi
        push rsi

        mov rdi, rcx
        mov rsi, rdx
        mov rdx, r8

        push r12
        push rbp
        push rbx
        sub rsp, 64
        mov r9, qword ptr [16+rdi]
        mov rbx, rdx
        mov rdx, qword ptr [16+rsi]
        mov rax, qword ptr [r9]
        mov qword ptr [-64+64+rsp], rax
        mov r8, qword ptr [8+r9]
        mov qword ptr [-56+64+rsp], r8
        mov rbp, qword ptr [16+r9]
        mov qword ptr [-48+64+rsp], rbp
        mov r12, qword ptr [24+r9]
        mov qword ptr [-40+64+rsp], r12
        mov rcx, qword ptr [rdx]
        mov qword ptr [-32+64+rsp], rcx
        mov r10, qword ptr [8+rdx]
        mov qword ptr [-24+64+rsp], r10
        mov r11, qword ptr [16+rdx]
        xor r10d, r10d
        mov r8, r10
        mov r9, r10
        mov rbp, r10
        mov qword ptr [-16+64+rsp], r11
        mov r11, qword ptr [16+rbx]
        mov rax, qword ptr [24+rdx]
        mov qword ptr [-8+64+rsp], rax
        mov rax, qword ptr [-64+64+rsp]
        mul qword ptr [-32+64+rsp]
        add r8, rax
        adc r9, rdx
        adc rbp, 0
        mov qword ptr [r11], r8
        mov r8, rbp
        mov rbp, r10
        mov rax, qword ptr [-64+64+rsp]
        mul qword ptr [-24+64+rsp]
        add r9, rax
        adc r8, rdx
        adc rbp, 0
        mov r12, rbp
        mov rax, qword ptr [-56+64+rsp]
        mul qword ptr [-32+64+rsp]
        add r9, rax
        adc r8, rdx
        adc r12, 0
        mov qword ptr [8+r11], r9
        mov r9, r12
        mov r12, r10
        mov rax, qword ptr [-64+64+rsp]
        mul qword ptr [-16+64+rsp]
        add r8, rax
        adc r9, rdx
        adc r12, 0
        mov rcx, r12
        mov rax, qword ptr [-56+64+rsp]
        mul qword ptr [-24+64+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rbp, r9
        mov r12, rcx
        mov rax, qword ptr [-48+64+rsp]
        mul qword ptr [-32+64+rsp]
        add r8, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [16+r11], r8
        mov r9, r12
        mov rcx, rbp
        mov r8, r10
        mov rax, qword ptr [-64+64+rsp]
        mul qword ptr [-8+64+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-56+64+rsp]
        mul qword ptr [-16+64+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-48+64+rsp]
        mul qword ptr [-24+64+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rbp, r9
        mov r12, r8
        mov rax, qword ptr [-40+64+rsp]
        mul qword ptr [-32+64+rsp]
        add rcx, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [24+r11], rcx
        mov r9, r12
        mov r8, rbp
        mov rcx, r10
        mov rax, qword ptr [-56+64+rsp]
        mul qword ptr [-8+64+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-48+64+rsp]
        mul qword ptr [-16+64+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rbp, r9
        mov r12, rcx
        mov rax, qword ptr [-40+64+rsp]
        mul qword ptr [-24+64+rsp]
        add r8, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [32+r11], r8
        mov r9, r12
        mov rcx, rbp
        mov r8, r10
        mov rax, qword ptr [-48+64+rsp]
        mul qword ptr [-8+64+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov r12, r8
        mov rbp, r9
        mov rax, qword ptr [-40+64+rsp]
        mul qword ptr [-16+64+rsp]
        add rcx, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [40+r11], rcx
        mov r8, rbp
        mov rcx, r12
        mov rax, qword ptr [-40+64+rsp]
        mul qword ptr [-8+64+rsp]
        add r8, rax
        adc rcx, rdx
        adc r10, 0
        mov qword ptr [48+r11], r8
        mov esi, dword ptr [rsi]
        xor esi, dword ptr [rdi]
        test rcx, rcx
        mov qword ptr [56+r11], rcx
        mov dword ptr [8+rbx], 8
        jne L9
        ALIGN 16
L18:
        mov edx, dword ptr [8+rbx]
        lea edi, dword ptr [-1+rdx]
        test edi, edi
        mov dword ptr [8+rbx], edi
        je L9
        lea r10d, dword ptr [-2+rdx]
        cmp dword ptr [r11+r10*8], 0
        je L18
L9:
        mov edx, dword ptr [8+rbx]
        xor r11d, r11d
        test edx, edx
        cmovne r11d, esi
        mov dword ptr [rbx], r11d
        add rsp, 64
        pop rbx
        pop rbp
        pop r12

        pop rsi
        pop rdi

        ret

s_mp_mul_comba_4 ENDP


; void s_mp_mul_comba_8(const mp_int *A, const mp_int *B, mp_int *C)

        ALIGN 16
s_mp_mul_comba_8 PROC

        push rdi
        push rsi

        mov rdi, rcx
        mov rsi, rdx
        mov rdx, r8

        push r12
        push rbp
        push rbx
        mov rbx, rdx
        sub rsp, 8+128
        mov rdx, qword ptr [16+rdi]
        mov r8, qword ptr [rdx]
        mov qword ptr [-120+128+rsp], r8
        mov rbp, qword ptr [8+rdx]
        mov qword ptr [-112+128+rsp], rbp
        mov r9, qword ptr [16+rdx]
        mov qword ptr [-104+128+rsp], r9
        mov r12, qword ptr [24+rdx]
        mov qword ptr [-96+128+rsp], r12
        mov rcx, qword ptr [32+rdx]
        mov qword ptr [-88+128+rsp], rcx
        mov r10, qword ptr [40+rdx]
        mov qword ptr [-80+128+rsp], r10
        mov r11, qword ptr [48+rdx]
        mov qword ptr [-72+128+rsp], r11
        mov rax, qword ptr [56+rdx]
        mov rdx, qword ptr [16+rsi]
        mov qword ptr [-64+128+rsp], rax
        mov r8, qword ptr [rdx]
        mov qword ptr [-56+128+rsp], r8
        mov rbp, qword ptr [8+rdx]
        mov qword ptr [-48+128+rsp], rbp
        mov r9, qword ptr [16+rdx]
        mov qword ptr [-40+128+rsp], r9
        mov r12, qword ptr [24+rdx]
        mov qword ptr [-32+128+rsp], r12
        mov rcx, qword ptr [32+rdx]
        mov qword ptr [-24+128+rsp], rcx
        mov r10, qword ptr [40+rdx]
        mov qword ptr [-16+128+rsp], r10
        mov r11, qword ptr [48+rdx]
        xor r10d, r10d
        mov r8, r10
        mov r9, r10
        mov rbp, r10
        mov qword ptr [-8+128+rsp], r11
        mov r11, qword ptr [16+rbx]
        mov rax, qword ptr [56+rdx]
        mov qword ptr [128+rsp], rax
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [-56+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rbp, 0
        mov qword ptr [r11], r8
        mov r8, rbp
        mov rbp, r10
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [-48+128+rsp]
        add r9, rax
        adc r8, rdx
        adc rbp, 0
        mov r12, rbp
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [-56+128+rsp]
        add r9, rax
        adc r8, rdx
        adc r12, 0
        mov qword ptr [8+r11], r9
        mov r9, r12
        mov r12, r10
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [-40+128+rsp]
        add r8, rax
        adc r9, rdx
        adc r12, 0
        mov rcx, r12
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [-48+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rbp, r9
        mov r12, rcx
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [-56+128+rsp]
        add r8, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [16+r11], r8
        mov r9, r12
        mov rcx, rbp
        mov r8, r10
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [-32+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [-40+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [-48+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rbp, r9
        mov r12, r8
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [-56+128+rsp]
        add rcx, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [24+r11], rcx
        mov r9, r12
        mov r8, rbp
        mov rcx, r10
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [-24+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [-32+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [-40+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [-48+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rbp, r9
        mov r12, rcx
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [-56+128+rsp]
        add r8, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [32+r11], r8
        mov r9, r12
        mov rcx, rbp
        mov r8, r10
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [-16+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [-24+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [-32+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [-40+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [-48+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rbp, r9
        mov r12, r8
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [-56+128+rsp]
        add rcx, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [40+r11], rcx
        mov r9, r12
        mov r8, rbp
        mov rcx, r10
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [-8+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [-16+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [-24+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [-32+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [-40+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [-48+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rbp, r9
        mov r12, rcx
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [-56+128+rsp]
        add r8, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [48+r11], r8
        mov r9, r12
        mov rcx, rbp
        mov r8, r10
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [-8+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [-16+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [-24+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [-32+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [-40+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [-48+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rbp, r9
        mov r12, r8
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [-56+128+rsp]
        add rcx, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [56+r11], rcx
        mov r9, r12
        mov r8, rbp
        mov rcx, r10
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [-8+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [-16+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [-24+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [-32+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [-40+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rbp, r9
        mov r12, rcx
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [-48+128+rsp]
        add r8, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [64+r11], r8
        mov r9, r12
        mov rcx, rbp
        mov r8, r10
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [-8+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [-16+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [-24+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [-32+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rbp, r9
        mov r12, r8
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [-40+128+rsp]
        add rcx, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [72+r11], rcx
        mov r9, r12
        mov r8, rbp
        mov rcx, r10
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [-8+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [-16+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [-24+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rbp, r9
        mov r12, rcx
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [-32+128+rsp]
        add r8, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [80+r11], r8
        mov r9, r12
        mov rcx, rbp
        mov r8, r10
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [-8+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [-16+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rbp, r9
        mov r12, r8
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [-24+128+rsp]
        add rcx, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [88+r11], rcx
        mov r9, r12
        mov r8, rbp
        mov rcx, r10
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [-8+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rbp, r9
        mov r12, rcx
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [-16+128+rsp]
        add r8, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [96+r11], r8
        mov r9, r12
        mov rcx, rbp
        mov r8, r10
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov r12, r8
        mov rbp, r9
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [-8+128+rsp]
        add rcx, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [104+r11], rcx
        mov r8, rbp
        mov rcx, r12
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [128+rsp]
        add r8, rax
        adc rcx, rdx
        adc r10, 0
        mov qword ptr [112+r11], r8
        mov esi, dword ptr [rsi]
        xor esi, dword ptr [rdi]
        test rcx, rcx
        mov qword ptr [120+r11], rcx
        mov dword ptr [8+rbx], 16
        jne L35
        ALIGN 16
L43:
        mov edx, dword ptr [8+rbx]
        lea edi, dword ptr [-1+rdx]
        test edi, edi
        mov dword ptr [8+rbx], edi
        je L35
        lea eax, dword ptr [-2+rdx]
        cmp dword ptr [r11+rax*8], 0
        je L43
L35:
        mov r11d, dword ptr [8+rbx]
        xor edx, edx
        test r11d, r11d
        cmovne edx, esi
        mov dword ptr [rbx], edx
        add rsp, 8+128
        pop rbx
        pop rbp
        pop r12

        pop rsi
        pop rdi

        ret

s_mp_mul_comba_8 ENDP


; void s_mp_mul_comba_16(const mp_int *A, const mp_int *B, mp_int *C);

        ALIGN 16
s_mp_mul_comba_16 PROC

        push rdi
        push rsi

        mov rdi, rcx
        mov rsi, rdx
        mov rdx, r8

        push r12
        push rbp
        push rbx
        mov rbx, rdx
        sub rsp, 136+128
        mov rax, qword ptr [16+rdi]
        mov r8, qword ptr [rax]
        mov qword ptr [-120+128+rsp], r8
        mov rbp, qword ptr [8+rax]
        mov qword ptr [-112+128+rsp], rbp
        mov r9, qword ptr [16+rax]
        mov qword ptr [-104+128+rsp], r9
        mov r12, qword ptr [24+rax]
        mov qword ptr [-96+128+rsp], r12
        mov rcx, qword ptr [32+rax]
        mov qword ptr [-88+128+rsp], rcx
        mov r10, qword ptr [40+rax]
        mov qword ptr [-80+128+rsp], r10
        mov rdx, qword ptr [48+rax]
        mov qword ptr [-72+128+rsp], rdx
        mov r11, qword ptr [56+rax]
        mov qword ptr [-64+128+rsp], r11
        mov r8, qword ptr [64+rax]
        mov qword ptr [-56+128+rsp], r8
        mov rbp, qword ptr [72+rax]
        mov qword ptr [-48+128+rsp], rbp
        mov r9, qword ptr [80+rax]
        mov qword ptr [-40+128+rsp], r9
        mov r12, qword ptr [88+rax]
        mov qword ptr [-32+128+rsp], r12
        mov rcx, qword ptr [96+rax]
        mov qword ptr [-24+128+rsp], rcx
        mov r10, qword ptr [104+rax]
        mov qword ptr [-16+128+rsp], r10
        mov rdx, qword ptr [112+rax]
        mov qword ptr [-8+128+rsp], rdx
        mov r11, qword ptr [120+rax]
        mov qword ptr [128+rsp], r11
        mov r11, qword ptr [16+rsi]
        mov r8, qword ptr [r11]
        mov qword ptr [8+128+rsp], r8
        mov rbp, qword ptr [8+r11]
        mov qword ptr [16+128+rsp], rbp
        mov r9, qword ptr [16+r11]
        mov qword ptr [24+128+rsp], r9
        mov r12, qword ptr [24+r11]
        mov qword ptr [32+128+rsp], r12
        mov rcx, qword ptr [32+r11]
        mov qword ptr [40+128+rsp], rcx
        mov r10, qword ptr [40+r11]
        mov qword ptr [48+128+rsp], r10
        mov rdx, qword ptr [48+r11]
        mov qword ptr [56+128+rsp], rdx
        mov rax, qword ptr [56+r11]
        mov qword ptr [64+128+rsp], rax
        mov r8, qword ptr [64+r11]
        mov qword ptr [72+128+rsp], r8
        mov rbp, qword ptr [72+r11]
        mov qword ptr [80+128+rsp], rbp
        mov r9, qword ptr [80+r11]
        mov qword ptr [88+128+rsp], r9
        mov r12, qword ptr [88+r11]
        mov qword ptr [96+128+rsp], r12
        mov rcx, qword ptr [96+r11]
        mov qword ptr [104+128+rsp], rcx
        mov r10, qword ptr [104+r11]
        mov qword ptr [112+128+rsp], r10
        mov rdx, qword ptr [112+r11]
        xor r10d, r10d
        mov r8, r10
        mov r9, r10
        mov rbp, r10
        mov qword ptr [120+128+rsp], rdx
        mov rax, qword ptr [120+r11]
        mov qword ptr [128+128+rsp], rax
        mov r11, qword ptr [16+rbx]
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [8+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rbp, 0
        mov qword ptr [r11], r8
        mov r8, rbp
        mov rbp, r10
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [16+128+rsp]
        add r9, rax
        adc r8, rdx
        adc rbp, 0
        mov r12, rbp
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [8+128+rsp]
        add r9, rax
        adc r8, rdx
        adc r12, 0
        mov qword ptr [8+r11], r9
        mov r9, r12
        mov r12, r10
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [24+128+rsp]
        add r8, rax
        adc r9, rdx
        adc r12, 0
        mov rcx, r12
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [16+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rbp, r9
        mov r12, rcx
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [8+128+rsp]
        add r8, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [16+r11], r8
        mov r9, r12
        mov rcx, rbp
        mov r8, r10
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [32+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [24+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [16+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rbp, r9
        mov r12, r8
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [8+128+rsp]
        add rcx, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [24+r11], rcx
        mov r9, r12
        mov r8, rbp
        mov rcx, r10
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [40+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [32+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [24+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [16+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rbp, r9
        mov r12, rcx
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [8+128+rsp]
        add r8, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [32+r11], r8
        mov r9, r12
        mov rcx, rbp
        mov r8, r10
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [48+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [40+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [32+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [24+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [16+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rbp, r9
        mov r12, r8
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [8+128+rsp]
        add rcx, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [40+r11], rcx
        mov r9, r12
        mov r8, rbp
        mov rcx, r10
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [56+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [48+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [40+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [32+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [24+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [16+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rbp, r9
        mov r12, rcx
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [8+128+rsp]
        add r8, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [48+r11], r8
        mov r9, r12
        mov rcx, rbp
        mov r8, r10
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [64+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [56+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [48+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [40+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [32+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [24+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [16+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rbp, r9
        mov r12, r8
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [8+128+rsp]
        add rcx, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [56+r11], rcx
        mov r9, r12
        mov r8, rbp
        mov rcx, r10
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [72+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [64+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [56+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [48+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [40+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [32+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [24+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [16+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rbp, r9
        mov r12, rcx
        mov rax, qword ptr [-56+128+rsp]
        mul qword ptr [8+128+rsp]
        add r8, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [64+r11], r8
        mov r9, r12
        mov rcx, rbp
        mov r8, r10
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [80+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [72+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [64+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [56+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [48+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [40+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [32+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [24+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-56+128+rsp]
        mul qword ptr [16+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rbp, r9
        mov r12, r8
        mov rax, qword ptr [-48+128+rsp]
        mul qword ptr [8+128+rsp]
        add rcx, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [72+r11], rcx
        mov r9, r12
        mov r8, rbp
        mov rcx, r10
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [88+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [80+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [72+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [64+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [56+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [48+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [40+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [32+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-56+128+rsp]
        mul qword ptr [24+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-48+128+rsp]
        mul qword ptr [16+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rbp, r9
        mov r12, rcx
        mov rax, qword ptr [-40+128+rsp]
        mul qword ptr [8+128+rsp]
        add r8, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [80+r11], r8
        mov r9, r12
        mov rcx, rbp
        mov r8, r10
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [96+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [88+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [80+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [72+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [64+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [56+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [48+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [40+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-56+128+rsp]
        mul qword ptr [32+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-48+128+rsp]
        mul qword ptr [24+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-40+128+rsp]
        mul qword ptr [16+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rbp, r9
        mov r12, r8
        mov rax, qword ptr [-32+128+rsp]
        mul qword ptr [8+128+rsp]
        add rcx, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [88+r11], rcx
        mov r9, r12
        mov r8, rbp
        mov rcx, r10
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [104+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [96+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [88+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [80+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [72+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [64+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [56+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [48+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-56+128+rsp]
        mul qword ptr [40+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-48+128+rsp]
        mul qword ptr [32+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-40+128+rsp]
        mul qword ptr [24+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-32+128+rsp]
        mul qword ptr [16+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rbp, r9
        mov r12, rcx
        mov rax, qword ptr [-24+128+rsp]
        mul qword ptr [8+128+rsp]
        add r8, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [96+r11], r8
        mov r9, r12
        mov rcx, rbp
        mov r8, r10
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [112+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [104+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [96+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [88+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [80+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [72+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [64+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [56+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-56+128+rsp]
        mul qword ptr [48+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-48+128+rsp]
        mul qword ptr [40+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-40+128+rsp]
        mul qword ptr [32+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-32+128+rsp]
        mul qword ptr [24+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-24+128+rsp]
        mul qword ptr [16+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rbp, r9
        mov r12, r8
        mov rax, qword ptr [-16+128+rsp]
        mul qword ptr [8+128+rsp]
        add rcx, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [104+r11], rcx
        mov r9, r12
        mov r8, rbp
        mov rcx, r10
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [120+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [112+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [104+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [96+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [88+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [80+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [72+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [64+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-56+128+rsp]
        mul qword ptr [56+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-48+128+rsp]
        mul qword ptr [48+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-40+128+rsp]
        mul qword ptr [40+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-32+128+rsp]
        mul qword ptr [32+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-24+128+rsp]
        mul qword ptr [24+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-16+128+rsp]
        mul qword ptr [16+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rbp, r9
        mov r12, rcx
        mov rax, qword ptr [-8+128+rsp]
        mul qword ptr [8+128+rsp]
        add r8, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [112+r11], r8
        mov r9, r12
        mov rcx, rbp
        mov r8, r10
        mov rax, qword ptr [-120+128+rsp]
        mul qword ptr [128+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [120+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [112+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [104+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [96+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [88+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [80+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [72+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-56+128+rsp]
        mul qword ptr [64+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-48+128+rsp]
        mul qword ptr [56+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-40+128+rsp]
        mul qword ptr [48+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-32+128+rsp]
        mul qword ptr [40+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-24+128+rsp]
        mul qword ptr [32+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-16+128+rsp]
        mul qword ptr [24+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-8+128+rsp]
        mul qword ptr [16+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rbp, r9
        mov r12, r8
        mov rax, qword ptr [128+rsp]
        mul qword ptr [8+128+rsp]
        add rcx, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [120+r11], rcx
        mov r9, r12
        mov r8, rbp
        mov rcx, r10
        mov rax, qword ptr [-112+128+rsp]
        mul qword ptr [128+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [120+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [112+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [104+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [96+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [88+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [80+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-56+128+rsp]
        mul qword ptr [72+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-48+128+rsp]
        mul qword ptr [64+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-40+128+rsp]
        mul qword ptr [56+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-32+128+rsp]
        mul qword ptr [48+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-24+128+rsp]
        mul qword ptr [40+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-16+128+rsp]
        mul qword ptr [32+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-8+128+rsp]
        mul qword ptr [24+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rbp, r9
        mov r12, rcx
        mov rax, qword ptr [128+rsp]
        mul qword ptr [16+128+rsp]
        add r8, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [128+r11], r8
        mov r9, r12
        mov rcx, rbp
        mov r8, r10
        mov rax, qword ptr [-104+128+rsp]
        mul qword ptr [128+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [120+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [112+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [104+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [96+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [88+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-56+128+rsp]
        mul qword ptr [80+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-48+128+rsp]
        mul qword ptr [72+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-40+128+rsp]
        mul qword ptr [64+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-32+128+rsp]
        mul qword ptr [56+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-24+128+rsp]
        mul qword ptr [48+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-16+128+rsp]
        mul qword ptr [40+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-8+128+rsp]
        mul qword ptr [32+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rbp, r9
        mov r12, r8
        mov rax, qword ptr [128+rsp]
        mul qword ptr [24+128+rsp]
        add rcx, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [136+r11], rcx
        mov r9, r12
        mov r8, rbp
        mov rcx, r10
        mov rax, qword ptr [-96+128+rsp]
        mul qword ptr [128+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [120+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [112+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [104+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [96+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-56+128+rsp]
        mul qword ptr [88+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-48+128+rsp]
        mul qword ptr [80+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-40+128+rsp]
        mul qword ptr [72+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-32+128+rsp]
        mul qword ptr [64+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-24+128+rsp]
        mul qword ptr [56+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-16+128+rsp]
        mul qword ptr [48+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-8+128+rsp]
        mul qword ptr [40+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rbp, r9
        mov r12, rcx
        mov rax, qword ptr [128+rsp]
        mul qword ptr [32+128+rsp]
        add r8, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [144+r11], r8
        mov r9, r12
        mov rcx, rbp
        mov r8, r10
        mov rax, qword ptr [-88+128+rsp]
        mul qword ptr [128+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [120+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [112+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [104+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-56+128+rsp]
        mul qword ptr [96+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-48+128+rsp]
        mul qword ptr [88+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-40+128+rsp]
        mul qword ptr [80+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-32+128+rsp]
        mul qword ptr [72+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-24+128+rsp]
        mul qword ptr [64+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-16+128+rsp]
        mul qword ptr [56+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-8+128+rsp]
        mul qword ptr [48+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rbp, r9
        mov r12, r8
        mov rax, qword ptr [128+rsp]
        mul qword ptr [40+128+rsp]
        add rcx, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [152+r11], rcx
        mov r9, r12
        mov r8, rbp
        mov rcx, r10
        mov rax, qword ptr [-80+128+rsp]
        mul qword ptr [128+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [120+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [112+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-56+128+rsp]
        mul qword ptr [104+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-48+128+rsp]
        mul qword ptr [96+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-40+128+rsp]
        mul qword ptr [88+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-32+128+rsp]
        mul qword ptr [80+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-24+128+rsp]
        mul qword ptr [72+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-16+128+rsp]
        mul qword ptr [64+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-8+128+rsp]
        mul qword ptr [56+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rbp, r9
        mov r12, rcx
        mov rax, qword ptr [128+rsp]
        mul qword ptr [48+128+rsp]
        add r8, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [160+r11], r8
        mov r9, r12
        mov rcx, rbp
        mov r8, r10
        mov rax, qword ptr [-72+128+rsp]
        mul qword ptr [128+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [120+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-56+128+rsp]
        mul qword ptr [112+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-48+128+rsp]
        mul qword ptr [104+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-40+128+rsp]
        mul qword ptr [96+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-32+128+rsp]
        mul qword ptr [88+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-24+128+rsp]
        mul qword ptr [80+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-16+128+rsp]
        mul qword ptr [72+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-8+128+rsp]
        mul qword ptr [64+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rbp, r9
        mov r12, r8
        mov rax, qword ptr [128+rsp]
        mul qword ptr [56+128+rsp]
        add rcx, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [168+r11], rcx
        mov r9, r12
        mov r8, rbp
        mov rcx, r10
        mov rax, qword ptr [-64+128+rsp]
        mul qword ptr [128+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-56+128+rsp]
        mul qword ptr [120+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-48+128+rsp]
        mul qword ptr [112+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-40+128+rsp]
        mul qword ptr [104+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-32+128+rsp]
        mul qword ptr [96+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-24+128+rsp]
        mul qword ptr [88+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-16+128+rsp]
        mul qword ptr [80+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-8+128+rsp]
        mul qword ptr [72+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rbp, r9
        mov r12, rcx
        mov rax, qword ptr [128+rsp]
        mul qword ptr [64+128+rsp]
        add r8, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [176+r11], r8
        mov r9, r12
        mov rcx, rbp
        mov r8, r10
        mov rax, qword ptr [-56+128+rsp]
        mul qword ptr [128+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-48+128+rsp]
        mul qword ptr [120+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-40+128+rsp]
        mul qword ptr [112+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-32+128+rsp]
        mul qword ptr [104+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-24+128+rsp]
        mul qword ptr [96+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-16+128+rsp]
        mul qword ptr [88+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-8+128+rsp]
        mul qword ptr [80+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rbp, r9
        mov r12, r8
        mov rax, qword ptr [128+rsp]
        mul qword ptr [72+128+rsp]
        add rcx, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [184+r11], rcx
        mov r9, r12
        mov r8, rbp
        mov rcx, r10
        mov rax, qword ptr [-48+128+rsp]
        mul qword ptr [128+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-40+128+rsp]
        mul qword ptr [120+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-32+128+rsp]
        mul qword ptr [112+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-24+128+rsp]
        mul qword ptr [104+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-16+128+rsp]
        mul qword ptr [96+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-8+128+rsp]
        mul qword ptr [88+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rbp, r9
        mov r12, rcx
        mov rax, qword ptr [128+rsp]
        mul qword ptr [80+128+rsp]
        add r8, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [192+r11], r8
        mov r9, r12
        mov rcx, rbp
        mov r8, r10
        mov rax, qword ptr [-40+128+rsp]
        mul qword ptr [128+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-32+128+rsp]
        mul qword ptr [120+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-24+128+rsp]
        mul qword ptr [112+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-16+128+rsp]
        mul qword ptr [104+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-8+128+rsp]
        mul qword ptr [96+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rbp, r9
        mov r12, r8
        mov rax, qword ptr [128+rsp]
        mul qword ptr [88+128+rsp]
        add rcx, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [200+r11], rcx
        mov r9, r12
        mov r8, rbp
        mov rcx, r10
        mov rax, qword ptr [-32+128+rsp]
        mul qword ptr [128+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-24+128+rsp]
        mul qword ptr [120+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-16+128+rsp]
        mul qword ptr [112+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-8+128+rsp]
        mul qword ptr [104+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rbp, r9
        mov r12, rcx
        mov rax, qword ptr [128+rsp]
        mul qword ptr [96+128+rsp]
        add r8, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [208+r11], r8
        mov r9, r12
        mov rcx, rbp
        mov r8, r10
        mov rax, qword ptr [-24+128+rsp]
        mul qword ptr [128+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-16+128+rsp]
        mul qword ptr [120+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rax, qword ptr [-8+128+rsp]
        mul qword ptr [112+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov rbp, r9
        mov r12, r8
        mov rax, qword ptr [128+rsp]
        mul qword ptr [104+128+rsp]
        add rcx, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [216+r11], rcx
        mov r9, r12
        mov r8, rbp
        mov rcx, r10
        mov rax, qword ptr [-16+128+rsp]
        mul qword ptr [128+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rax, qword ptr [-8+128+rsp]
        mul qword ptr [120+128+rsp]
        add r8, rax
        adc r9, rdx
        adc rcx, 0
        mov rbp, r9
        mov r12, rcx
        mov rax, qword ptr [128+rsp]
        mul qword ptr [112+128+rsp]
        add r8, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [224+r11], r8
        mov r9, r12
        mov rcx, rbp
        mov r8, r10
        mov rax, qword ptr [-8+128+rsp]
        mul qword ptr [128+128+rsp]
        add rcx, rax
        adc r9, rdx
        adc r8, 0
        mov r12, r8
        mov rbp, r9
        mov rax, qword ptr [128+rsp]
        mul qword ptr [120+128+rsp]
        add rcx, rax
        adc rbp, rdx
        adc r12, 0
        mov qword ptr [232+r11], rcx
        mov r8, rbp
        mov rcx, r12
        mov rax, qword ptr [128+rsp]
        mul qword ptr [128+128+rsp]
        add r8, rax
        adc rcx, rdx
        adc r10, 0
        mov qword ptr [240+r11], r8
        mov esi, dword ptr [rsi]
        xor esi, dword ptr [rdi]
        test rcx, rcx
        mov qword ptr [248+r11], rcx
        mov dword ptr [8+rbx], 32
        jne L76
        ALIGN 16
L84:
        mov edx, dword ptr [8+rbx]
        lea edi, dword ptr [-1+rdx]
        test edi, edi
        mov dword ptr [8+rbx], edi
        je L76
        lea eax, dword ptr [-2+rdx]
        cmp dword ptr [r11+rax*8], 0
        je L84
L76:
        mov edx, dword ptr [8+rbx]
        xor r11d, r11d
        test edx, edx
        cmovne r11d, esi
        mov dword ptr [rbx], r11d
        add rsp, 136+128
        pop rbx
        pop rbp
        pop r12

        pop rsi
        pop rdi

        ret

s_mp_mul_comba_16 ENDP

; void s_mp_mul_comba_32(const mp_int *A, const mp_int *B, mp_int *C)


        ALIGN 16
s_mp_mul_comba_32 PROC ; a "FRAME" function

        push rdi
        push rsi

        mov rdi, rcx
        mov rsi, rdx
        mov rdx, r8

        push rbp
        mov rbp, rsp
        push r13
        mov r13, rdx
;        mov edx, 256
        mov r8d, 256
        push r12
        mov r12, rsi
        push rbx
        mov rbx, rdi
        sub rsp, 520+32			; +32 for "home" storage
;        mov rsi, qword ptr [16+rdi]
;        lea rdi, qword ptr [-544+rbp]
        mov rdx, qword ptr [16+rdi]
        lea rcx, qword ptr [-544+rbp]
        call memcpy
;        mov rsi, qword ptr [16+r12]
;        lea rdi, qword ptr [-288+rbp]
;        mov edx, 256
        mov rdx, qword ptr [16+r12]
        lea rcx, qword ptr [-288+rbp]
        mov r8d, 256
        call memcpy
        mov r9, qword ptr [16+r13]
        xor r8d, r8d
        mov rsi, r8
        mov rdi, r8
        mov r10, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-288+rbp]
        add rsi, rax
        adc rdi, rdx
        adc r10, 0
        mov qword ptr [r9], rsi
        mov rsi, r10
        mov r10, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-280+rbp]
        add rdi, rax
        adc rsi, rdx
        adc r10, 0
        mov r11, r10
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-288+rbp]
        add rdi, rax
        adc rsi, rdx
        adc r11, 0
        mov qword ptr [8+r9], rdi
        mov rdi, r11
        mov r11, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-272+rbp]
        add rsi, rax
        adc rdi, rdx
        adc r11, 0
        mov rcx, r11
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-280+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-288+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [16+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-264+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-272+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-280+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-288+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [24+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-256+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-264+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-272+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-280+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-288+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [32+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-248+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-256+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-264+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-272+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-280+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-288+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [40+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-240+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-248+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-256+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-264+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-272+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-280+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-288+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [48+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-232+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-240+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-248+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-256+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-264+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-272+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-280+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-288+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [56+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-224+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-232+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-240+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-248+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-256+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-264+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-272+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-280+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-288+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [64+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-216+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-224+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-232+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-240+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-248+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-256+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-264+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-272+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-280+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-288+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [72+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-208+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-216+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-224+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-232+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-240+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-248+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-256+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-264+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-272+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-280+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-288+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [80+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-200+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-208+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-216+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-224+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-232+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-240+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-248+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-256+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-264+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-272+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-280+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-288+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [88+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-192+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-200+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-208+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-216+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-224+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-232+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-240+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-248+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-256+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-264+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-272+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-280+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-288+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [96+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-184+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-192+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-200+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-208+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-216+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-224+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-232+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-240+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-248+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-256+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-264+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-272+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-280+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-288+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [104+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-176+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-184+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-192+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-200+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-208+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-216+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-224+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-232+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-240+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-248+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-256+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-264+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-272+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-280+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-288+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [112+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-168+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-176+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-184+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-192+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-200+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-208+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-216+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-224+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-232+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-240+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-248+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-256+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-264+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-272+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-280+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-288+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [120+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-160+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-168+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-176+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-184+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-192+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-200+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-208+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-216+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-224+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-232+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-240+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-248+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-256+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-264+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-272+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-280+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-288+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [128+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-152+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-160+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-168+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-176+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-184+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-192+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-200+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-208+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-216+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-224+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-232+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-240+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-248+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-256+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-264+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-272+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-280+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-288+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [136+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-144+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-152+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-160+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-168+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-176+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-184+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-192+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-200+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-208+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-216+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-224+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-232+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-240+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-248+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-256+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-264+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-272+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-280+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-288+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [144+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-136+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-144+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-152+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-160+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-168+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-176+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-184+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-192+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-200+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-208+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-216+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-224+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-232+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-240+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-248+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-256+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-264+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-272+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-280+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-288+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [152+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-128+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-136+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-144+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-152+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-160+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-168+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-176+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-184+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-192+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-200+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-208+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-216+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-224+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-232+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-240+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-248+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-256+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-264+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-272+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-280+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-288+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [160+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-120+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-128+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-136+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-144+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-152+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-160+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-168+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-176+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-184+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-192+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-200+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-208+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-216+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-224+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-232+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-240+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-248+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-256+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-264+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-272+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-280+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-288+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [168+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-112+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-120+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-128+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-136+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-144+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-152+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-160+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-168+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-176+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-184+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-192+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-200+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-208+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-216+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-224+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-232+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-240+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-248+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-256+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-264+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-272+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-280+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-288+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [176+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-104+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-112+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-120+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-128+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-136+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-144+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-152+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-160+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-168+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-176+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-184+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-192+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-200+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-208+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-216+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-224+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-232+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-240+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-248+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-256+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-264+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-272+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-280+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-288+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [184+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-96+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-104+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-112+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-120+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-128+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-136+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-144+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-152+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-160+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-168+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-176+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-184+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-192+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-200+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-208+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-216+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-224+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-232+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-240+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-248+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-256+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-264+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-272+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-280+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-288+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [192+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-88+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-96+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-104+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-112+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-120+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-128+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-136+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-144+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-152+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-160+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-168+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-176+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-184+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-192+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-200+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-208+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-216+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-224+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-232+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-240+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-248+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-256+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-264+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-272+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-280+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-288+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [200+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-80+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-88+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-96+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-104+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-112+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-120+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-128+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-136+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-144+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-152+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-160+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-168+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-176+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-184+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-192+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-200+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-208+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-216+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-224+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-232+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-240+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-248+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-256+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-264+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-272+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-280+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-288+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [208+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-72+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-80+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-88+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-96+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-104+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-112+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-120+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-128+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-136+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-144+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-152+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-160+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-168+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-176+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-184+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-192+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-200+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-208+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-216+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-224+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-232+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-240+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-248+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-256+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-264+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-272+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-280+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-288+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [216+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-64+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-72+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-80+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-88+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-96+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-104+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-112+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-120+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-128+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-136+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-144+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-152+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-160+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-168+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-176+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-184+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-192+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-200+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-208+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-216+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-224+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-232+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-240+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-248+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-256+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-264+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-272+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-280+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-288+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [224+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-56+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-64+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-72+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-80+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-88+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-96+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-104+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-112+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-120+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-128+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-136+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-144+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-152+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-160+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-168+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-176+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-184+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-192+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-200+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-208+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-216+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-224+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-232+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-240+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-248+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-256+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-264+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-272+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-280+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-288+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [232+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-48+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-56+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-64+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-72+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-80+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-88+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-96+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-104+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-112+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-120+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-128+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-136+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-144+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-152+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-160+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-168+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-176+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-184+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-192+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-200+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-208+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-216+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-224+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-232+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-240+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-248+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-256+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-264+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-272+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-280+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-288+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [240+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-544+rbp]
        mul qword ptr [-40+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-48+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-56+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-64+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-72+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-80+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-88+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-96+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-104+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-112+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-120+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-128+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-136+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-144+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-152+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-160+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-168+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-176+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-184+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-192+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-200+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-208+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-216+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-224+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-232+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-240+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-248+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-256+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-264+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-272+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-280+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-288+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [248+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-536+rbp]
        mul qword ptr [-40+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-48+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-56+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-64+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-72+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-80+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-88+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-96+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-104+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-112+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-120+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-128+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-136+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-144+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-152+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-160+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-168+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-176+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-184+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-192+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-200+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-208+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-216+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-224+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-232+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-240+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-248+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-256+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-264+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-272+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-280+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [256+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-528+rbp]
        mul qword ptr [-40+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-48+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-56+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-64+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-72+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-80+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-88+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-96+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-104+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-112+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-120+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-128+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-136+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-144+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-152+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-160+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-168+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-176+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-184+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-192+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-200+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-208+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-216+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-224+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-232+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-240+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-248+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-256+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-264+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-272+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [264+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-520+rbp]
        mul qword ptr [-40+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-48+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-56+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-64+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-72+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-80+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-88+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-96+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-104+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-112+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-120+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-128+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-136+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-144+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-152+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-160+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-168+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-176+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-184+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-192+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-200+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-208+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-216+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-224+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-232+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-240+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-248+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-256+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-264+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [272+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-512+rbp]
        mul qword ptr [-40+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-48+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-56+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-64+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-72+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-80+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-88+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-96+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-104+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-112+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-120+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-128+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-136+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-144+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-152+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-160+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-168+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-176+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-184+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-192+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-200+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-208+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-216+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-224+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-232+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-240+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-248+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-256+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [280+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-504+rbp]
        mul qword ptr [-40+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-48+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-56+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-64+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-72+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-80+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-88+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-96+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-104+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-112+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-120+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-128+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-136+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-144+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-152+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-160+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-168+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-176+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-184+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-192+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-200+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-208+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-216+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-224+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-232+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-240+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-248+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [288+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-496+rbp]
        mul qword ptr [-40+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-48+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-56+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-64+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-72+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-80+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-88+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-96+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-104+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-112+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-120+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-128+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-136+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-144+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-152+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-160+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-168+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-176+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-184+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-192+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-200+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-208+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-216+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-224+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-232+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-240+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [296+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-488+rbp]
        mul qword ptr [-40+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-48+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-56+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-64+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-72+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-80+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-88+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-96+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-104+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-112+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-120+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-128+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-136+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-144+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-152+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-160+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-168+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-176+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-184+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-192+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-200+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-208+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-216+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-224+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-232+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [304+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-480+rbp]
        mul qword ptr [-40+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-48+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-56+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-64+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-72+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-80+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-88+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-96+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-104+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-112+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-120+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-128+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-136+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-144+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-152+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-160+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-168+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-176+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-184+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-192+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-200+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-208+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-216+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-224+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [312+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-472+rbp]
        mul qword ptr [-40+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-48+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-56+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-64+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-72+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-80+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-88+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-96+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-104+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-112+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-120+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-128+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-136+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-144+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-152+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-160+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-168+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-176+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-184+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-192+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-200+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-208+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-216+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [320+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-464+rbp]
        mul qword ptr [-40+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-48+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-56+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-64+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-72+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-80+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-88+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-96+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-104+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-112+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-120+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-128+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-136+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-144+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-152+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-160+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-168+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-176+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-184+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-192+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-200+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-208+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [328+r9], rcx
        mov rdi, r11
        mov r11, r10
        mov r10, r8
        mov rax, qword ptr [-456+rbp]
        mul qword ptr [-40+rbp]
        add r11, rax
        adc rdi, rdx
        adc r10, 0
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-48+rbp]
        add r11, rax
        adc rdi, rdx
        adc r10, 0
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-56+rbp]
        add r11, rax
        adc rdi, rdx
        adc r10, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-64+rbp]
        add r11, rax
        adc rdi, rdx
        adc r10, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-72+rbp]
        add r11, rax
        adc rdi, rdx
        adc r10, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-80+rbp]
        add r11, rax
        adc rdi, rdx
        adc r10, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-88+rbp]
        add r11, rax
        adc rdi, rdx
        adc r10, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-96+rbp]
        add r11, rax
        adc rdi, rdx
        adc r10, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-104+rbp]
        add r11, rax
        adc rdi, rdx
        adc r10, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-112+rbp]
        add r11, rax
        adc rdi, rdx
        adc r10, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-120+rbp]
        add r11, rax
        adc rdi, rdx
        adc r10, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-128+rbp]
        add r11, rax
        adc rdi, rdx
        adc r10, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-136+rbp]
        add r11, rax
        adc rdi, rdx
        adc r10, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-144+rbp]
        add r11, rax
        adc rdi, rdx
        adc r10, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-152+rbp]
        add r11, rax
        adc rdi, rdx
        adc r10, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-160+rbp]
        add r11, rax
        adc rdi, rdx
        adc r10, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-168+rbp]
        add r11, rax
        adc rdi, rdx
        adc r10, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-176+rbp]
        add r11, rax
        adc rdi, rdx
        adc r10, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-184+rbp]
        add r11, rax
        adc rdi, rdx
        adc r10, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-192+rbp]
        add r11, rax
        adc rdi, rdx
        adc r10, 0
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-200+rbp]
        add r11, rax
        adc rdi, rdx
        adc r10, 0
        mov qword ptr [336+r9], r11
        mov rsi, r10
        mov r10, r8
        mov rax, qword ptr [-448+rbp]
        mul qword ptr [-40+rbp]
        add rdi, rax
        adc rsi, rdx
        adc r10, 0
        mov rcx, r10
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-48+rbp]
        add rdi, rax
        adc rsi, rdx
        adc rcx, 0
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-56+rbp]
        add rdi, rax
        adc rsi, rdx
        adc rcx, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-64+rbp]
        add rdi, rax
        adc rsi, rdx
        adc rcx, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-72+rbp]
        add rdi, rax
        adc rsi, rdx
        adc rcx, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-80+rbp]
        add rdi, rax
        adc rsi, rdx
        adc rcx, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-88+rbp]
        add rdi, rax
        adc rsi, rdx
        adc rcx, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-96+rbp]
        add rdi, rax
        adc rsi, rdx
        adc rcx, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-104+rbp]
        add rdi, rax
        adc rsi, rdx
        adc rcx, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-112+rbp]
        add rdi, rax
        adc rsi, rdx
        adc rcx, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-120+rbp]
        add rdi, rax
        adc rsi, rdx
        adc rcx, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-128+rbp]
        add rdi, rax
        adc rsi, rdx
        adc rcx, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-136+rbp]
        add rdi, rax
        adc rsi, rdx
        adc rcx, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-144+rbp]
        add rdi, rax
        adc rsi, rdx
        adc rcx, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-152+rbp]
        add rdi, rax
        adc rsi, rdx
        adc rcx, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-160+rbp]
        add rdi, rax
        adc rsi, rdx
        adc rcx, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-168+rbp]
        add rdi, rax
        adc rsi, rdx
        adc rcx, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-176+rbp]
        add rdi, rax
        adc rsi, rdx
        adc rcx, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-184+rbp]
        add rdi, rax
        adc rsi, rdx
        adc rcx, 0
        mov r11, rsi
        mov r10, rcx
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-192+rbp]
        add rdi, rax
        adc r11, rdx
        adc r10, 0
        mov qword ptr [344+r9], rdi
        mov rcx, r11
        mov rdi, r10
        mov r11, r8
        mov rax, qword ptr [-440+rbp]
        mul qword ptr [-40+rbp]
        add rcx, rax
        adc rdi, rdx
        adc r11, 0
        mov rsi, r11
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-48+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-56+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-64+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-72+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-80+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-88+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-96+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-104+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-112+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-120+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-128+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-136+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-144+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-152+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-160+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-168+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-176+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-184+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [352+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-432+rbp]
        mul qword ptr [-40+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-48+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-56+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-64+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-72+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-80+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-88+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-96+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-104+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-112+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-120+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-128+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-136+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-144+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-152+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-160+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-168+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-176+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [360+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-424+rbp]
        mul qword ptr [-40+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-48+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-56+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-64+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-72+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-80+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-88+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-96+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-104+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-112+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-120+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-128+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-136+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-144+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-152+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-160+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-168+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [368+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-416+rbp]
        mul qword ptr [-40+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-48+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-56+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-64+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-72+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-80+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-88+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-96+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-104+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-112+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-120+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-128+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-136+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-144+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-152+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-160+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [376+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-408+rbp]
        mul qword ptr [-40+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-48+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-56+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-64+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-72+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-80+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-88+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-96+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-104+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-112+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-120+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-128+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-136+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-144+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-152+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [384+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-400+rbp]
        mul qword ptr [-40+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-48+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-56+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-64+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-72+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-80+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-88+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-96+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-104+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-112+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-120+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-128+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-136+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-144+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [392+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-392+rbp]
        mul qword ptr [-40+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-48+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-56+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-64+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-72+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-80+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-88+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-96+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-104+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-112+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-120+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-128+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-136+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [400+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-384+rbp]
        mul qword ptr [-40+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-48+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-56+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-64+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-72+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-80+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-88+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-96+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-104+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-112+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-120+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-128+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [408+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-376+rbp]
        mul qword ptr [-40+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-48+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-56+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-64+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-72+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-80+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-88+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-96+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-104+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-112+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-120+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [416+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-368+rbp]
        mul qword ptr [-40+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-48+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-56+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-64+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-72+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-80+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-88+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-96+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-104+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-112+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [424+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-360+rbp]
        mul qword ptr [-40+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-48+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-56+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-64+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-72+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-80+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-88+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-96+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-104+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [432+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-352+rbp]
        mul qword ptr [-40+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-48+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-56+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-64+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-72+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-80+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-88+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-96+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [440+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-344+rbp]
        mul qword ptr [-40+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-48+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-56+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-64+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-72+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-80+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-88+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [448+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-336+rbp]
        mul qword ptr [-40+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-48+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-56+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-64+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-72+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-80+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [456+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-328+rbp]
        mul qword ptr [-40+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-48+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-56+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-64+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-72+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [464+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-320+rbp]
        mul qword ptr [-40+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-48+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-56+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r10, rdi
        mov r11, rcx
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-64+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [472+r9], rsi
        mov rdi, r11
        mov rcx, r10
        mov rsi, r8
        mov rax, qword ptr [-312+rbp]
        mul qword ptr [-40+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-48+rbp]
        add rcx, rax
        adc rdi, rdx
        adc rsi, 0
        mov r10, rdi
        mov r11, rsi
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-56+rbp]
        add rcx, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [480+r9], rcx
        mov rdi, r11
        mov rsi, r10
        mov rcx, r8
        mov rax, qword ptr [-304+rbp]
        mul qword ptr [-40+rbp]
        add rsi, rax
        adc rdi, rdx
        adc rcx, 0
        mov r11, rcx
        mov r10, rdi
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-48+rbp]
        add rsi, rax
        adc r10, rdx
        adc r11, 0
        mov qword ptr [488+r9], rsi
        mov rcx, r10
        mov rsi, r11
        mov rax, qword ptr [-296+rbp]
        mul qword ptr [-40+rbp]
        add rcx, rax
        adc rsi, rdx
        adc r8, 0
        mov qword ptr [496+r9], rcx
        mov ecx, dword ptr [r12]
        xor ecx, dword ptr [rbx]
        test rsi, rsi
        mov qword ptr [504+r9], rsi
        mov dword ptr [8+r13], 64
        jne L149
        ALIGN 16
L157:
        mov edx, dword ptr [8+r13]
        lea ebx, dword ptr [-1+rdx]
        test ebx, ebx
        mov dword ptr [8+r13], ebx
        je L149
        lea r12d, dword ptr [-2+rdx]
        cmp dword ptr [r9+r12*8], 0
        je L157
L149:
        mov r9d, dword ptr [8+r13]
        xor edx, edx
        test r9d, r9d
        cmovne edx, ecx
        mov dword ptr [r13], edx
        add rsp, 520+32			; +32 for "home" storage
        pop rbx
        pop r12
        pop r13
        pop rbp
        pop rsi
        pop rdi

        ret

s_mp_mul_comba_32 ENDP


; void s_mp_sqr_comba_4(const mp_int *A, mp_int *B);

        ALIGN 16
s_mp_sqr_comba_4 PROC

        push rdi
        push rsi

        mov rdi, rcx
        mov rsi, rdx

        push rbp
        sub rsp, 80
        mov r11, rsi
        xor esi, esi
        mov r10, rsi
        mov rbp, rsi
        mov r8, rsi
        push rbx
        mov rbx, rsi
        mov rcx, qword ptr [16+rdi]
        mov rdi, rsi
        mov rax, qword ptr [rcx]
        mul rax
        add r10, rax
        adc rbx, rdx
        adc rdi, 0
        mov qword ptr [-72+80+rsp], r10
        mov rax, qword ptr [rcx]
        mul qword ptr [8+rcx]
        add rbx, rax
        adc rdi, rdx
        adc rbp, 0
        add rbx, rax
        adc rdi, rdx
        adc rbp, 0
        mov qword ptr [-64+80+rsp], rbx
        mov rax, qword ptr [rcx]
        mul qword ptr [16+rcx]
        add rdi, rax
        adc rbp, rdx
        adc r8, 0
        add rdi, rax
        adc rbp, rdx
        adc r8, 0
        mov rbx, rbp
        mov rbp, r8
        mov rax, qword ptr [8+rcx]
        mul rax
        add rdi, rax
        adc rbx, rdx
        adc rbp, 0
        mov qword ptr [-56+80+rsp], rdi
        mov r9, rbp
        mov r8, rbx
        mov rdi, rsi
        mov rax, qword ptr [rcx]
        mul qword ptr [24+rcx]
        add r8, rax
        adc r9, rdx
        adc rdi, 0
        add r8, rax
        adc r9, rdx
        adc rdi, 0
        mov rbx, r9
        mov rbp, rdi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [16+rcx]
        add r8, rax
        adc rbx, rdx
        adc rbp, 0
        add r8, rax
        adc rbx, rdx
        adc rbp, 0
        mov qword ptr [-48+80+rsp], r8
        mov r9, rbp
        mov rdi, rbx
        mov r8, rsi
        mov dword ptr [8+r11], 8
        mov dword ptr [r11], 0
        mov rax, qword ptr [8+rcx]
        mul qword ptr [24+rcx]
        add rdi, rax
        adc r9, rdx
        adc r8, 0
        add rdi, rax
        adc r9, rdx
        adc r8, 0
        mov rbx, r9
        mov rbp, r8
        mov rax, qword ptr [16+rcx]
        mul rax
        add rdi, rax
        adc rbx, rdx
        adc rbp, 0
        mov rax, rbp
        mov qword ptr [-40+80+rsp], rdi
        mov rbp, rbx
        mov rdi, rax
        mov rbx, rsi
        mov rax, qword ptr [16+rcx]
        mul qword ptr [24+rcx]
        add rbp, rax
        adc rdi, rdx
        adc rbx, 0
        add rbp, rax
        adc rdi, rdx
        adc rbx, 0
        mov qword ptr [-32+80+rsp], rbp
        mov r9, rbx
        mov rax, qword ptr [24+rcx]
        mul rax
        add rdi, rax
        adc r9, rdx
        adc rsi, 0
        mov rdx, qword ptr [16+r11]
        mov qword ptr [-24+80+rsp], rdi
        mov qword ptr [-16+80+rsp], r9
        mov qword ptr [rdx], r10
        mov r8, qword ptr [-64+80+rsp]
        mov qword ptr [8+rdx], r8
        mov rbp, qword ptr [-56+80+rsp]
        mov qword ptr [16+rdx], rbp
        mov rdi, qword ptr [-48+80+rsp]
        mov qword ptr [24+rdx], rdi
        mov rsi, qword ptr [-40+80+rsp]
        mov qword ptr [32+rdx], rsi
        mov rbx, qword ptr [-32+80+rsp]
        mov qword ptr [40+rdx], rbx
        mov rcx, qword ptr [-24+80+rsp]
        mov qword ptr [48+rdx], rcx
        mov rax, qword ptr [-16+80+rsp]
        mov qword ptr [56+rdx], rax
        mov edx, dword ptr [8+r11]
        test edx, edx
        je L168
        lea ecx, dword ptr [-1+rdx]
        mov rsi, qword ptr [16+r11]
        mov r10d, ecx
        cmp dword ptr [rsi+r10*8], 0
        jne L166
        mov edx, ecx
        ALIGN 16
L167:
        test edx, edx
        mov ecx, edx
        je L171
        dec edx
        mov eax, edx
        cmp dword ptr [rsi+rax*8], 0
        je L167
        mov dword ptr [8+r11], ecx
        mov edx, ecx
L166:
        test edx, edx
        je L168
        mov eax, dword ptr [r11]
        jmp L169

L171:
        mov dword ptr [8+r11], edx
L168:
        xor eax, eax
L169:
        add rsp, 80
        pop rbx
        pop rbp
        mov dword ptr [r11], eax

        pop rsi
        pop rdi

        ret

s_mp_sqr_comba_4 ENDP


; void s_mp_sqr_comba_8(const mp_int *A, mp_int *B);

        ALIGN 16
s_mp_sqr_comba_8 PROC

        push rdi
        push rsi

        mov rdi, rcx
        mov rsi, rdx
        mov rdx, r8
        mov rcx, r9

        push r14
        xor r9d, r9d
        mov r14, r9
        mov r10, r9
        push r13
        mov r13, r9
        push r12
        mov r12, r9
        push rbp
        mov rbp, rsi
        mov rsi, r9
        push rbx
        mov rbx, r9
        sub rsp, 8+128
        mov rcx, qword ptr [16+rdi]
        mov rax, qword ptr [rcx]
        mul rax
        add r14, rax
        adc rbx, rdx
        adc r12, 0
        mov qword ptr [-120+128+rsp], r14
        mov rax, qword ptr [rcx]
        mul qword ptr [8+rcx]
        add rbx, rax
        adc r12, rdx
        adc r10, 0
        add rbx, rax
        adc r12, rdx
        adc r10, 0
        mov qword ptr [-112+128+rsp], rbx
        mov rax, qword ptr [rcx]
        mul qword ptr [16+rcx]
        add r12, rax
        adc r10, rdx
        adc r13, 0
        add r12, rax
        adc r10, rdx
        adc r13, 0
        mov rbx, r10
        mov r10, r13
        mov r13, r9
        mov rax, qword ptr [8+rcx]
        mul rax
        add r12, rax
        adc rbx, rdx
        adc r10, 0
        mov qword ptr [-104+128+rsp], r12
        mov rdi, r10
        mov r11, rbx
        mov rax, qword ptr [rcx]
        mul qword ptr [24+rcx]
        add r11, rax
        adc rdi, rdx
        adc rsi, 0
        add r11, rax
        adc rdi, rdx
        adc rsi, 0
        mov rbx, rdi
        mov r10, rsi
        mov rdi, r9
        mov rax, qword ptr [8+rcx]
        mul qword ptr [16+rcx]
        add r11, rax
        adc rbx, rdx
        adc r10, 0
        add r11, rax
        adc rbx, rdx
        adc r10, 0
        mov rsi, r9
        mov qword ptr [-96+128+rsp], r11
        mov r8, r10
        mov r12, rbx
        mov r11, r9
        mov rax, qword ptr [rcx]
        mul qword ptr [32+rcx]
        add r12, rax
        adc r8, rdx
        adc r13, 0
        add r12, rax
        adc r8, rdx
        adc r13, 0
        mov rax, qword ptr [8+rcx]
        mul qword ptr [24+rcx]
        add r12, rax
        adc r8, rdx
        adc r13, 0
        add r12, rax
        adc r8, rdx
        adc r13, 0
        mov rbx, r8
        mov r10, r13
        mov r8, r9
        mov rax, qword ptr [16+rcx]
        mul rax
        add r12, rax
        adc rbx, rdx
        adc r10, 0
        mov qword ptr [-88+128+rsp], r12
        mov rax, qword ptr [rcx]
        mul qword ptr [40+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [32+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [24+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        add rbx, r8
        adc r10, rdi
        adc r11, rsi
        add rbx, r8
        adc r10, rdi
        adc r11, rsi
        mov qword ptr [-80+128+rsp], rbx
        mov rax, qword ptr [rcx]
        mul qword ptr [48+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [40+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [32+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, r9
        mov r13, rdi
        mov r12, rsi
        add r10, r8
        adc r11, r13
        adc rax, r12
        add r10, r8
        adc r11, r13
        adc rax, r12
        mov rdx, rax
        mov rbx, r11
        mov rdi, r13
        mov r11, rdx
        mov rsi, r12
        mov rax, qword ptr [24+rcx]
        mul rax
        add r10, rax
        adc rbx, rdx
        adc r11, 0
        mov qword ptr [-72+128+rsp], r10
        mov r10, r11
        mov rax, qword ptr [rcx]
        mul qword ptr [56+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [48+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [40+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [32+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, r9
        add rbx, r8
        adc r10, rdi
        adc rax, rsi
        add rbx, r8
        adc r10, rdi
        adc rax, rsi
        mov qword ptr [-64+128+rsp], rbx
        mov r11, rax
        mov rbx, r9
        mov rax, qword ptr [8+rcx]
        mul qword ptr [56+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [16+rcx]
        mul qword ptr [48+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [40+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov r13, rdi
        mov r12, rsi
        add r10, r8
        adc r11, r13
        adc rbx, r12
        add r10, r8
        adc r11, r13
        adc rbx, r12
        mov rsi, rbx
        mov rdi, r13
        mov rbx, r11
        mov r13, r12
        mov r11, rsi
        mov rax, qword ptr [32+rcx]
        mul rax
        add r10, rax
        adc rbx, rdx
        adc r11, 0
        mov qword ptr [-56+128+rsp], r10
        mov r10, r9
        mov rax, qword ptr [16+rcx]
        mul qword ptr [56+rcx]
        mov r8, rax
        mov rdi, rdx
        xor r13, r13
        mov rax, qword ptr [24+rcx]
        mul qword ptr [48+rcx]
        add r8, rax
        adc rdi, rdx
        adc r13, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [40+rcx]
        add r8, rax
        adc rdi, rdx
        adc r13, 0
        mov r12, rdi
        mov rax, r13
        add rbx, r8
        adc r11, r12
        adc r10, rax
        add rbx, r8
        adc r11, r12
        adc r10, rax
        mov qword ptr [-48+128+rsp], rbx
        mov r12, r11
        mov rsi, r10
        mov rbx, r9
        mov r11, r9
        mov rax, qword ptr [24+rcx]
        mul qword ptr [56+rcx]
        add r12, rax
        adc rsi, rdx
        adc rbx, 0
        add r12, rax
        adc rsi, rdx
        adc rbx, 0
        mov r13, rbx
        mov rax, qword ptr [32+rcx]
        mul qword ptr [48+rcx]
        add r12, rax
        adc rsi, rdx
        adc r13, 0
        add r12, rax
        adc rsi, rdx
        adc r13, 0
        mov r10, rsi
        mov rbx, r13
        mov r13, r9
        mov rax, qword ptr [40+rcx]
        mul rax
        add r12, rax
        adc r10, rdx
        adc rbx, 0
        mov qword ptr [-40+128+rsp], r12
        mov r8, rbx
        mov rdi, r10
        mov rax, qword ptr [32+rcx]
        mul qword ptr [56+rcx]
        add rdi, rax
        adc r8, rdx
        adc r11, 0
        add rdi, rax
        adc r8, rdx
        adc r11, 0
        mov r10, r8
        mov rbx, r11
        mov rax, qword ptr [40+rcx]
        mul qword ptr [48+rcx]
        add rdi, rax
        adc r10, rdx
        adc rbx, 0
        add rdi, rax
        adc r10, rdx
        adc rbx, 0
        mov qword ptr [-32+128+rsp], rdi
        mov rsi, rbx
        mov r12, r10
        mov rax, qword ptr [40+rcx]
        mul qword ptr [56+rcx]
        add r12, rax
        adc rsi, rdx
        adc r13, 0
        add r12, rax
        adc rsi, rdx
        adc r13, 0
        mov r10, rsi
        mov rbx, r13
        mov rax, qword ptr [48+rcx]
        mul rax
        add r12, rax
        adc r10, rdx
        adc rbx, 0
        mov qword ptr [-24+128+rsp], r12
        mov rdi, r10
        mov rsi, rbx
        mov r10, r9
        mov dword ptr [8+rbp], 16
        mov dword ptr [rbp], 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [56+rcx]
        add rdi, rax
        adc rsi, rdx
        adc r10, 0
        add rdi, rax
        adc rsi, rdx
        adc r10, 0
        mov qword ptr [-16+128+rsp], rdi
        mov r8, r10
        mov rax, qword ptr [56+rcx]
        mul rax
        add rsi, rax
        adc r8, rdx
        adc r9, 0
        mov rax, qword ptr [16+rbp]
        mov qword ptr [-8+128+rsp], rsi
        mov qword ptr [128+rsp], r8
        mov qword ptr [rax], r14
        mov rbx, qword ptr [-112+128+rsp]
        mov qword ptr [8+rax], rbx
        mov rcx, qword ptr [-104+128+rsp]
        mov qword ptr [16+rax], rcx
        mov rdx, qword ptr [-96+128+rsp]
        mov qword ptr [24+rax], rdx
        mov r14, qword ptr [-88+128+rsp]
        mov qword ptr [32+rax], r14
        mov r13, qword ptr [-80+128+rsp]
        mov qword ptr [40+rax], r13
        mov r12, qword ptr [-72+128+rsp]
        mov qword ptr [48+rax], r12
        mov r11, qword ptr [-64+128+rsp]
        mov qword ptr [56+rax], r11
        mov r10, qword ptr [-56+128+rsp]
        mov qword ptr [64+rax], r10
        mov r9, qword ptr [-48+128+rsp]
        mov qword ptr [72+rax], r9
        mov r8, qword ptr [-40+128+rsp]
        mov qword ptr [80+rax], r8
        mov rdi, qword ptr [-32+128+rsp]
        mov qword ptr [88+rax], rdi
        mov rsi, qword ptr [-24+128+rsp]
        mov qword ptr [96+rax], rsi
        mov rbx, qword ptr [-16+128+rsp]
        mov qword ptr [104+rax], rbx
        mov rcx, qword ptr [-8+128+rsp]
        mov qword ptr [112+rax], rcx
        mov rdx, qword ptr [128+rsp]
        mov qword ptr [120+rax], rdx
        mov edx, dword ptr [8+rbp]
        test edx, edx
        je L192
        lea ecx, dword ptr [-1+rdx]
        mov rsi, qword ptr [16+rbp]
        mov r14d, ecx
        cmp dword ptr [rsi+r14*8], 0
        jne L190
        mov edx, ecx
        ALIGN 16
L191:
        test edx, edx
        mov ecx, edx
        je L195
        dec edx
        mov r9d, edx
        cmp dword ptr [rsi+r9*8], 0
        je L191
        mov dword ptr [8+rbp], ecx
        mov edx, ecx
L190:
        test edx, edx
        je L192
        mov eax, dword ptr [rbp]
        jmp L193

L195:
        mov dword ptr [8+rbp], edx
L192:
        xor eax, eax
L193:
        mov dword ptr [rbp], eax
        add rsp, 8+128
        pop rbx
        pop rbp
        pop r12
        pop r13
        pop r14

        pop rsi
        pop rdi

        ret

s_mp_sqr_comba_8 ENDP


; void s_mp_sqr_comba_16(const mp_int *A, mp_int *B)

        ALIGN 16
s_mp_sqr_comba_16 PROC ; A "FRAME" function

        push rdi
        push rsi

        mov rdi, rcx
        mov rsi, rdx

        push rbp
        xor r9d, r9d
        mov r8, r9
        mov r11, r9
        mov rbp, rsp
        push r14
        mov r14, rsi
        mov rsi, r9
        push r13
        mov r13, r9
        push r12
        mov r12, r9
        push rbx
        mov rbx, r9
        sub rsp, 256+32			; +32 for "home" storage
        mov rcx, qword ptr [16+rdi]
        mov rax, qword ptr [rcx]
        mul rax
        add r8, rax
        adc rbx, rdx
        adc rsi, 0
        mov qword ptr [-288+rbp], r8
        mov rax, qword ptr [rcx]
        mul qword ptr [8+rcx]
        add rbx, rax
        adc rsi, rdx
        adc r12, 0
        add rbx, rax
        adc rsi, rdx
        adc r12, 0
        mov qword ptr [-280+rbp], rbx
        mov rax, qword ptr [rcx]
        mul qword ptr [16+rcx]
        add rsi, rax
        adc r12, rdx
        adc r13, 0
        add rsi, rax
        adc r12, rdx
        adc r13, 0
        mov rbx, r12
        mov r10, r13
        mov rax, qword ptr [8+rcx]
        mul rax
        add rsi, rax
        adc rbx, rdx
        adc r10, 0
        mov qword ptr [-272+rbp], rsi
        mov rdi, r10
        mov rsi, r9
        mov r10, rbx
        mov rax, qword ptr [rcx]
        mul qword ptr [24+rcx]
        add r10, rax
        adc rdi, rdx
        adc r11, 0
        add r10, rax
        adc rdi, rdx
        adc r11, 0
        mov r12, rdi
        mov rbx, r11
        mov rdi, r9
        mov rax, qword ptr [8+rcx]
        mul qword ptr [16+rcx]
        add r10, rax
        adc r12, rdx
        adc rbx, 0
        add r10, rax
        adc r12, rdx
        adc rbx, 0
        mov r11, r9
        mov qword ptr [-264+rbp], r10
        mov r8, rbx
        mov r13, r12
        mov r12, r9
        mov rax, qword ptr [rcx]
        mul qword ptr [32+rcx]
        add r13, rax
        adc r8, rdx
        adc r12, 0
        add r13, rax
        adc r8, rdx
        adc r12, 0
        mov rax, qword ptr [8+rcx]
        mul qword ptr [24+rcx]
        add r13, rax
        adc r8, rdx
        adc r12, 0
        add r13, rax
        adc r8, rdx
        adc r12, 0
        mov rbx, r8
        mov r10, r12
        mov r8, r9
        mov rax, qword ptr [16+rcx]
        mul rax
        add r13, rax
        adc rbx, rdx
        adc r10, 0
        mov qword ptr [-256+rbp], r13
        mov rax, qword ptr [rcx]
        mul qword ptr [40+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [32+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [24+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        add rbx, r8
        adc r10, rdi
        adc r11, rsi
        add rbx, r8
        adc r10, rdi
        adc r11, rsi
        mov qword ptr [-248+rbp], rbx
        mov rax, qword ptr [rcx]
        mul qword ptr [48+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [40+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [32+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, r9
        mov r13, rdi
        mov r12, rsi
        add r10, r8
        adc r11, r13
        adc rax, r12
        add r10, r8
        adc r11, r13
        adc rax, r12
        mov rdx, rax
        mov rbx, r11
        mov rdi, r13
        mov r11, rdx
        mov rsi, r12
        mov rax, qword ptr [24+rcx]
        mul rax
        add r10, rax
        adc rbx, rdx
        adc r11, 0
        mov qword ptr [-240+rbp], r10
        mov r10, r11
        mov rax, qword ptr [rcx]
        mul qword ptr [56+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [48+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [40+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [32+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rdx, r9
        add rbx, r8
        adc r10, rdi
        adc rdx, rsi
        add rbx, r8
        adc r10, rdi
        adc rdx, rsi
        mov r11, rdx
        mov qword ptr [-232+rbp], rbx
        mov rbx, r9
        mov rax, qword ptr [rcx]
        mul qword ptr [64+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [56+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [48+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [40+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov r13, rdi
        mov r12, rsi
        add r10, r8
        adc r11, r13
        adc rbx, r12
        add r10, r8
        adc r11, r13
        adc rbx, r12
        mov rax, qword ptr [32+rcx]
        mul rax
        add r10, rax
        adc r11, rdx
        adc rbx, 0
        mov rdi, r13
        mov qword ptr [-224+rbp], r10
        mov rsi, r12
        mov r10, rbx
        mov r12, r9
        mov rax, qword ptr [rcx]
        mul qword ptr [72+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [64+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [56+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [48+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [40+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        add r11, r8
        adc r10, rdi
        adc r12, rsi
        add r11, r8
        adc r10, rdi
        adc r12, rsi
        mov qword ptr [-216+rbp], r11
        mov rbx, r12
        mov rax, qword ptr [rcx]
        mul qword ptr [80+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [72+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [64+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [56+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [48+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, r9
        mov r13, rdi
        mov r12, rsi
        add r10, r8
        adc rbx, r13
        adc rax, r12
        add r10, r8
        adc rbx, r13
        adc rax, r12
        mov rdx, rax
        mov r11, rbx
        mov rdi, r13
        mov rbx, rdx
        mov rsi, r12
        mov rax, qword ptr [40+rcx]
        mul rax
        add r10, rax
        adc r11, rdx
        adc rbx, 0
        mov qword ptr [-208+rbp], r10
        mov r10, rbx
        mov rax, qword ptr [rcx]
        mul qword ptr [88+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [80+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [72+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [64+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [56+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [48+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rdx, r9
        add r11, r8
        adc r10, rdi
        adc rdx, rsi
        add r11, r8
        adc r10, rdi
        adc rdx, rsi
        mov r13, rdx
        mov qword ptr [-200+rbp], r11
        mov r12, r13
        mov rax, qword ptr [rcx]
        mul qword ptr [96+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [88+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [80+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [72+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [64+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [56+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, r9
        mov rdx, rdi
        mov r11, rsi
        add r10, r8
        adc r12, rdx
        adc rax, r11
        add r10, r8
        adc r12, rdx
        adc rax, r11
        mov rbx, rdx
        mov r13, rax
        mov rsi, r11
        mov rax, qword ptr [48+rcx]
        mul rax
        add r10, rax
        adc r12, rdx
        adc r13, 0
        mov rdi, rbx
        mov qword ptr [-192+rbp], r10
        mov r10, r13
        mov rax, qword ptr [rcx]
        mul qword ptr [104+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov r13, r9
        mov rax, qword ptr [8+rcx]
        mul qword ptr [96+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [88+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [80+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [72+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [64+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [56+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        add r12, r8
        adc r10, rdi
        adc r13, rsi
        add r12, r8
        adc r10, rdi
        adc r13, rsi
        mov qword ptr [-184+rbp], r12
        mov r12, r13
        mov rax, qword ptr [rcx]
        mul qword ptr [112+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [104+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [96+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [88+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [80+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [72+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [64+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, r9
        mov rbx, rdi
        mov rdx, rsi
        add r10, r8
        adc r12, rbx
        adc rax, rdx
        add r10, r8
        adc r12, rbx
        adc rax, rdx
        mov r11, rdx
        mov r13, rax
        mov rdi, rbx
        mov rax, qword ptr [56+rcx]
        mul rax
        add r10, rax
        adc r12, rdx
        adc r13, 0
        mov rsi, r11
        mov qword ptr [-176+rbp], r10
        mov r10, r13
        mov rax, qword ptr [rcx]
        mul qword ptr [120+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov r13, r9
        mov rax, qword ptr [8+rcx]
        mul qword ptr [112+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [104+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [96+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [88+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [80+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [72+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [64+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        add r12, r8
        adc r10, rdi
        adc r13, rsi
        add r12, r8
        adc r10, rdi
        adc r13, rsi
        mov qword ptr [-168+rbp], r12
        mov r12, r13
        mov rax, qword ptr [8+rcx]
        mul qword ptr [120+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [16+rcx]
        mul qword ptr [112+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [104+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [96+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [88+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [80+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [72+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, r9
        mov rbx, rdi
        mov rdx, rsi
        add r10, r8
        adc r12, rbx
        adc rax, rdx
        add r10, r8
        adc r12, rbx
        adc rax, rdx
        mov r11, rdx
        mov r13, rax
        mov rdi, rbx
        mov rax, qword ptr [64+rcx]
        mul rax
        add r10, rax
        adc r12, rdx
        adc r13, 0
        mov rsi, r11
        mov qword ptr [-160+rbp], r10
        mov r11, r9
        mov rax, qword ptr [16+rcx]
        mul qword ptr [120+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov r10, r13
        mov rbx, r9
        mov rax, qword ptr [24+rcx]
        mul qword ptr [112+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [104+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [96+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [88+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [80+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [72+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        add r12, r8
        adc r10, rdi
        adc r11, rsi
        add r12, r8
        adc r10, rdi
        adc r11, rsi
        mov qword ptr [-152+rbp], r12
        mov rax, qword ptr [24+rcx]
        mul qword ptr [120+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [32+rcx]
        mul qword ptr [112+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [104+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [96+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [88+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [80+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov r13, rdi
        mov r12, rsi
        add r10, r8
        adc r11, r13
        adc rbx, r12
        add r10, r8
        adc r11, r13
        adc rbx, r12
        mov rdx, rbx
        mov rdi, r13
        mov rbx, r11
        mov rsi, r12
        mov r11, rdx
        mov r12, r9
        mov rax, qword ptr [72+rcx]
        mul rax
        add r10, rax
        adc rbx, rdx
        adc r11, 0
        mov qword ptr [-144+rbp], r10
        mov r10, r11
        mov rax, qword ptr [32+rcx]
        mul qword ptr [120+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [40+rcx]
        mul qword ptr [112+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [104+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [96+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [88+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [80+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        add rbx, r8
        adc r10, rdi
        adc r12, rsi
        add rbx, r8
        adc r10, rdi
        adc r12, rsi
        mov qword ptr [-136+rbp], rbx
        mov r11, r12
        mov rax, qword ptr [40+rcx]
        mul qword ptr [120+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [48+rcx]
        mul qword ptr [112+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [104+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [96+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [88+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, r9
        mov r13, rdi
        mov r12, rsi
        add r10, r8
        adc r11, r13
        adc rax, r12
        add r10, r8
        adc r11, r13
        adc rax, r12
        mov rdx, rax
        mov rbx, r11
        mov rdi, r13
        mov r11, rdx
        mov rsi, r12
        mov rax, qword ptr [80+rcx]
        mul rax
        add r10, rax
        adc rbx, rdx
        adc r11, 0
        mov qword ptr [-128+rbp], r10
        mov r10, r11
        mov rax, qword ptr [48+rcx]
        mul qword ptr [120+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [56+rcx]
        mul qword ptr [112+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [104+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [96+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [80+rcx]
        mul qword ptr [88+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rdx, r9
        add rbx, r8
        adc r10, rdi
        adc rdx, rsi
        add rbx, r8
        adc r10, rdi
        adc rdx, rsi
        mov qword ptr [-120+rbp], rbx
        mov r11, rdx
        mov rbx, r9
        mov rax, qword ptr [56+rcx]
        mul qword ptr [120+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [64+rcx]
        mul qword ptr [112+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [104+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [80+rcx]
        mul qword ptr [96+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov r13, rdi
        mov r12, rsi
        add r10, r8
        adc r11, r13
        adc rbx, r12
        add r10, r8
        adc r11, r13
        adc rbx, r12
        mov rdx, rbx
        mov rdi, r13
        mov rbx, r11
        mov rsi, r12
        mov r11, rdx
        mov r12, r9
        mov rax, qword ptr [88+rcx]
        mul rax
        add r10, rax
        adc rbx, rdx
        adc r11, 0
        mov qword ptr [-112+rbp], r10
        mov r10, r11
        mov rax, qword ptr [64+rcx]
        mul qword ptr [120+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [72+rcx]
        mul qword ptr [112+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [80+rcx]
        mul qword ptr [104+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [88+rcx]
        mul qword ptr [96+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        add rbx, r8
        adc r10, rdi
        adc r12, rsi
        add rbx, r8
        adc r10, rdi
        adc r12, rsi
        mov qword ptr [-104+rbp], rbx
        mov r11, r12
        mov rax, qword ptr [72+rcx]
        mul qword ptr [120+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [80+rcx]
        mul qword ptr [112+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [88+rcx]
        mul qword ptr [104+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, r9
        mov r13, rdi
        mov r12, rsi
        add r10, r8
        adc r11, r13
        adc rax, r12
        add r10, r8
        adc r11, r13
        adc rax, r12
        mov rdx, rax
        mov rbx, r11
        mov rdi, r13
        mov r11, rdx
        mov rsi, r12
        mov rax, qword ptr [96+rcx]
        mul rax
        add r10, rax
        adc rbx, rdx
        adc r11, 0
        mov qword ptr [-96+rbp], r10
        mov r10, r9
        mov rax, qword ptr [80+rcx]
        mul qword ptr [120+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [88+rcx]
        mul qword ptr [112+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [96+rcx]
        mul qword ptr [104+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov r12, rdi
        mov rax, rsi
        mov rsi, r9
        add rbx, r8
        adc r11, r12
        adc r10, rax
        add rbx, r8
        adc r11, r12
        adc r10, rax
        mov r12, r9
        mov qword ptr [-88+rbp], rbx
        mov r13, r11
        mov r11, r10
        mov rax, qword ptr [88+rcx]
        mul qword ptr [120+rcx]
        add r13, rax
        adc r11, rdx
        adc r12, 0
        add r13, rax
        adc r11, rdx
        adc r12, 0
        mov rdi, r12
        mov rax, qword ptr [96+rcx]
        mul qword ptr [112+rcx]
        add r13, rax
        adc r11, rdx
        adc rdi, 0
        add r13, rax
        adc r11, rdx
        adc rdi, 0
        mov rbx, r11
        mov r10, rdi
        mov r11, r9
        mov rax, qword ptr [104+rcx]
        mul rax
        add r13, rax
        adc rbx, rdx
        adc r10, 0
        mov qword ptr [-80+rbp], r13
        mov r8, r10
        mov r10, rbx
        mov rax, qword ptr [96+rcx]
        mul qword ptr [120+rcx]
        add r10, rax
        adc r8, rdx
        adc rsi, 0
        add r10, rax
        adc r8, rdx
        adc rsi, 0
        mov r12, r8
        mov rbx, rsi
        mov rax, qword ptr [104+rcx]
        mul qword ptr [112+rcx]
        add r10, rax
        adc r12, rdx
        adc rbx, 0
        add r10, rax
        adc r12, rdx
        adc rbx, 0
        mov qword ptr [-72+rbp], r10
        mov r13, rbx
        mov rbx, r12
        mov rax, qword ptr [104+rcx]
        mul qword ptr [120+rcx]
        add rbx, rax
        adc r13, rdx
        adc r11, 0
        add rbx, rax
        adc r13, rdx
        adc r11, 0
        mov r12, r11
        mov r10, r13
        mov rax, qword ptr [112+rcx]
        mul rax
        add rbx, rax
        adc r10, rdx
        adc r12, 0
        mov qword ptr [-64+rbp], rbx
        mov rdi, r10
        mov rbx, r9
        mov rsi, r12
        mov rax, qword ptr [112+rcx]
        mul qword ptr [120+rcx]
        add rdi, rax
        adc rsi, rdx
        adc rbx, 0
        add rdi, rax
        adc rsi, rdx
        adc rbx, 0
        mov qword ptr [-56+rbp], rdi
        mov r8, rbx
        mov rax, qword ptr [120+rcx]
        mul rax
        add rsi, rax
        adc r8, rdx
        adc r9, 0
        mov qword ptr [-48+rbp], rsi
        mov qword ptr [-40+rbp], r8
        mov dword ptr [8+r14], 32
        mov dword ptr [r14], 0
;        mov rdi, qword ptr [16+r14]
;        lea rsi, qword ptr [-288+rbp]
;        mov edx, 256
        mov rcx, qword ptr [16+r14]
        lea rdx, qword ptr [-288+rbp]
        mov r8d, 256
        call memcpy
        mov edx, dword ptr [8+r14]
        test edx, edx
        je L232
        lea ecx, dword ptr [-1+rdx]
        mov rsi, qword ptr [16+r14]
        mov r9d, ecx
        cmp dword ptr [rsi+r9*8], 0
        jne L230
        mov edx, ecx
        ALIGN 16
L231:
        test edx, edx
        mov ecx, edx
        je L235
        dec edx
        mov eax, edx
        cmp dword ptr [rsi+rax*8], 0
        je L231
        mov dword ptr [8+r14], ecx
        mov edx, ecx
L230:
        test edx, edx
        je L232
        mov eax, dword ptr [r14]
        jmp L233

L235:
        mov dword ptr [8+r14], edx
L232:
        xor eax, eax
L233:
        mov dword ptr [r14], eax
        add rsp, 256+32			; +32 for "home" storage
        pop rbx
        pop r12
        pop r13
        pop r14
        pop rbp
        pop rsi
        pop rdi

        ret

s_mp_sqr_comba_16 ENDP


; void s_mp_sqr_comba_32(const mp_int *A, mp_int *B);

        ALIGN 16
s_mp_sqr_comba_32 PROC ; A "FRAME" function

        push rdi
        push rsi

        mov rdi, rcx
        mov rsi, rdx

        push rbp
        xor r10d, r10d
        mov r8, r10
        mov r11, r10
        mov rbp, rsp
        push r14
        mov r14, rsi
        mov rsi, r10
        push r13
        mov r13, r10
        push r12
        mov r12, r10
        push rbx
        mov rbx, r10
        sub rsp, 512+32			; +32 for "home" storage
        mov rcx, qword ptr [16+rdi]
        mov rax, qword ptr [rcx]
        mul rax
        add r8, rax
        adc rbx, rdx
        adc rsi, 0
        mov qword ptr [-544+rbp], r8
        mov rax, qword ptr [rcx]
        mul qword ptr [8+rcx]
        add rbx, rax
        adc rsi, rdx
        adc r12, 0
        add rbx, rax
        adc rsi, rdx
        adc r12, 0
        mov qword ptr [-536+rbp], rbx
        mov rax, qword ptr [rcx]
        mul qword ptr [16+rcx]
        add rsi, rax
        adc r12, rdx
        adc r13, 0
        add rsi, rax
        adc r12, rdx
        adc r13, 0
        mov rbx, r12
        mov r9, r13
        mov rax, qword ptr [8+rcx]
        mul rax
        add rsi, rax
        adc rbx, rdx
        adc r9, 0
        mov qword ptr [-528+rbp], rsi
        mov rdi, r9
        mov rsi, r10
        mov r9, rbx
        mov rax, qword ptr [rcx]
        mul qword ptr [24+rcx]
        add r9, rax
        adc rdi, rdx
        adc r11, 0
        add r9, rax
        adc rdi, rdx
        adc r11, 0
        mov r12, rdi
        mov r13, r11
        mov rdi, r10
        mov rax, qword ptr [8+rcx]
        mul qword ptr [16+rcx]
        add r9, rax
        adc r12, rdx
        adc r13, 0
        add r9, rax
        adc r12, rdx
        adc r13, 0
        mov r11, r10
        mov qword ptr [-520+rbp], r9
        mov r8, r13
        mov r13, r12
        mov r12, r10
        mov rax, qword ptr [rcx]
        mul qword ptr [32+rcx]
        add r13, rax
        adc r8, rdx
        adc r12, 0
        add r13, rax
        adc r8, rdx
        adc r12, 0
        mov rax, qword ptr [8+rcx]
        mul qword ptr [24+rcx]
        add r13, rax
        adc r8, rdx
        adc r12, 0
        add r13, rax
        adc r8, rdx
        adc r12, 0
        mov rbx, r8
        mov r9, r12
        mov r8, r10
        mov rax, qword ptr [16+rcx]
        mul rax
        add r13, rax
        adc rbx, rdx
        adc r9, 0
        mov qword ptr [-512+rbp], r13
        mov rax, qword ptr [rcx]
        mul qword ptr [40+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [32+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [24+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        add rbx, r8
        adc r9, rdi
        adc r11, rsi
        add rbx, r8
        adc r9, rdi
        adc r11, rsi
        mov qword ptr [-504+rbp], rbx
        mov rax, qword ptr [rcx]
        mul qword ptr [48+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [40+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [32+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, r10
        mov r13, rdi
        mov r12, rsi
        add r9, r8
        adc r11, r13
        adc rax, r12
        add r9, r8
        adc r11, r13
        adc rax, r12
        mov rdx, rax
        mov rbx, r11
        mov rdi, r13
        mov r11, rdx
        mov rsi, r12
        mov rax, qword ptr [24+rcx]
        mul rax
        add r9, rax
        adc rbx, rdx
        adc r11, 0
        mov qword ptr [-496+rbp], r9
        mov r9, r11
        mov rax, qword ptr [rcx]
        mul qword ptr [56+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [48+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [40+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [32+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rdx, r10
        add rbx, r8
        adc r9, rdi
        adc rdx, rsi
        add rbx, r8
        adc r9, rdi
        adc rdx, rsi
        mov r11, rdx
        mov qword ptr [-488+rbp], rbx
        mov rbx, r10
        mov rax, qword ptr [rcx]
        mul qword ptr [64+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [56+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [48+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [40+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov r13, rdi
        mov r12, rsi
        add r9, r8
        adc r11, r13
        adc rbx, r12
        add r9, r8
        adc r11, r13
        adc rbx, r12
        mov rax, qword ptr [32+rcx]
        mul rax
        add r9, rax
        adc r11, rdx
        adc rbx, 0
        mov rdi, r13
        mov qword ptr [-480+rbp], r9
        mov rsi, r12
        mov r9, rbx
        mov r12, r10
        mov rax, qword ptr [rcx]
        mul qword ptr [72+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [64+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [56+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [48+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [40+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        add r11, r8
        adc r9, rdi
        adc r12, rsi
        add r11, r8
        adc r9, rdi
        adc r12, rsi
        mov qword ptr [-472+rbp], r11
        mov rbx, r12
        mov rax, qword ptr [rcx]
        mul qword ptr [80+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [72+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [64+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [56+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [48+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, r10
        mov r13, rdi
        mov r12, rsi
        add r9, r8
        adc rbx, r13
        adc rax, r12
        add r9, r8
        adc rbx, r13
        adc rax, r12
        mov rdx, rax
        mov r11, rbx
        mov rdi, r13
        mov rbx, rdx
        mov rsi, r12
        mov rax, qword ptr [40+rcx]
        mul rax
        add r9, rax
        adc r11, rdx
        adc rbx, 0
        mov qword ptr [-464+rbp], r9
        mov r9, rbx
        mov rax, qword ptr [rcx]
        mul qword ptr [88+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [80+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [72+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [64+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [56+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [48+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rdx, r10
        add r11, r8
        adc r9, rdi
        adc rdx, rsi
        add r11, r8
        adc r9, rdi
        adc rdx, rsi
        mov r13, rdx
        mov qword ptr [-456+rbp], r11
        mov r12, r13
        mov r13, r10
        mov rax, qword ptr [rcx]
        mul qword ptr [96+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [88+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [80+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [72+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [64+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [56+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, rdi
        mov r11, rsi
        add r9, r8
        adc r12, rax
        adc r13, r11
        add r9, r8
        adc r12, rax
        adc r13, r11
        mov rbx, rax
        mov rsi, r11
        mov rax, qword ptr [48+rcx]
        mul rax
        add r9, rax
        adc r12, rdx
        adc r13, 0
        mov rdi, rbx
        mov qword ptr [-448+rbp], r9
        mov r9, r13
        mov rax, qword ptr [rcx]
        mul qword ptr [104+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov r13, r10
        mov rax, qword ptr [8+rcx]
        mul qword ptr [96+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [88+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [80+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [72+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [64+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [56+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        add r12, r8
        adc r9, rdi
        adc r13, rsi
        add r12, r8
        adc r9, rdi
        adc r13, rsi
        mov qword ptr [-440+rbp], r12
        mov r12, r10
        mov rax, qword ptr [rcx]
        mul qword ptr [112+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [104+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [96+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [88+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [80+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [72+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [64+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rdx, r13
        mov rbx, rdi
        mov r13, rsi
        add r9, r8
        adc rdx, rbx
        adc r12, r13
        add r9, r8
        adc rdx, rbx
        adc r12, r13
        mov rax, r12
        mov r11, r13
        mov r12, rdx
        mov r13, rax
        mov rdi, rbx
        mov rsi, r11
        mov rax, qword ptr [56+rcx]
        mul rax
        add r9, rax
        adc r12, rdx
        adc r13, 0
        mov qword ptr [-432+rbp], r9
        mov r9, r13
        mov r13, r10
        mov rax, qword ptr [rcx]
        mul qword ptr [120+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [112+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [104+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [96+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [88+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [80+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [72+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [64+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, r8
        mov rdx, rdi
        mov rbx, rsi
        add r12, rax
        adc r9, rdx
        adc r13, rbx
        add r12, rax
        adc r9, rdx
        adc r13, rbx
        mov qword ptr [-424+rbp], r12
        mov r8, rdx
        mov rsi, rax
        mov rdi, rbx
        mov r12, r13
        mov r13, r10
        mov rax, qword ptr [rcx]
        mul qword ptr [128+rcx]
        mov rsi, rax
        mov r8, rdx
        xor rdi, rdi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [120+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [112+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [104+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [96+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [88+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [80+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [72+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, rsi
        mov rbx, r8
        mov rdx, rdi
        add r9, rax
        adc r12, rbx
        adc r13, rdx
        add r9, rax
        adc r12, rbx
        adc r13, rdx
        mov r11, rdx
        mov r8, rax
        mov rdi, rbx
        mov rax, qword ptr [64+rcx]
        mul rax
        add r9, rax
        adc r12, rdx
        adc r13, 0
        mov rsi, r11
        mov qword ptr [-416+rbp], r9
        mov r9, r13
        mov rax, qword ptr [rcx]
        mul qword ptr [136+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov r13, r10
        mov rax, qword ptr [8+rcx]
        mul qword ptr [128+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [120+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [112+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [104+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [96+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [88+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [80+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [72+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rbx, r8
        mov rax, rdi
        mov rdx, rsi
        add r12, rbx
        adc r9, rax
        adc r13, rdx
        add r12, rbx
        adc r9, rax
        adc r13, rdx
        mov qword ptr [-408+rbp], r12
        mov rdi, rdx
        mov r8, rax
        mov rsi, rbx
        mov r12, r13
        mov r13, r10
        mov rax, qword ptr [rcx]
        mul qword ptr [144+rcx]
        mov rsi, rax
        mov r8, rdx
        xor rdi, rdi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [136+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [128+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [120+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [112+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [104+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [96+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [88+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [80+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, rsi
        mov rbx, r8
        mov rdx, rdi
        add r9, rax
        adc r12, rbx
        adc r13, rdx
        add r9, rax
        adc r12, rbx
        adc r13, rdx
        mov r11, rdx
        mov r8, rax
        mov rdi, rbx
        mov rax, qword ptr [72+rcx]
        mul rax
        add r9, rax
        adc r12, rdx
        adc r13, 0
        mov rsi, r11
        mov qword ptr [-400+rbp], r9
        mov r9, r13
        mov rax, qword ptr [rcx]
        mul qword ptr [152+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov r13, r10
        mov rax, qword ptr [8+rcx]
        mul qword ptr [144+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [136+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [128+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [120+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [112+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [104+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [96+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [88+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [80+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rbx, r8
        mov rax, rdi
        mov rdx, rsi
        add r12, rbx
        adc r9, rax
        adc r13, rdx
        add r12, rbx
        adc r9, rax
        adc r13, rdx
        mov qword ptr [-392+rbp], r12
        mov rdi, rdx
        mov r8, rax
        mov rsi, rbx
        mov r12, r13
        mov r13, r10
        mov rax, qword ptr [rcx]
        mul qword ptr [160+rcx]
        mov rsi, rax
        mov r8, rdx
        xor rdi, rdi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [152+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [144+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [136+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [128+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [120+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [112+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [104+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [96+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [88+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, rsi
        mov rbx, r8
        mov rdx, rdi
        add r9, rax
        adc r12, rbx
        adc r13, rdx
        add r9, rax
        adc r12, rbx
        adc r13, rdx
        mov r11, rdx
        mov r8, rax
        mov rdi, rbx
        mov rax, qword ptr [80+rcx]
        mul rax
        add r9, rax
        adc r12, rdx
        adc r13, 0
        mov rsi, r11
        mov qword ptr [-384+rbp], r9
        mov r9, r13
        mov rax, qword ptr [rcx]
        mul qword ptr [168+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov r13, r10
        mov rax, qword ptr [8+rcx]
        mul qword ptr [160+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [152+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [144+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [136+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [128+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [120+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [112+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [104+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [96+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [80+rcx]
        mul qword ptr [88+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rbx, r8
        mov rax, rdi
        mov rdx, rsi
        add r12, rbx
        adc r9, rax
        adc r13, rdx
        add r12, rbx
        adc r9, rax
        adc r13, rdx
        mov qword ptr [-376+rbp], r12
        mov rdi, rdx
        mov r8, rax
        mov rsi, rbx
        mov r12, r13
        mov r13, r10
        mov rax, qword ptr [rcx]
        mul qword ptr [176+rcx]
        mov rsi, rax
        mov r8, rdx
        xor rdi, rdi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [168+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [160+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [152+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [144+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [136+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [128+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [120+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [112+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [104+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [80+rcx]
        mul qword ptr [96+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, rsi
        mov rbx, r8
        mov rdx, rdi
        add r9, rax
        adc r12, rbx
        adc r13, rdx
        add r9, rax
        adc r12, rbx
        adc r13, rdx
        mov r11, rdx
        mov r8, rax
        mov rdi, rbx
        mov rax, qword ptr [88+rcx]
        mul rax
        add r9, rax
        adc r12, rdx
        adc r13, 0
        mov rsi, r11
        mov qword ptr [-368+rbp], r9
        mov r9, r13
        mov rax, qword ptr [rcx]
        mul qword ptr [184+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov r13, r10
        mov rax, qword ptr [8+rcx]
        mul qword ptr [176+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [168+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [160+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [152+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [144+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [136+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [128+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [120+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [112+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [80+rcx]
        mul qword ptr [104+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [88+rcx]
        mul qword ptr [96+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rbx, r8
        mov rax, rdi
        mov rdx, rsi
        add r12, rbx
        adc r9, rax
        adc r13, rdx
        add r12, rbx
        adc r9, rax
        adc r13, rdx
        mov rdi, rdx
        mov qword ptr [-360+rbp], r12
        mov r8, rax
        mov rsi, rbx
        mov r12, r13
        mov r13, r10
        mov rax, qword ptr [rcx]
        mul qword ptr [192+rcx]
        mov rsi, rax
        mov r8, rdx
        xor rdi, rdi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [184+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [176+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [168+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [160+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [152+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [144+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [136+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [128+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [120+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [80+rcx]
        mul qword ptr [112+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [88+rcx]
        mul qword ptr [104+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rbx, r8
        mov rax, rdi
        add r9, rsi
        adc r12, rbx
        adc r13, rax
        add r9, rsi
        adc r12, rbx
        adc r13, rax
        mov r11, rax
        mov r8, rbx
        mov rax, qword ptr [96+rcx]
        mul rax
        add r9, rax
        adc r12, rdx
        adc r13, 0
        mov rdi, r11
        mov qword ptr [-352+rbp], r9
        mov r9, r13
        mov rax, qword ptr [rcx]
        mul qword ptr [200+rcx]
        mov rsi, rax
        mov r8, rdx
        xor rdi, rdi
        mov r13, r10
        mov rax, qword ptr [8+rcx]
        mul qword ptr [192+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [184+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [176+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [168+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [160+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [152+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [144+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [136+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [128+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [80+rcx]
        mul qword ptr [120+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [88+rcx]
        mul qword ptr [112+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [96+rcx]
        mul qword ptr [104+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        add r12, rsi
        adc r9, r8
        adc r13, rdi
        add r12, rsi
        adc r9, r8
        adc r13, rdi
        mov qword ptr [-344+rbp], r12
        mov r12, r10
        mov rax, qword ptr [rcx]
        mul qword ptr [208+rcx]
        mov rsi, rax
        mov r8, rdx
        xor rdi, rdi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [200+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [192+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [184+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [176+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [168+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [160+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [152+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [144+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [136+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [80+rcx]
        mul qword ptr [128+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [88+rcx]
        mul qword ptr [120+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [96+rcx]
        mul qword ptr [112+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rdx, r13
        mov rbx, r8
        mov r13, rdi
        add r9, rsi
        adc rdx, rbx
        adc r12, r13
        add r9, rsi
        adc rdx, rbx
        adc r12, r13
        mov rax, r12
        mov r11, r13
        mov r12, rdx
        mov r13, rax
        mov r8, rbx
        mov rdi, r11
        mov rax, qword ptr [104+rcx]
        mul rax
        add r9, rax
        adc r12, rdx
        adc r13, 0
        mov qword ptr [-336+rbp], r9
        mov r9, r13
        mov r13, r10
        mov rax, qword ptr [rcx]
        mul qword ptr [216+rcx]
        mov rsi, rax
        mov r8, rdx
        xor rdi, rdi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [208+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [200+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [192+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [184+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [176+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [168+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [160+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [152+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [144+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [80+rcx]
        mul qword ptr [136+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [88+rcx]
        mul qword ptr [128+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [96+rcx]
        mul qword ptr [120+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [104+rcx]
        mul qword ptr [112+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        add r12, rsi
        adc r9, r8
        adc r13, rdi
        add r12, rsi
        adc r9, r8
        adc r13, rdi
        mov qword ptr [-328+rbp], r12
        mov rax, qword ptr [rcx]
        mul qword ptr [224+rcx]
        mov rsi, rax
        mov r8, rdx
        xor rdi, rdi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [216+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [208+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [200+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [192+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [184+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [176+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [168+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [160+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [152+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [80+rcx]
        mul qword ptr [144+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [88+rcx]
        mul qword ptr [136+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [96+rcx]
        mul qword ptr [128+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [104+rcx]
        mul qword ptr [120+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, r13
        mov rdx, r10
        mov rbx, r8
        mov r12, rdi
        add r9, rsi
        adc rax, rbx
        adc rdx, r12
        add r9, rsi
        adc rax, rbx
        adc rdx, r12
        mov rdi, rdx
        mov r11, r12
        mov r8, rbx
        mov r12, rax
        mov r13, rdi
        mov rdi, r11
        mov rax, qword ptr [112+rcx]
        mul rax
        add r9, rax
        adc r12, rdx
        adc r13, 0
        mov qword ptr [-320+rbp], r9
        mov rbx, r13
        mov r9, r10
        mov rax, qword ptr [rcx]
        mul qword ptr [232+rcx]
        mov rsi, rax
        mov r8, rdx
        xor rdi, rdi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [224+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [216+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [208+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [200+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [192+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [184+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [176+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [168+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [160+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [80+rcx]
        mul qword ptr [152+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [88+rcx]
        mul qword ptr [144+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [96+rcx]
        mul qword ptr [136+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [104+rcx]
        mul qword ptr [128+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [112+rcx]
        mul qword ptr [120+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        add r12, rsi
        adc rbx, r8
        adc r9, rdi
        add r12, rsi
        adc rbx, r8
        adc r9, rdi
        mov qword ptr [-312+rbp], r12
        mov r13, r9
        mov rax, qword ptr [rcx]
        mul qword ptr [240+rcx]
        mov rsi, rax
        mov r8, rdx
        xor rdi, rdi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [232+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [224+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [216+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [208+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [200+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [192+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [184+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [176+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [168+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [80+rcx]
        mul qword ptr [160+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [88+rcx]
        mul qword ptr [152+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [96+rcx]
        mul qword ptr [144+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [104+rcx]
        mul qword ptr [136+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [112+rcx]
        mul qword ptr [128+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, r10
        mov r11, r8
        mov rdx, rdi
        add rbx, rsi
        adc r13, r11
        adc rax, rdx
        add rbx, rsi
        adc r13, r11
        adc rax, rdx
        mov r9, rdx
        mov rdx, rax
        mov r12, r13
        mov r8, r11
        mov r13, rdx
        mov rdi, r9
        mov rax, qword ptr [120+rcx]
        mul rax
        add rbx, rax
        adc r12, rdx
        adc r13, 0
        mov qword ptr [-304+rbp], rbx
        mov rbx, r13
        mov r13, r10
        mov rax, qword ptr [rcx]
        mul qword ptr [248+rcx]
        mov rsi, rax
        mov r8, rdx
        xor rdi, rdi
        mov rax, qword ptr [8+rcx]
        mul qword ptr [240+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [16+rcx]
        mul qword ptr [232+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [224+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [216+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [208+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [200+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [192+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [184+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [176+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [80+rcx]
        mul qword ptr [168+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [88+rcx]
        mul qword ptr [160+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [96+rcx]
        mul qword ptr [152+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [104+rcx]
        mul qword ptr [144+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [112+rcx]
        mul qword ptr [136+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [120+rcx]
        mul qword ptr [128+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        add r12, rsi
        adc rbx, r8
        adc r13, rdi
        add r12, rsi
        adc rbx, r8
        adc r13, rdi
        mov qword ptr [-296+rbp], r12
        mov r12, r13
        mov r13, r10
        mov rax, qword ptr [8+rcx]
        mul qword ptr [248+rcx]
        mov rsi, rax
        mov r8, rdx
        xor rdi, rdi
        mov rax, qword ptr [16+rcx]
        mul qword ptr [240+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [24+rcx]
        mul qword ptr [232+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [224+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [216+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [208+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [200+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [192+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [184+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [80+rcx]
        mul qword ptr [176+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [88+rcx]
        mul qword ptr [168+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [96+rcx]
        mul qword ptr [160+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [104+rcx]
        mul qword ptr [152+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [112+rcx]
        mul qword ptr [144+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [120+rcx]
        mul qword ptr [136+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov r11, r8
        mov rax, rdi
        add rbx, rsi
        adc r12, r11
        adc r13, rax
        add rbx, rsi
        adc r12, r11
        adc r13, rax
        mov r9, rax
        mov r8, r11
        mov rax, qword ptr [128+rcx]
        mul rax
        add rbx, rax
        adc r12, rdx
        adc r13, 0
        mov rdi, r9
        mov qword ptr [-288+rbp], rbx
        mov r9, r13
        mov rax, qword ptr [16+rcx]
        mul qword ptr [248+rcx]
        mov rsi, rax
        mov r8, rdx
        xor rdi, rdi
        mov r13, r10
        mov rax, qword ptr [24+rcx]
        mul qword ptr [240+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [32+rcx]
        mul qword ptr [232+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [224+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [216+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [208+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [200+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [192+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [80+rcx]
        mul qword ptr [184+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [88+rcx]
        mul qword ptr [176+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [96+rcx]
        mul qword ptr [168+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [104+rcx]
        mul qword ptr [160+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [112+rcx]
        mul qword ptr [152+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [120+rcx]
        mul qword ptr [144+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [128+rcx]
        mul qword ptr [136+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        add r12, rsi
        adc r9, r8
        adc r13, rdi
        add r12, rsi
        adc r9, r8
        adc r13, rdi
        mov qword ptr [-280+rbp], r12
        mov r12, r10
        mov rax, qword ptr [24+rcx]
        mul qword ptr [248+rcx]
        mov rsi, rax
        mov r8, rdx
        xor rdi, rdi
        mov rax, qword ptr [32+rcx]
        mul qword ptr [240+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [40+rcx]
        mul qword ptr [232+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [224+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [216+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [208+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [200+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [80+rcx]
        mul qword ptr [192+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [88+rcx]
        mul qword ptr [184+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [96+rcx]
        mul qword ptr [176+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [104+rcx]
        mul qword ptr [168+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [112+rcx]
        mul qword ptr [160+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [120+rcx]
        mul qword ptr [152+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [128+rcx]
        mul qword ptr [144+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rdx, r13
        mov rbx, r8
        mov r13, rdi
        add r9, rsi
        adc rdx, rbx
        adc r12, r13
        add r9, rsi
        adc rdx, rbx
        adc r12, r13
        mov rax, r12
        mov r11, r13
        mov r12, rdx
        mov r13, rax
        mov r8, rbx
        mov rdi, r11
        mov rax, qword ptr [136+rcx]
        mul rax
        add r9, rax
        adc r12, rdx
        adc r13, 0
        mov qword ptr [-272+rbp], r9
        mov r9, r13
        mov r13, r10
        mov rax, qword ptr [32+rcx]
        mul qword ptr [248+rcx]
        mov rsi, rax
        mov r8, rdx
        xor rdi, rdi
        mov rax, qword ptr [40+rcx]
        mul qword ptr [240+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [48+rcx]
        mul qword ptr [232+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [224+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [216+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [208+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [80+rcx]
        mul qword ptr [200+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [88+rcx]
        mul qword ptr [192+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [96+rcx]
        mul qword ptr [184+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [104+rcx]
        mul qword ptr [176+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [112+rcx]
        mul qword ptr [168+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [120+rcx]
        mul qword ptr [160+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [128+rcx]
        mul qword ptr [152+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [136+rcx]
        mul qword ptr [144+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        add r12, rsi
        adc r9, r8
        adc r13, rdi
        add r12, rsi
        adc r9, r8
        adc r13, rdi
        mov qword ptr [-264+rbp], r12
        mov rax, qword ptr [40+rcx]
        mul qword ptr [248+rcx]
        mov rsi, rax
        mov r8, rdx
        xor rdi, rdi
        mov rax, qword ptr [48+rcx]
        mul qword ptr [240+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [56+rcx]
        mul qword ptr [232+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [224+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [216+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [80+rcx]
        mul qword ptr [208+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [88+rcx]
        mul qword ptr [200+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [96+rcx]
        mul qword ptr [192+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [104+rcx]
        mul qword ptr [184+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [112+rcx]
        mul qword ptr [176+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [120+rcx]
        mul qword ptr [168+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [128+rcx]
        mul qword ptr [160+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [136+rcx]
        mul qword ptr [152+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, r13
        mov rdx, r10
        mov rbx, r8
        mov r12, rdi
        add r9, rsi
        adc rax, rbx
        adc rdx, r12
        add r9, rsi
        adc rax, rbx
        adc rdx, r12
        mov rdi, rdx
        mov r11, r12
        mov r8, rbx
        mov r12, rax
        mov r13, rdi
        mov rdi, r11
        mov rax, qword ptr [144+rcx]
        mul rax
        add r9, rax
        adc r12, rdx
        adc r13, 0
        mov r11, r10
        mov qword ptr [-256+rbp], r9
        mov r9, r13
        mov rax, qword ptr [48+rcx]
        mul qword ptr [248+rcx]
        mov rsi, rax
        mov r8, rdx
        xor rdi, rdi
        mov rax, qword ptr [56+rcx]
        mul qword ptr [240+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [64+rcx]
        mul qword ptr [232+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [224+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [80+rcx]
        mul qword ptr [216+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [88+rcx]
        mul qword ptr [208+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [96+rcx]
        mul qword ptr [200+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [104+rcx]
        mul qword ptr [192+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [112+rcx]
        mul qword ptr [184+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [120+rcx]
        mul qword ptr [176+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [128+rcx]
        mul qword ptr [168+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [136+rcx]
        mul qword ptr [160+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [144+rcx]
        mul qword ptr [152+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        add r12, rsi
        adc r9, r8
        adc r11, rdi
        add r12, rsi
        adc r9, r8
        adc r11, rdi
        mov qword ptr [-248+rbp], r12
        mov r13, r11
        mov rax, qword ptr [56+rcx]
        mul qword ptr [248+rcx]
        mov rsi, rax
        mov r8, rdx
        xor rdi, rdi
        mov rax, qword ptr [64+rcx]
        mul qword ptr [240+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [72+rcx]
        mul qword ptr [232+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [80+rcx]
        mul qword ptr [224+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [88+rcx]
        mul qword ptr [216+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [96+rcx]
        mul qword ptr [208+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [104+rcx]
        mul qword ptr [200+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [112+rcx]
        mul qword ptr [192+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [120+rcx]
        mul qword ptr [184+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [128+rcx]
        mul qword ptr [176+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [136+rcx]
        mul qword ptr [168+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [144+rcx]
        mul qword ptr [160+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, r10
        mov rdx, rsi
        mov rbx, r8
        mov r12, rdi
        add r9, rdx
        adc r13, rbx
        adc rax, r12
        add r9, rdx
        adc r13, rbx
        adc rax, r12
        mov r11, r12
        mov r8, rdx
        mov rdx, rax
        mov r12, r13
        mov rdi, rbx
        mov r13, rdx
        mov rsi, r11
        mov rax, qword ptr [152+rcx]
        mul rax
        add r9, rax
        adc r12, rdx
        adc r13, 0
        mov qword ptr [-240+rbp], r9
        mov r9, r13
        mov r13, r10
        mov rax, qword ptr [64+rcx]
        mul qword ptr [248+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [72+rcx]
        mul qword ptr [240+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [80+rcx]
        mul qword ptr [232+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [88+rcx]
        mul qword ptr [224+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [96+rcx]
        mul qword ptr [216+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [104+rcx]
        mul qword ptr [208+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [112+rcx]
        mul qword ptr [200+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [120+rcx]
        mul qword ptr [192+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [128+rcx]
        mul qword ptr [184+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [136+rcx]
        mul qword ptr [176+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [144+rcx]
        mul qword ptr [168+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [152+rcx]
        mul qword ptr [160+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, r8
        mov rdx, rdi
        mov rbx, rsi
        add r12, rax
        adc r9, rdx
        adc r13, rbx
        add r12, rax
        adc r9, rdx
        adc r13, rbx
        mov qword ptr [-232+rbp], r12
        mov r8, rdx
        mov rsi, rax
        mov rdi, rbx
        mov r12, r13
        mov r13, r10
        mov rax, qword ptr [72+rcx]
        mul qword ptr [248+rcx]
        mov rsi, rax
        mov r8, rdx
        xor rdi, rdi
        mov rax, qword ptr [80+rcx]
        mul qword ptr [240+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [88+rcx]
        mul qword ptr [232+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [96+rcx]
        mul qword ptr [224+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [104+rcx]
        mul qword ptr [216+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [112+rcx]
        mul qword ptr [208+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [120+rcx]
        mul qword ptr [200+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [128+rcx]
        mul qword ptr [192+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [136+rcx]
        mul qword ptr [184+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [144+rcx]
        mul qword ptr [176+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [152+rcx]
        mul qword ptr [168+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, rsi
        mov rbx, r8
        mov rdx, rdi
        add r9, rax
        adc r12, rbx
        adc r13, rdx
        add r9, rax
        adc r12, rbx
        adc r13, rdx
        mov r11, rdx
        mov r8, rax
        mov rdi, rbx
        mov rax, qword ptr [160+rcx]
        mul rax
        add r9, rax
        adc r12, rdx
        adc r13, 0
        mov rsi, r11
        mov qword ptr [-224+rbp], r9
        mov r9, r13
        mov rax, qword ptr [80+rcx]
        mul qword ptr [248+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov r13, r10
        mov rax, qword ptr [88+rcx]
        mul qword ptr [240+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [96+rcx]
        mul qword ptr [232+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [104+rcx]
        mul qword ptr [224+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [112+rcx]
        mul qword ptr [216+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [120+rcx]
        mul qword ptr [208+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [128+rcx]
        mul qword ptr [200+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [136+rcx]
        mul qword ptr [192+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [144+rcx]
        mul qword ptr [184+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [152+rcx]
        mul qword ptr [176+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [160+rcx]
        mul qword ptr [168+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rbx, r8
        mov rax, rdi
        mov rdx, rsi
        add r12, rbx
        adc r9, rax
        adc r13, rdx
        add r12, rbx
        adc r9, rax
        adc r13, rdx
        mov qword ptr [-216+rbp], r12
        mov rdi, rdx
        mov r8, rax
        mov rsi, rbx
        mov r12, r13
        mov r13, r10
        mov rax, qword ptr [88+rcx]
        mul qword ptr [248+rcx]
        mov rsi, rax
        mov r8, rdx
        xor rdi, rdi
        mov rax, qword ptr [96+rcx]
        mul qword ptr [240+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [104+rcx]
        mul qword ptr [232+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [112+rcx]
        mul qword ptr [224+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [120+rcx]
        mul qword ptr [216+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [128+rcx]
        mul qword ptr [208+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [136+rcx]
        mul qword ptr [200+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [144+rcx]
        mul qword ptr [192+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [152+rcx]
        mul qword ptr [184+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [160+rcx]
        mul qword ptr [176+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, rsi
        mov rbx, r8
        mov rdx, rdi
        add r9, rax
        adc r12, rbx
        adc r13, rdx
        add r9, rax
        adc r12, rbx
        adc r13, rdx
        mov r11, rdx
        mov r8, rax
        mov rdi, rbx
        mov rax, qword ptr [168+rcx]
        mul rax
        add r9, rax
        adc r12, rdx
        adc r13, 0
        mov rsi, r11
        mov qword ptr [-208+rbp], r9
        mov r9, r13
        mov rax, qword ptr [96+rcx]
        mul qword ptr [248+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov r13, r10
        mov rax, qword ptr [104+rcx]
        mul qword ptr [240+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [112+rcx]
        mul qword ptr [232+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [120+rcx]
        mul qword ptr [224+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [128+rcx]
        mul qword ptr [216+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [136+rcx]
        mul qword ptr [208+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [144+rcx]
        mul qword ptr [200+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [152+rcx]
        mul qword ptr [192+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [160+rcx]
        mul qword ptr [184+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [168+rcx]
        mul qword ptr [176+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rbx, r8
        mov rax, rdi
        mov rdx, rsi
        add r12, rbx
        adc r9, rax
        adc r13, rdx
        add r12, rbx
        adc r9, rax
        adc r13, rdx
        mov qword ptr [-200+rbp], r12
        mov rdi, rdx
        mov r8, rax
        mov rsi, rbx
        mov r12, r13
        mov r13, r10
        mov rax, qword ptr [104+rcx]
        mul qword ptr [248+rcx]
        mov rsi, rax
        mov r8, rdx
        xor rdi, rdi
        mov rax, qword ptr [112+rcx]
        mul qword ptr [240+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [120+rcx]
        mul qword ptr [232+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [128+rcx]
        mul qword ptr [224+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [136+rcx]
        mul qword ptr [216+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [144+rcx]
        mul qword ptr [208+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [152+rcx]
        mul qword ptr [200+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [160+rcx]
        mul qword ptr [192+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [168+rcx]
        mul qword ptr [184+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, rsi
        mov rbx, r8
        mov rdx, rdi
        add r9, rax
        adc r12, rbx
        adc r13, rdx
        add r9, rax
        adc r12, rbx
        adc r13, rdx
        mov r11, rdx
        mov r8, rax
        mov rdi, rbx
        mov rax, qword ptr [176+rcx]
        mul rax
        add r9, rax
        adc r12, rdx
        adc r13, 0
        mov rsi, r11
        mov qword ptr [-192+rbp], r9
        mov r9, r13
        mov rax, qword ptr [112+rcx]
        mul qword ptr [248+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov r13, r10
        mov rax, qword ptr [120+rcx]
        mul qword ptr [240+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [128+rcx]
        mul qword ptr [232+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [136+rcx]
        mul qword ptr [224+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [144+rcx]
        mul qword ptr [216+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [152+rcx]
        mul qword ptr [208+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [160+rcx]
        mul qword ptr [200+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [168+rcx]
        mul qword ptr [192+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [176+rcx]
        mul qword ptr [184+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rbx, r8
        mov rax, rdi
        mov rdx, rsi
        add r12, rbx
        adc r9, rax
        adc r13, rdx
        add r12, rbx
        adc r9, rax
        adc r13, rdx
        mov qword ptr [-184+rbp], r12
        mov rdi, rdx
        mov r8, rax
        mov rsi, rbx
        mov r12, r13
        mov r13, r10
        mov rax, qword ptr [120+rcx]
        mul qword ptr [248+rcx]
        mov rsi, rax
        mov r8, rdx
        xor rdi, rdi
        mov rax, qword ptr [128+rcx]
        mul qword ptr [240+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [136+rcx]
        mul qword ptr [232+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [144+rcx]
        mul qword ptr [224+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [152+rcx]
        mul qword ptr [216+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [160+rcx]
        mul qword ptr [208+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [168+rcx]
        mul qword ptr [200+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, qword ptr [176+rcx]
        mul qword ptr [192+rcx]
        add rsi, rax
        adc r8, rdx
        adc rdi, 0
        mov rax, rsi
        mov rbx, r8
        mov rdx, rdi
        add r9, rax
        adc r12, rbx
        adc r13, rdx
        add r9, rax
        adc r12, rbx
        adc r13, rdx
        mov r11, rdx
        mov r8, rax
        mov rdi, rbx
        mov rax, qword ptr [184+rcx]
        mul rax
        add r9, rax
        adc r12, rdx
        adc r13, 0
        mov rsi, r11
        mov qword ptr [-176+rbp], r9
        mov r9, r13
        mov rax, qword ptr [128+rcx]
        mul qword ptr [248+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov r13, r10
        mov rax, qword ptr [136+rcx]
        mul qword ptr [240+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [144+rcx]
        mul qword ptr [232+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [152+rcx]
        mul qword ptr [224+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [160+rcx]
        mul qword ptr [216+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [168+rcx]
        mul qword ptr [208+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [176+rcx]
        mul qword ptr [200+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [184+rcx]
        mul qword ptr [192+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        add r12, r8
        adc r9, rdi
        adc r13, rsi
        add r12, r8
        adc r9, rdi
        adc r13, rsi
        mov qword ptr [-168+rbp], r12
        mov r12, r13
        mov r13, r10
        mov rax, qword ptr [136+rcx]
        mul qword ptr [248+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [144+rcx]
        mul qword ptr [240+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [152+rcx]
        mul qword ptr [232+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [160+rcx]
        mul qword ptr [224+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [168+rcx]
        mul qword ptr [216+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [176+rcx]
        mul qword ptr [208+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [184+rcx]
        mul qword ptr [200+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rbx, rdi
        mov rax, rsi
        add r9, r8
        adc r12, rbx
        adc r13, rax
        add r9, r8
        adc r12, rbx
        adc r13, rax
        mov r11, rax
        mov rdi, rbx
        mov rbx, r10
        mov rax, qword ptr [192+rcx]
        mul rax
        add r9, rax
        adc r12, rdx
        adc r13, 0
        mov rsi, r11
        mov qword ptr [-160+rbp], r9
        mov r9, r13
        mov rax, qword ptr [144+rcx]
        mul qword ptr [248+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [152+rcx]
        mul qword ptr [240+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [160+rcx]
        mul qword ptr [232+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [168+rcx]
        mul qword ptr [224+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [176+rcx]
        mul qword ptr [216+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [184+rcx]
        mul qword ptr [208+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [192+rcx]
        mul qword ptr [200+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        add r12, r8
        adc r9, rdi
        adc rbx, rsi
        add r12, r8
        adc r9, rdi
        adc rbx, rsi
        mov qword ptr [-152+rbp], r12
        mov rax, qword ptr [152+rcx]
        mul qword ptr [248+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [160+rcx]
        mul qword ptr [240+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [168+rcx]
        mul qword ptr [232+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [176+rcx]
        mul qword ptr [224+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [184+rcx]
        mul qword ptr [216+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [192+rcx]
        mul qword ptr [208+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rdx, r10
        mov r13, rdi
        mov r12, rsi
        add r9, r8
        adc rbx, r13
        adc rdx, r12
        add r9, r8
        adc rbx, r13
        adc rdx, r12
        mov rax, rdx
        mov rdi, r13
        mov rsi, r12
        mov r11, rax
        mov r12, r10
        mov rax, qword ptr [200+rcx]
        mul rax
        add r9, rax
        adc rbx, rdx
        adc r11, 0
        mov qword ptr [-144+rbp], r9
        mov r9, r11
        mov rax, qword ptr [160+rcx]
        mul qword ptr [248+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [168+rcx]
        mul qword ptr [240+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [176+rcx]
        mul qword ptr [232+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [184+rcx]
        mul qword ptr [224+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [192+rcx]
        mul qword ptr [216+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [200+rcx]
        mul qword ptr [208+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        add rbx, r8
        adc r9, rdi
        adc r12, rsi
        add rbx, r8
        adc r9, rdi
        adc r12, rsi
        mov qword ptr [-136+rbp], rbx
        mov r11, r12
        mov rax, qword ptr [168+rcx]
        mul qword ptr [248+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [176+rcx]
        mul qword ptr [240+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [184+rcx]
        mul qword ptr [232+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [192+rcx]
        mul qword ptr [224+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [200+rcx]
        mul qword ptr [216+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, r10
        mov r13, rdi
        mov r12, rsi
        add r9, r8
        adc r11, r13
        adc rax, r12
        add r9, r8
        adc r11, r13
        adc rax, r12
        mov rdx, rax
        mov rbx, r11
        mov rdi, r13
        mov r11, rdx
        mov rsi, r12
        mov rax, qword ptr [208+rcx]
        mul rax
        add r9, rax
        adc rbx, rdx
        adc r11, 0
        mov qword ptr [-128+rbp], r9
        mov r9, r11
        mov rax, qword ptr [176+rcx]
        mul qword ptr [248+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [184+rcx]
        mul qword ptr [240+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [192+rcx]
        mul qword ptr [232+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [200+rcx]
        mul qword ptr [224+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [208+rcx]
        mul qword ptr [216+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rdx, r10
        add rbx, r8
        adc r9, rdi
        adc rdx, rsi
        add rbx, r8
        adc r9, rdi
        adc rdx, rsi
        mov qword ptr [-120+rbp], rbx
        mov r11, rdx
        mov rbx, r10
        mov rax, qword ptr [184+rcx]
        mul qword ptr [248+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [192+rcx]
        mul qword ptr [240+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [200+rcx]
        mul qword ptr [232+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [208+rcx]
        mul qword ptr [224+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov r13, rdi
        mov r12, rsi
        add r9, r8
        adc r11, r13
        adc rbx, r12
        add r9, r8
        adc r11, r13
        adc rbx, r12
        mov rdx, rbx
        mov rdi, r13
        mov rbx, r11
        mov rsi, r12
        mov r11, rdx
        mov r12, r10
        mov rax, qword ptr [216+rcx]
        mul rax
        add r9, rax
        adc rbx, rdx
        adc r11, 0
        mov qword ptr [-112+rbp], r9
        mov r9, r11
        mov rax, qword ptr [192+rcx]
        mul qword ptr [248+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [200+rcx]
        mul qword ptr [240+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [208+rcx]
        mul qword ptr [232+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [216+rcx]
        mul qword ptr [224+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        add rbx, r8
        adc r9, rdi
        adc r12, rsi
        add rbx, r8
        adc r9, rdi
        adc r12, rsi
        mov qword ptr [-104+rbp], rbx
        mov r11, r12
        mov rax, qword ptr [200+rcx]
        mul qword ptr [248+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [208+rcx]
        mul qword ptr [240+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [216+rcx]
        mul qword ptr [232+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, r10
        mov r13, rdi
        mov r12, rsi
        add r9, r8
        adc r11, r13
        adc rax, r12
        add r9, r8
        adc r11, r13
        adc rax, r12
        mov rdx, rax
        mov rbx, r11
        mov rdi, r13
        mov r11, rdx
        mov rsi, r12
        mov r12, r10
        mov rax, qword ptr [224+rcx]
        mul rax
        add r9, rax
        adc rbx, rdx
        adc r11, 0
        mov qword ptr [-96+rbp], r9
        mov r9, r10
        mov rax, qword ptr [208+rcx]
        mul qword ptr [248+rcx]
        mov r8, rax
        mov rdi, rdx
        xor rsi, rsi
        mov rax, qword ptr [216+rcx]
        mul qword ptr [240+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov rax, qword ptr [224+rcx]
        mul qword ptr [232+rcx]
        add r8, rax
        adc rdi, rdx
        adc rsi, 0
        mov r13, rdi
        mov rax, rsi
        add rbx, r8
        adc r11, r13
        adc r9, rax
        add rbx, r8
        adc r11, r13
        adc r9, rax
        mov qword ptr [-88+rbp], rbx
        mov rsi, r11
        mov r8, r9
        mov rax, qword ptr [216+rcx]
        mul qword ptr [248+rcx]
        add rsi, rax
        adc r8, rdx
        adc r12, 0
        add rsi, rax
        adc r8, rdx
        adc r12, 0
        mov r11, r12
        mov rax, qword ptr [224+rcx]
        mul qword ptr [240+rcx]
        add rsi, rax
        adc r8, rdx
        adc r11, 0
        add rsi, rax
        adc r8, rdx
        adc r11, 0
        mov r13, r8
        mov rbx, r11
        mov rax, qword ptr [232+rcx]
        mul rax
        add rsi, rax
        adc r13, rdx
        adc rbx, 0
        mov qword ptr [-80+rbp], rsi
        mov r12, rbx
        mov rdi, r13
        mov r13, r10
        mov rax, qword ptr [224+rcx]
        mul qword ptr [248+rcx]
        add rdi, rax
        adc r12, rdx
        adc r13, 0
        add rdi, rax
        adc r12, rdx
        adc r13, 0
        mov r9, r12
        mov r12, r13
        mov rax, qword ptr [232+rcx]
        mul qword ptr [240+rcx]
        add rdi, rax
        adc r9, rdx
        adc r12, 0
        add rdi, rax
        adc r9, rdx
        adc r12, 0
        mov qword ptr [-72+rbp], rdi
        mov r11, r9
        mov rbx, r12
        mov r9, r10
        mov rax, qword ptr [232+rcx]
        mul qword ptr [248+rcx]
        add r11, rax
        adc rbx, rdx
        adc r9, 0
        add r11, rax
        adc rbx, rdx
        adc r9, 0
        mov r13, rbx
        mov rbx, r9
        mov r9, r10
        mov rax, qword ptr [240+rcx]
        mul rax
        add r11, rax
        adc r13, rdx
        adc rbx, 0
        mov qword ptr [-64+rbp], r11
        mov rdi, r13
        mov rsi, rbx
        mov rax, qword ptr [240+rcx]
        mul qword ptr [248+rcx]
        add rdi, rax
        adc rsi, rdx
        adc r9, 0
        add rdi, rax
        adc rsi, rdx
        adc r9, 0
        mov qword ptr [-56+rbp], rdi
        mov r8, r9
        mov rax, qword ptr [248+rcx]
        mul rax
        add rsi, rax
        adc r8, rdx
        adc r10, 0
        mov qword ptr [-48+rbp], rsi
        mov qword ptr [-40+rbp], r8
        mov dword ptr [8+r14], 64
        mov dword ptr [r14], 0
;        mov rdi, qword ptr [16+r14]
;        lea rsi, qword ptr [-544+rbp]
;        mov edx, 512
        mov rcx, qword ptr [16+r14]
        lea rdx, qword ptr [-544+rbp]
        mov r8d, 512
        call memcpy
        mov edx, dword ptr [8+r14]
        test edx, edx
        je L304
        lea ecx, dword ptr [-1+rdx]
        mov rsi, qword ptr [16+r14]
        mov r10d, ecx
        cmp dword ptr [rsi+r10*8], 0
        jne L302
        mov edx, ecx
        ALIGN 16
L303:
        test edx, edx
        mov ecx, edx
        je L307
        dec edx
        mov eax, edx
        cmp dword ptr [rsi+rax*8], 0
        je L303
        mov dword ptr [8+r14], ecx
        mov edx, ecx
L302:
        test edx, edx
        je L304
        mov eax, dword ptr [r14]
        jmp L305

L307:
        mov dword ptr [8+r14], edx
L304:
        xor eax, eax
L305:
        mov dword ptr [r14], eax
        add rsp, 512+32			; +32 for "home" storage
        pop rbx
        pop r12
        pop r13
        pop r14
        pop rbp

        pop rsi
        pop rdi

        ret

s_mp_sqr_comba_32 ENDP

END
