; ------------------------------------------------------------------------
; HeavyThing x86_64 assembly language library and showcase programs
; Copyright © 2015-2018 2 Ton Digital
; Homepage: https://2ton.com.au/
; Author: Jeff Marrison <jeff@2ton.com.au>
;
; This file is part of the HeavyThing library.
;
; HeavyThing is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License, or
; (at your option) any later version.
;
; HeavyThing is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License along
; with the HeavyThing library. If not, see <http://www.gnu.org/licenses/>.
; ------------------------------------------------------------------------
; ed25519.inc: Implementation of the SSE2 public domain variant at
; https://github.com/floodyberry/ed25519-donna
;
; To generate a private key, use one of the CSPRNG methods to generate
; 32 bytes.
;
; To generate a public key, use ed25519$publickey
;
; To sign a message, use ed25519$sign
;
; To verify a signature, use ed25519$verify
;
if used ed25519$publickey | defined include_everything
; two arguments: rdi == ptr to 32 byte private key, rsi == ptr to 32 byte public key (output)
falign
ed25519$publickey:
prolog ed25519$publickey
push r12 r13
sub rsp, sha512_state_size + 80
mov rax, rsp
and rax, 0xf
sub rsp, rax
mov [rsp+sha512_state_size+64], rax
mov r12, rdi
mov r13, rsi
mov rdi, rsp
call sha512$init
mov rdi, rsp
mov rsi, r12
mov edx, 32
call sha512$update
mov rdi, rsp
lea rsi, [rsp+sha512_state_size]
xor edx, edx
call sha512$final
and byte [rsp+sha512_state_size], 0xf8
movzx eax, byte [rsp+sha512_state_size+31]
mov rdi, rsp
lea rsi, [rsp+sha512_state_size]
and eax, 0x7f
or eax, 0x40
mov byte [rsp+sha512_state_size+31], al
call ed25519$expand256_modm32
; rsp == a, nothing else in use
lea rdi, [rsp+64]
mov rsi, rsp
call ed25519$scalarmult
mov rdi, r13
lea rsi, [rsp+64]
call ed25519$pack
mov rcx, [rsp+sha512_state_size+64]
add rsp, rcx
add rsp, sha512_state_size + 80
pop r13 r12
epilog
end if
if used ed25519$sign | defined include_everything
; five arguments: rdi == ptr to message, rsi == length of same, rdx == ptr to 32 byte secret key, rcx == ptr to 32 byte public key, r8 == ptr to signature (output of 64 bytes)
falign
ed25519$sign:
prolog ed25519$sign
push rbx r12 r13 r14
sub rsp, sha512_state_size + 0x200
mov rbx, r8
mov r12, rcx
mov r13, rdi
mov r14, rsi
mov rdi, rsp
push rdx
call sha512$init
pop rsi
mov rdi, rsp
mov edx, 32
call sha512$update
mov rdi, rsp
lea rsi, [rsp+sha512_state_size]
xor edx, edx
call sha512$final
and byte [rsp+sha512_state_size], 0xf8
movzx eax, byte [rsp+sha512_state_size+31]
mov rdi, rsp
lea rsi, [rsp+sha512_state_size+32]
and eax, 0x7f
mov edx, 32
or eax, 0x40
mov byte [rsp+sha512_state_size+31], al
call sha512$update
mov rdi, rsp
mov rsi, r13
mov rdx, r14
call sha512$update
mov rdi, rsp
lea rsi, [rsp+sha512_state_size+0x40]
xor edx, edx
call sha512$final
lea rdi, [rsp+sha512_state_size+0x80]
lea rsi, [rsp+sha512_state_size+0x40]
call ed25519$expand256_modm64
; done w/ 0x40 now, can reuse it
lea rdi, [rsp+sha512_state_size+0xb0]
lea rsi, [rsp+sha512_state_size+0x80]
call ed25519$scalarmult
mov rdi, rbx
lea rsi, [rsp+sha512_state_size+0xb0]
call ed25519$pack
; hram
mov rdi, rsp
mov rsi, rbx ; first half of output
mov edx, 32
call sha512$update
mov rdi, rsp
mov rsi, r12 ; public key
mov edx, 32
call sha512$update
mov rdi, rsp
mov rsi, r13 ; message
mov rdx, r14
call sha512$update
mov rdi, rsp
lea rsi, [rsp+sha512_state_size+0x40]
xor edx, edx
call sha512$final
lea rdi, [rsp+sha512_state_size+0x1a0]
lea rsi, [rsp+sha512_state_size+0x40]
call ed25519$expand256_modm64
lea rdi, [rsp+sha512_state_size+0x1d0]
lea rsi, [rsp+sha512_state_size]
call ed25519$expand256_modm32
lea rdi, [rsp+sha512_state_size+0x1a0]
lea rsi, [rsp+sha512_state_size+0x1a0]
lea rdx, [rsp+sha512_state_size+0x1d0]
call ed25519$mul256_modm
lea rdi, [rsp+sha512_state_size+0x1a0]
lea rsi, [rsp+sha512_state_size+0x1a0]
lea rdx, [rsp+sha512_state_size+0x80]
call ed25519$add256_modm
lea rdi, [rbx+32]
lea rsi, [rsp+sha512_state_size+0x1a0]
call ed25519$contract256_modm
lea rdi, [rsp+sha512_state_size]
xor esi, esi
mov edx, 0x200
call memset32
add rsp, sha512_state_size + 0x200
pop r14 r13 r12 rbx
epilog
end if
if used ed25519$verify | defined include_everything
; four arguments: rdi == ptr to message, rsi == length of same, rdx == ptr to 32 byte public key, rcx == ptr to signature
; returns bool in eax (0 == verify fail)
falign
ed25519$verify:
prolog ed25519$verify
push rbp rbx r12 r13 r14 r15
sub rsp, 0xe00
mov r8, rsp
and r8, 0xf
sub rsp, r8
xor eax, eax
test byte [rcx+63], 224
jnz .bailout
mov [rsp+0xdd8], rdi ; ptr to message
mov [rsp+0xde0], rsi ; message length
mov [rsp+0xde8], rdx ; public key
mov [rsp+0xdf0], rcx ; signature we are verifying
mov [rsp+0xdf8], r8 ; stack modifier
; unpack first up
mov rsi, rdx
lea rbp, [rsp+0x240]
lea rbx, [rsp+0x210]
; this is unpack_negative_vartime
mov r11d, [rsi]
mov r10d, [rsi+0x4]
mov r9d, [rsi+0x8]
mov ecx, [rsi+0x18]
mov edi, [rsi+0x10]
mov edx, [rsi+0x1c]
mov r8d, [rsi+0xc]
mov r13d, [rsi+0x14]
mov eax, r11d
movzx r12d, byte [rsi+0x1f]
mov rsi, rbp
and eax, 0x3ffffff
movaps xmm0, [.one]
mov [rbx+0x30], eax
mov rax, r10
mov dword [rbx+0x58], 0x0
shl rax, 0x20
mov dword [rbx+0x5c], 0x0
or rax, r11
shr rax, 0x1a
and eax, 0x1ffffff
mov [rbx+0x34], eax
mov rax, r9
shl rax, 0x20
or rax, r10
shr rax, 0x13
and eax, 0x3ffffff
mov [rbx+0x38], eax
mov rax, r8
shr r8d, 0x6
shl rax, 0x20
mov [rbx+0x40], r8d
or rax, r9
shr rax, 0xd
and eax, 0x1ffffff
mov [rbx+0x3c], eax
mov eax, edi
and eax, 0x1ffffff
mov [rbx+0x44], eax
mov rax, r13
shl rax, 0x20
or rax, rdi
lea rdi, [rsp+0x70]
shr rax, 0x19
and eax, 0x3ffffff
mov [rbx+0x48], eax
mov rax, rcx
shl rax, 0x20
or rax, r13
shr rax, 0x13
and eax, 0x1ffffff
mov [rbx+0x4c], eax
mov rax, rdx
shl rax, 0x20
or rax, rcx
movaps [rbx+0x60], xmm0
shr rax, 0xc
and eax, 0x3ffffff
movaps xmm0, [.one+0x10]
mov [rbx+0x50], eax
mov eax, edx
movaps [rbx+0x70], xmm0
shr eax, 0x6
and eax, 0x1ffffff
movaps xmm0, [.one+0x20]
mov [rbx+0x54], eax
movaps [rbx+0x80], xmm0
mov edx, 1
call curve25519$square_times
lea rsi, [rsp+0x70]
lea rdi, [rsp+0xa0]
mov edx, .ge25519_ecd
call curve25519$mul
movaps xmm10, [rbx+0x60]
lea rsi, [rsp+0xa0]
lea rdi, [rsp+0x40]
movaps xmm1, [ed25519$packed2p0]
movaps xmm9, [rbx+0x70]
paddd xmm1, [rsp+0x70]
psubd xmm1, xmm10
movaps xmm0, xmm1
paddd xmm10, [rsp+0xa0]
movaps xmm2, [ed25519$packed2p1]
paddd xmm2, [rsp+0x80]
psubd xmm2, xmm9
punpcklqdq xmm0, xmm2
punpckhqdq xmm1, xmm2
movaps xmm8, [rbx+0x80]
paddd xmm9, [rsp+0xb0]
pxor xmm2, xmm2
movaps xmm5, [ed25519$packed2p2]
movaps xmm4, [ed25519$sse2_bot32bitmask]
paddd xmm5, [rsp+0x90]
psubd xmm5, xmm8
punpcklqdq xmm2, xmm5
paddd xmm8, [rsp+0xc0]
movaps xmm3, [ed25519$sse2_bot32bitmask]
pand xmm4, xmm0
psrlq xmm0, 0x20
pand xmm3, xmm1
psrlq xmm1, 0x20
movaps xmm6, [ed25519$sse2_bot32bitmask]
movaps xmm5, xmm2
movaps xmm11, xmm4
pand xmm6, xmm2
movaps xmm2, [ed25519$packedmask26]
psrlq xmm5, 0x20
movaps xmm7, xmm3
psrlq xmm11, 0x1a
paddq xmm0, xmm11
pand xmm3, xmm2
movaps xmm11, xmm0
psrlq xmm7, 0x1a
paddq xmm1, xmm7
movaps xmm7, xmm1
psrlq xmm11, 0x19
pand xmm4, xmm2
psrlq xmm7, 0x19
paddq xmm3, xmm11
paddq xmm6, xmm7
movaps xmm11, xmm7
movaps xmm7, xmm6
pand xmm0, [ed25519$packedmask25]
pslldq xmm11, 0x8
movaps [rsp+0xa0], xmm10
psrlq xmm7, 0x1a
paddq xmm5, xmm7
movaps xmm7, xmm5
pand xmm6, xmm2
psrlq xmm7, 0x19
pmuludq xmm7, [ed25519$packednineteen]
punpckhqdq xmm7, xmm11
pand xmm1, [ed25519$packedmask25]
movaps [rsp+0xb0], xmm9
paddq xmm4, xmm7
movaps xmm7, xmm3
movaps xmm11, xmm4
pand xmm3, xmm2
pand xmm4, xmm2
psrlq xmm7, 0x1a
pand xmm5, [ed25519$packedmask25]
paddq xmm1, xmm7
psrlq xmm11, 0x1a
paddq xmm0, xmm11
movaps xmm11, xmm3
movaps xmm7, xmm4
punpckhdq xmm3, xmm1
punpckldq xmm11, xmm1
punpckldq xmm7, xmm0
punpckhdq xmm4, xmm0
punpckhdq xmm6, xmm5
punpcklqdq xmm7, xmm11
punpcklqdq xmm4, xmm3
movaps [rsp], xmm2
movaps [rsp+0x70], xmm7
movaps [rsp+0x80], xmm4
movaps [rsp+0x90], xmm6
movaps [rsp+0xc0], xmm8
; subreduce and add done
mov edx, 1
call curve25519$square_times
lea rdx, [rsp+0xa0]
lea rsi, [rsp+0x40]
lea rdi, [rsp+0xd0]
call curve25519$mul
lea rsi, [rsp+0xd0]
mov rdi, rbx
mov edx, 1
call curve25519$square_times
lea rdx, [rsp+0xa0]
mov rsi, rbx
mov rdi, rbx
call curve25519$mul
lea rdx, [rsp+0x70]
mov rsi, rbx
mov rdi, rbx
call curve25519$mul
; begin curve25519_pow_two252m3(r->x, r->x)
lea rdi, [rsp+0x130]
mov rsi, rbx
mov edx, 1
call curve25519$square_times
lea rsi, [rsp+0x130]
lea rdi, [rsp+0x160]
mov edx, 2
call curve25519$square_times
lea rsi, [rsp+0x160]
lea rdi, [rsp+0x100]
mov rdx, rbx
call curve25519$mul
lea rdx, [rsp+0x130]
lea rsi, [rsp+0x100]
mov rdi, rdx
call curve25519$mul
lea rsi, [rsp+0x130]
lea rdi, [rsp+0x160]
mov edx, 1
call curve25519$square_times
lea rdx, [rsp+0x100]
lea rsi, [rsp+0x160]
mov rdi, rdx
call curve25519$mul
; b ([rsp+0x100]) = 2^250 - 2^0
; begin pow_two5mtwo0_two250mtwo
; 2^10 - 2^5
lea rdi, [rsp+0x300]
lea rsi, [rsp+0x100]
mov edx, 5
call curve25519$square_times
; 2^10 - 2^0
lea rdi, [rsp+0x100]
lea rsi, [rsp+0x300]
lea rdx, [rsp+0x100]
call curve25519$mul
; 2^20 - 2^10
lea rdi, [rsp+0x300]
lea rsi, [rsp+0x100]
mov edx, 10
call curve25519$square_times
; 2^20 - 2^0
lea rdi, [rsp+0x330]
lea rsi, [rsp+0x300]
lea rdx, [rsp+0x100]
call curve25519$mul
; 2^40 - 2^20
lea rdi, [rsp+0x300]
lea rsi, [rsp+0x330]
mov edx, 20
call curve25519$square_times
; 2^40 - 2^0
lea rdi, [rsp+0x300]
lea rsi, [rsp+0x300]
lea rdx, [rsp+0x330]
call curve25519$mul
; 2^50 - 2^10
lea rdi, [rsp+0x300]
lea rsi, [rsp+0x300]
mov edx, 10
call curve25519$square_times
; 2^50 - 2^0
lea rdi, [rsp+0x100]
lea rsi, [rsp+0x300]
lea rdx, [rsp+0x100]
call curve25519$mul
; 2^100 - 2^50
lea rdi, [rsp+0x300]
lea rsi, [rsp+0x100]
mov edx, 50
call curve25519$square_times
; 2^100 - 2^0
lea rdi, [rsp+0x330]
lea rsi, [rsp+0x300]
lea rdx, [rsp+0x100]
call curve25519$mul
; 2^200 - 2^100
lea rdi, [rsp+0x300]
lea rsi, [rsp+0x330]
mov edx, 100
call curve25519$square_times
; 2^200 - 2^0
lea rdi, [rsp+0x300]
lea rsi, [rsp+0x300]
lea rdx, [rsp+0x330]
call curve25519$mul
; 2^250 - 2^50
lea rdi, [rsp+0x300]
lea rsi, [rsp+0x300]
mov edx, 50
call curve25519$square_times
; 2^250 - 2^0
lea rdi, [rsp+0x100]
lea rsi, [rsp+0x300]
lea rdx, [rsp+0x100]
call curve25519$mul
; end of pow_two5mtwo0_two250mtwo0
lea rsi, [rsp+0x100]
mov rdi, rsi
mov edx, 2
call curve25519$square_times
lea rsi, [rsp+0x100]
mov rdx, rbx
mov rdi, rbx
call curve25519$mul
; end of pow_two252m3
; /* 2. computation of r->x = t * num * den^3 */
lea rdx, [rsp+0xd0]
mov rsi, rbx
mov rdi, rbx
call curve25519$mul
lea rdx, [rsp+0x70]
mov rsi, rbx
mov rdi, rbx
call curve25519$mul
lea rdi, [rsp+0x40]
mov rsi, rbx
mov edx, 1
call curve25519$square_times
lea rsi, [rsp+0x40]
lea rdx, [rsp+0xa0]
mov rdi, rsi
call curve25519$mul
movaps xmm1, [ed25519$packed2p0]
lea rsi, [rsp+0x160]
pxor xmm2, xmm2
lea rdi, [rsp+0x130]
paddd xmm1, [rsp+0x40]
movaps xmm3, [ed25519$packed2p1]
psubd xmm1, [rsp+0x70]
movaps xmm0, xmm1
paddd xmm3, [rsp+0x50]
movaps xmm5, [ed25519$packed2p2]
psubd xmm3, [rsp+0x80]
punpcklqdq xmm0, xmm3
punpckhqdq xmm1, xmm3
movaps xmm4, [ed25519$sse2_bot32bitmask]
paddd xmm5, [rsp+0x60]
psubd xmm5, [rsp+0x90]
punpcklqdq xmm2, xmm5
movaps xmm3, [ed25519$sse2_bot32bitmask]
pand xmm4, xmm0
psrlq xmm0, 0x20
pand xmm3, xmm1
psrlq xmm1, 0x20
movaps xmm6, [ed25519$sse2_bot32bitmask]
movaps xmm5, xmm2
movaps xmm8, xmm4
pand xmm6, xmm2
movaps xmm2, [rsp]
psrlq xmm5, 0x20
movaps xmm7, xmm3
psrlq xmm8, 0x1a
paddq xmm0, xmm8
pand xmm3, xmm2
movaps xmm8, xmm0
psrlq xmm7, 0x1a
paddq xmm1, xmm7
movaps xmm7, xmm1
psrlq xmm8, 0x19
pand xmm4, xmm2
psrlq xmm7, 0x19
paddq xmm3, xmm8
paddq xmm6, xmm7
movaps xmm8, xmm7
movaps xmm7, xmm6
pand xmm0, [ed25519$packedmask25]
pslldq xmm8, 0x8
movaps [rsp+0x10], xmm2
psrlq xmm7, 0x1a
paddq xmm5, xmm7
movaps xmm7, xmm5
pand xmm6, xmm2
psrlq xmm7, 0x19
pmuludq xmm7, [ed25519$packednineteen]
punpckhqdq xmm7, xmm8
pand xmm1, [ed25519$packedmask25]
paddq xmm4, xmm7
movaps xmm7, xmm3
movaps xmm8, xmm4
pand xmm3, xmm2
pand xmm4, xmm2
psrlq xmm7, 0x1a
pand xmm5, [ed25519$packedmask25]
paddq xmm1, xmm7
psrlq xmm8, 0x1a
paddq xmm0, xmm8
movaps xmm8, xmm3
movaps xmm7, xmm4
punpckhdq xmm3, xmm1
punpckldq xmm8, xmm1
punpckldq xmm7, xmm0
punpckhdq xmm4, xmm0
punpckhdq xmm6, xmm5
punpcklqdq xmm7, xmm8
punpcklqdq xmm4, xmm3
movaps [rsp+0x180], xmm6
movaps [rsp+0x160], xmm7
movaps [rsp+0x170], xmm4
call curve25519$contract
pxor xmm4, xmm4
pxor xmm3, xmm3
movaps xmm10, [.zero]
pxor xmm1, xmm1
pxor xmm10, [rsp+0x130]
movaps xmm6, [.zero+0x10]
pxor xmm6, [rsp+0x140]
movaps xmm2, xmm10
punpckhbw xmm10, xmm4
punpcklbw xmm2, xmm4
movaps xmm12, xmm2
punpcklwd xmm2, xmm3
punpckhwd xmm12, xmm3
movaps xmm5, xmm2
movaps xmm2, xmm10
punpckhwd xmm10, xmm3
punpcklwd xmm2, xmm3
movaps xmm11, xmm2
movaps xmm2, xmm6
punpckhbw xmm6, xmm4
punpcklbw xmm2, xmm4
movaps xmm8, xmm2
punpcklwd xmm2, xmm3
punpckhwd xmm8, xmm3
movaps xmm9, xmm2
movaps xmm2, xmm6
punpckhwd xmm6, xmm3
punpcklwd xmm2, xmm3
movaps xmm7, xmm2
movaps xmm2, xmm12
punpckhdq xmm12, xmm1
punpckldq xmm2, xmm1
movaps xmm13, xmm2
movaps xmm2, xmm5
punpckldq xmm5, xmm1
punpckhdq xmm2, xmm1
movaps xmm0, xmm2
movaps xmm2, xmm11
punpckhdq xmm11, xmm1
por xmm0, xmm13
punpckldq xmm2, xmm1
por xmm0, xmm12
por xmm0, xmm2
movaps xmm2, xmm10
punpckhdq xmm10, xmm1
punpckldq xmm2, xmm1
por xmm0, xmm11
por xmm0, xmm2
movaps xmm2, xmm9
punpckhdq xmm9, xmm1
punpckldq xmm2, xmm1
por xmm0, xmm10
por xmm0, xmm2
movaps xmm2, xmm8
punpckhdq xmm8, xmm1
punpckldq xmm2, xmm1
por xmm0, xmm9
por xmm0, xmm2
movaps xmm2, xmm7
punpckhdq xmm7, xmm1
punpckldq xmm2, xmm1
por xmm0, xmm8
por xmm0, xmm2
movaps xmm2, xmm6
punpckhdq xmm6, xmm1
punpckldq xmm2, xmm1
por xmm0, xmm7
por xmm0, xmm2
movaps xmm2, [rsp+0x10]
por xmm0, xmm6
por xmm0, xmm5
movaps xmm6, xmm0
psrldq xmm6, 0x8
por xmm0, xmm6
movq [rsp], xmm0
mov rax, [rsp]
sub rax, 0x1
test ah, 0x1
jnz .unpack_verify_fail
movaps xmm5, [rsp+0x40]
lea rsi, [rsp+0x40]
lea rdi, [rsp+0x130]
paddd xmm5, [rsp+0x70]
movaps xmm6, [rsp+0x50]
movaps xmm0, xmm5
paddd xmm6, [rsp+0x80]
punpcklqdq xmm0, xmm6
punpckhqdq xmm5, xmm6
movaps xmm7, [ed25519$sse2_bot32bitmask]
movaps [rsp], xmm4
pxor xmm4, xmm4
pand xmm7, xmm0
psrlq xmm0, 0x20
movaps [rsp+0x30], xmm1
movaps xmm11, xmm7
pand xmm7, xmm2
movaps xmm6, [ed25519$sse2_bot32bitmask]
psrlq xmm11, 0x1a
paddq xmm0, xmm11
movaps xmm11, xmm0
pand xmm0, [ed25519$packedmask25]
movaps xmm8, [rsp+0x60]
pand xmm6, xmm5
psrlq xmm5, 0x20
psrlq xmm11, 0x19
paddd xmm8, [rsp+0x90]
punpcklqdq xmm4, xmm8
movaps xmm9, [ed25519$sse2_bot32bitmask]
movaps xmm10, xmm6
pand xmm9, xmm4
movaps xmm8, xmm4
pand xmm6, xmm2
psrlq xmm10, 0x1a
paddq xmm5, xmm10
movaps xmm10, xmm5
psrlq xmm8, 0x20
pand xmm5, [ed25519$packedmask25]
movaps [rsp+0x20], xmm3
psrlq xmm10, 0x19
paddq xmm6, xmm11
paddq xmm9, xmm10
movaps xmm11, xmm10
movaps xmm10, xmm9
pand xmm9, xmm2
pslldq xmm11, 0x8
psrlq xmm10, 0x1a
paddq xmm8, xmm10
movaps xmm10, xmm8
pand xmm8, [ed25519$packedmask25]
psrlq xmm10, 0x19
pmuludq xmm10, [ed25519$packednineteen]
punpckhqdq xmm10, xmm11
paddq xmm7, xmm10
movaps xmm10, xmm6
movaps xmm11, xmm7
pand xmm6, xmm2
pand xmm7, xmm2
psrlq xmm10, 0x1a
paddq xmm5, xmm10
psrlq xmm11, 0x1a
paddq xmm0, xmm11
punpckhdq xmm9, xmm8
movaps xmm11, xmm6
punpckhdq xmm6, xmm5
movaps xmm10, xmm7
punpckldq xmm11, xmm5
punpckldq xmm10, xmm0
punpckhdq xmm7, xmm0
movaps [rsp+0x60], xmm9
punpcklqdq xmm10, xmm11
punpcklqdq xmm7, xmm6
movaps [rsp+0x40], xmm10
movaps [rsp+0x50], xmm7
call curve25519$contract
movaps xmm8, [rsp+0x130]
pxor xmm8, [.zero]
movaps xmm4, [rsp]
movaps xmm3, [rsp+0x20]
movaps xmm5, xmm8
movaps xmm0, [rsp+0x140]
punpckhbw xmm8, xmm4
punpcklbw xmm5, xmm4
pxor xmm0, [.zero+0x10]
movaps xmm1, [rsp+0x30]
movaps xmm6, xmm8
movaps xmm10, xmm5
punpcklwd xmm5, xmm3
punpckhwd xmm10, xmm3
punpcklwd xmm6, xmm3
movaps xmm7, xmm5
movaps xmm5, xmm0
movaps xmm2, xmm10
punpckhbw xmm0, xmm4
movaps xmm9, xmm6
punpckldq xmm2, xmm1
punpcklbw xmm5, xmm4
movaps xmm6, xmm0
punpckhwd xmm0, xmm3
movaps xmm11, xmm2
movaps xmm2, xmm7
movaps xmm4, xmm5
punpckhwd xmm8, xmm3
punpckhdq xmm2, xmm1
punpcklwd xmm4, xmm3
punpckhwd xmm5, xmm3
punpcklwd xmm6, xmm3
movaps xmm3, xmm0
movaps xmm0, xmm2
punpckhdq xmm10, xmm1
movaps xmm2, xmm9
por xmm0, xmm11
punpckldq xmm2, xmm1
punpckhdq xmm9, xmm1
por xmm0, xmm10
punpckldq xmm7, xmm1
por xmm0, xmm2
movaps xmm2, xmm8
punpckhdq xmm8, xmm1
punpckldq xmm2, xmm1
por xmm0, xmm9
por xmm0, xmm2
movaps xmm2, xmm3
punpckldq xmm3, xmm1
por xmm0, xmm8
punpckhdq xmm2, xmm1
por xmm0, xmm7
por xmm0, xmm2
movaps xmm2, [rsp+0x10]
por xmm0, xmm3
movaps xmm3, xmm6
punpckldq xmm6, xmm1
punpckhdq xmm3, xmm1
por xmm0, xmm3
por xmm0, xmm6
movaps xmm6, xmm5
punpckldq xmm5, xmm1
punpckhdq xmm6, xmm1
por xmm0, xmm6
por xmm0, xmm5
movaps xmm5, xmm4
punpckldq xmm4, xmm1
punpckhdq xmm5, xmm1
por xmm0, xmm5
por xmm0, xmm4
movaps xmm4, xmm0
psrldq xmm4, 0x8
por xmm0, xmm4
movq [rsp], xmm0
mov rax, [rsp]
sub rax, 0x1
shr rax, 0x8
and eax, 0x1
jz .unpack_alldone
mov edx, .ge25519_sqrtneg1
mov rsi, rbx
mov rdi, rbx
movaps [rsp], xmm2
call curve25519$mul
movaps xmm2, [rsp]
.unpack_verify_fail: ; jumped to from above if first verify kakked
lea rdi, [rsp+0x130]
mov rsi, rbx
shr r12b, 0x7
movaps [rsp], xmm2
call curve25519$contract
movzx eax, byte [rsp+0x130]
movaps xmm2, [rsp]
and eax, 0x1
cmp r12b,al
je .unpack_copyneg
lea rdi, [rbx+0x90]
mov rdx, rbp
mov rsi, rbx
call curve25519$mul
mov eax, 0x1
jmp .unpack_alldone
align 16
.ge25519_ecd:
dd 0x035978a3,0x00d37284,0x03156ebd,0x006a0a0e,0x0001c029,0x0179e898,0x03a03cbb,0x01ce7198,0x02e2b6ff,0x01480db3
dq 0x0
align 16
.ge25519_sqrtneg1:
dd 0x020ea0b0,0x0186c9d2,0x008f189d,0x0035697f,0x00bd0c60,0x01fbd7a7,0x02804c9e,0x01e16569,0x0004fc1d,0x00ae0c92
dq 0x0
calign
.unpack_copyneg:
movaps xmm1, [rbx]
pxor xmm5, xmm5
movaps xmm4, [ed25519$packed2p0]
movaps xmm3, [rbx+0x10]
psubd xmm4, xmm1
movaps xmm0, [rbx+0x20]
movaps [rsp+0x40], xmm1
movaps xmm1, xmm4
movaps [rsp+0x50], xmm3
movaps [rsp+0x60], xmm0
movaps xmm4, [ed25519$packed2p1]
movaps xmm6, [ed25519$packed2p2]
psubd xmm4, xmm3
movaps xmm3, xmm4
psubd xmm6, xmm0
movaps xmm0, xmm1
punpcklqdq xmm5, xmm6
punpckhqdq xmm1, xmm3
punpcklqdq xmm0, xmm4
movaps xmm3, [ed25519$sse2_bot32bitmask]
movaps xmm4, [ed25519$sse2_bot32bitmask]
pand xmm3, xmm1
psrlq xmm1, 0x20
pand xmm4, xmm0
movaps xmm6, [ed25519$sse2_bot32bitmask]
psrlq xmm0, 0x20
movaps xmm7, xmm3
movaps xmm8, xmm4
pand xmm6, xmm5
psrlq xmm5, 0x20
pand xmm3, xmm2
psrlq xmm7, 0x1a
paddq xmm1, xmm7
psrlq xmm8, 0x1a
movaps xmm7, xmm1
paddq xmm0, xmm8
movaps xmm8, xmm0
pand xmm4, xmm2
psrlq xmm7, 0x19
paddq xmm6, xmm7
pand xmm1, [ed25519$packedmask25]
psrlq xmm8, 0x19
paddq xmm3, xmm8
movaps xmm8, xmm7
movaps xmm7, xmm6
pand xmm0, [ed25519$packedmask25]
pslldq xmm8, 0x8
psrlq xmm7, 0x1a
paddq xmm5, xmm7
movaps xmm7, xmm5
pand xmm6, xmm2
psrlq xmm7, 0x19
pmuludq xmm7, [ed25519$packednineteen]
punpckhqdq xmm7, xmm8
pand xmm5, [ed25519$packedmask25]
paddq xmm4, xmm7
movaps xmm8, xmm4
pand xmm4, xmm2
movaps xmm7, xmm3
pand xmm2, xmm3
psrlq xmm8, 0x1a
paddq xmm0, xmm8
psrlq xmm7, 0x1a
paddq xmm1, xmm7
punpckhdq xmm6, xmm5
movaps xmm3, xmm4
punpckhdq xmm4, xmm0
movaps xmm7, xmm2
punpckldq xmm3, xmm0
punpckldq xmm7, xmm1
punpckhdq xmm2, xmm1
movaps [rbx+0x20], xmm6
punpcklqdq xmm3, xmm7
punpcklqdq xmm4, xmm2
movaps [rbx], xmm3
movaps [rbx+0x10], xmm4
lea rdi, [rbx+0x90]
mov rdx, rbp
mov rsi, rbx
call curve25519$mul
mov eax, 0x1
; fallthrough to unpack_alldone
calign
.unpack_alldone:
mov rbp, [rsp+0xdd8]
mov r12, [rsp+0xde0]
mov rbx, [rsp+0xde8]
test eax, eax
jz .bailout
lea rdi, [rsp+0x710]
call sha512$init
mov r15, [rsp+0xdf0]
lea rdi, [rsp+0x710]
mov edx, 32
mov rsi, r15
call sha512$update
lea rdi, [rsp+0x710]
mov edx, 32
mov rsi, rbx
call sha512$update
lea rdi, [rsp+0x710]
mov rdx, r12
mov rsi, rbp
call sha512$update
lea rdi, [rsp+0x710]
lea rsi, [rsp+0x1d0]
xor edx, edx
call sha512$final
lea rdi, [rsp+0x140]
lea rsi, [rsp+0x1d0]
call ed25519$expand256_modm64
lea rdi, [rsp+0x170]
lea rsi, [r15+32]
call ed25519$expand256_modm32
; double_scalarmult_vartime...
lea rax, [rsp+0x510]
lea rdi, [rsp+0x140]
lea r8, [rax+0xe0]
.contract_modm_expandouter1:
mov rdx, [rdi]
lea rsi, [rax+0x38]
calign
.contract_modm_expandinner1:
add rax, 0x1
mov ecx, edx
shr rdx, 1
and ecx, 0x1
cmp rax, rsi
mov byte [rax-0x1], cl
jne .contract_modm_expandinner1
add rdi, 0x8
cmp rax, r8
jne .contract_modm_expandouter1
mov rdx, [rsp+0x160]
lea rsi, [rsp+0x610]
calign
.contract_modm_expandlast1:
add rax, 0x1
mov ecx, edx
shr rdx, 1
and ecx, 0x1
cmp rax, rsi
mov byte [rax-0x1], cl
jne .contract_modm_expandlast1
lea r8, [rsp+0x510]
mov r11d, 0x100
jmp .contract_modm_slidingstart1
calign
.contract_modm_slidingouter1:
lea r10, [r8+0x1]
.contract_modm_slidingnext1:
sub r11d, 0x1
mov r8, r10
jz .contract_modm_expand2
.contract_modm_slidingstart1:
movzx edi, byte [r8]
test edi, edi
jz .contract_modm_slidingouter1
cmp r11d, 0x1
jle .contract_modm_slidingouter1
lea rax, [rsp+0x510]
lea r10, [r8+0x1]
mov ebx, r8d
xor r9d, r9d
mov ecx, 0x1
lea r12, [r8+0x2]
mov [rsp], rax
mov ebp, [rsp]
mov rsi, r10
sub ebx, [rsp]
sub ebp, r8d
add ebp, 0xff
jmp .contract_modm_slidingmess_start1
calign
.contract_modm_slidingmess_outer1:
add eax, edi
mov byte [r8], al
mov byte [rsi], 0x0
.contract_modm_slidingmess_outera1:
add ecx, 0x1
cmp ecx, r11d
je .contract_modm_slidingnext1
add r9, 0x1
add rsi, 0x1
cmp ecx, 0x7
je .contract_modm_slidingnext1
movzx edi, byte [r8]
.contract_modm_slidingmess_start1:
movzx r14d, byte [rsi]
movsx r13d, dil
mov rdx, rsi
movsx eax, r14b
shl eax, cl
lea r15d, [r13+rax]
cmp r15d, 0xf
jle .contract_modm_slidingmess_outer1
sub r13d, eax
cmp r13d, 0xfffffff1
jl .contract_modm_slidingmess_c1
sub edi, eax
lea eax, [rcx+rbx]
mov byte [r8], dil
cmp eax, 0xff
jg .contract_modm_slidingmess_outera1
cmp byte [rsi], 0x0
je .contract_modm_slidingmess_b1
lea rdi, [r9+r10+0x1]
mov eax, ebp
sub eax, ecx
add rdi, rax
lea rax, [r12+r9]
calign
.contract_modm_slidingmess_a1:
cmp rax, rdi
mov byte [rdx], 0x0
je .contract_modm_slidingmess_outera1
mov rdx, rax
add rax, 0x1
cmp byte [rax-0x1], 0x0
jne .contract_modm_slidingmess_a1
.contract_modm_slidingmess_b1:
mov byte [rdx], 0x1
jmp .contract_modm_slidingmess_outera1
calign
.contract_modm_slidingmess_c1:
test r14b, r14b
jz .contract_modm_slidingmess_outera1
sub r11d, 0x1
mov r8, r10
jne .contract_modm_slidingstart1
.contract_modm_expand2:
lea rax, [rsp+0x610]
lea rdi, [rsp+0x170]
lea r8, [rax+0xe0]
.contract_modm_expandouter2:
mov rdx, [rdi]
lea rsi, [rax+0x38]
calign
.contract_modm_expandinner2:
add rax, 0x1
mov ecx, edx
shr rdx, 1
and ecx, 0x1
cmp rax, rsi
mov byte [rax-0x1], cl
jne .contract_modm_expandinner2
add rdi, 0x8
cmp rax, r8
jne .contract_modm_expandouter2
mov rdx, [rsp+0x190]
lea rsi, [rsp+0x710]
calign
.contract_modm_expandlast2:
add rax, 0x1
mov ecx, edx
shr rdx, 1
and ecx, 0x1
cmp rax, rsi
mov byte [rax-0x1], cl
jne .contract_modm_expandlast2
lea r8, [rsp+0x610]
mov r11d, 0x100
jmp .contract_modm_slidingstart2
calign
.contract_modm_slidingouter2:
lea r10, [r8+0x1]
.contract_modm_slidingnext2:
sub r11d, 0x1
mov r8, r10
jz .contract_modm_expand_done
.contract_modm_slidingstart2:
movzx edi, byte [r8]
test edi, edi
jz .contract_modm_slidingouter2
cmp r11d, 0x1
jle .contract_modm_slidingouter2
lea rax, [rsp+0x610]
lea r10, [r8+0x1]
mov ebx, r8d
xor r9d, r9d
mov ecx, 0x1
lea r12, [r8+0x2]
mov [rsp], rax
mov ebp, [rsp]
mov rsi, r10
sub ebx, [rsp]
sub ebp, r8d
add ebp, 0xff
jmp .contract_modm_slidingmess_start2
calign
.contract_modm_slidingmess_outer2:
add eax, edi
mov byte [r8], al
mov byte [rsi], 0x0
.contract_modm_slidingmess_outera2:
add ecx, 0x1
cmp ecx, r11d
je .contract_modm_slidingnext2
add r9, 0x1
add rsi, 0x1
cmp ecx, 0x7
je .contract_modm_slidingnext2
movzx edi, byte [r8]
.contract_modm_slidingmess_start2:
movzx r14d, byte [rsi]
movsx r13d, dil
mov rdx, rsi
movsx eax, r14b
shl eax, cl
lea r15d, [r13+rax]
cmp r15d, 0x3f
jle .contract_modm_slidingmess_outer2
sub r13d, eax
cmp r13d, 0xffffffc1
jl .contract_modm_slidingmess_c2
sub edi, eax
lea eax, [rbx+rcx]
mov byte [r8], dil
cmp eax, 0xff
jg .contract_modm_slidingmess_outera2
cmp byte [rsi], 0x0
je .contract_modm_slidingmess_b2
lea rdi, [r9+r10+0x1]
mov eax, ebp
sub eax, ecx
add rdi, rax
lea rax, [r12+r9]
calign
.contract_modm_slidingmess_a2:
cmp rax, rdi
mov byte [rdx], 0x0
je .contract_modm_slidingmess_outera2
mov rdx, rax
add rax, 0x1
cmp byte [rax-0x1], 0x0
jne .contract_modm_slidingmess_a2
.contract_modm_slidingmess_b2:
mov byte [rdx], 0x1
jmp .contract_modm_slidingmess_outera2
calign
.contract_modm_slidingmess_c2:
test r14b, r14b
jz .contract_modm_slidingmess_outera2
sub r11d, 0x1
mov r8, r10
jnz .contract_modm_slidingstart2
.contract_modm_expand_done:
lea rsi, [rsp+0x210]
lea rdi, [rsp+0x710]
lea r12, [rsp+0x390]
call ed25519$double_p1p1
lea rsi, [rsp+0x710]
lea rdi, [rsp+0x2d0]
call ed25519$p1p1_to_full
lea rsi, [rsp+0x210]
lea rdi, [rsp+0x710]
call .full_to_pniels
lea rdx, [rsp+0x710]
lea rbp, [rdx+0x540]
jmp .scalarmult_vartime_b
calign
.scalarmult_vartime_a:
mov rdx, rbx
.scalarmult_vartime_b:
lea rsi, [rsp+0x2d0]
xor ecx, ecx
mov rdi, r12
lea rbx, [rdx+0xc0]
call .pnielsadd_p1p1
lea rdi, [rsp+0x450]
mov rsi, r12
call ed25519$p1p1_to_full
lea rsi, [rsp+0x450]
mov rdi, rbx
call .full_to_pniels
cmp rbx, rbp
jne .scalarmult_vartime_a
mov rdi, r12
xor esi, esi
mov edx, 192
call memset32
xor eax, eax
mov rdi, r12
lea rsi, [rsp+0x70f]
mov dword [rsp+0x3c0], 0x1
mov dword [rsp+0x3f0], 0x1
lea rcx, [rsp+0x60f]
jmp .scalarmult_vartime_d
calign
.scalarmult_vartime_c:
sub rax, 0x1
cmp rax, 0xffffffffffffff00
je .scalarmult_vartime_done
.scalarmult_vartime_d:
movzx edx, byte [rsi+rax]
lea ebx, [rax+0xff]
or dl, byte [rcx+rax]
jz .scalarmult_vartime_c
cmp ebx, 0xffffffff
jne .scalarmult_vartime_g
jmp .scalarmult_vartime_done
calign
.scalarmult_vartime_e:
cmp byte [rsp+rbp+0x610], 0x0
jne .scalarmult_vartime_h
.scalarmult_vartime_f:
lea rsi, [rsp+0x450]
mov rdi, r12
sub ebx, 0x1
call ed25519$p1p1_to_partial
cmp ebx, 0xffffffff
je .scalarmult_vartime_done
.scalarmult_vartime_g:
lea rdi, [rsp+0x450]
mov rsi, r12
movsxd rbp, ebx
call ed25519$double_p1p1
cmp byte [rsp+rbp+0x510], 0x0
je .scalarmult_vartime_e
lea rsi, [rsp+0x450]
mov rdi, r12
call ed25519$p1p1_to_full
movsx eax, byte [rsp+rbp+0x510]
lea rdi, [rsp+0x450]
mov rsi, r12
cdq
mov ecx, eax
xor eax, edx
shr cl, 0x7
sub eax, edx
movzx ecx, cl
sar eax, 1
cdqe
lea rdx, [rax+rax*2]
lea rax, [rsp+0x710]
shl rdx, 0x6
add rdx, rax
call .pnielsadd_p1p1
cmp byte [rsp+rbp+0x610], 0x0
je .scalarmult_vartime_f
.scalarmult_vartime_h:
lea rsi, [rsp+0x450]
mov rdi, r12
call ed25519$p1p1_to_full
movaps xmm8, [rsp+0x3c0]
lea rdi, [rsp+0x1a0]
movsx eax, byte [rsp+rbp+0x610]
movaps xmm1, [rsp+0x390]
movaps xmm0, [ed25519$packed2p0]
cdq
mov ebp, eax
paddd xmm0, xmm8
psubd xmm0, xmm1
pshufd xmm15, xmm0, 0xa0
pshufd xmm10, xmm0, 0xf5
movaps xmm6, [rsp+0x3a0]
paddd xmm1, xmm8
xor eax, edx
shr bpl, 0x7
pand xmm15, [ed25519$sse2_bot32bitmask]
sub eax, edx
mov r13d, ebp
movaps xmm7, [rsp+0x3d0]
sar eax, 1
pand xmm10, [ed25519$sse2_bot32bitmask]
cdqe
movaps xmm5, [ed25519$packed2p1]
xor r13d, 0x1
lea rdx, [rax+rax*8]
movzx eax, r13b
movaps xmm0, xmm15
pand xmm15, [ed25519$packedmask26]
paddd xmm5, xmm7
psubd xmm5, xmm6
paddd xmm7, xmm6
lea rcx, [rax+rax]
movaps xmm9, xmm10
pand xmm10, [ed25519$packedmask25]
psrld xmm0, 0x1a
movaps xmm3, [rsp+0x3e0]
add rax, rcx
psrld xmm9, 0x19
movaps xmm11, xmm9
psrldq xmm9, 0x8
paddd xmm5, xmm9
movaps xmm9, xmm5
movaps xmm2, [rsp+0x3b0]
pslldq xmm11, 0x8
paddd xmm15, xmm11
movzx ecx, bpl
paddd xmm0, xmm10
movaps xmm10, xmm15
punpckldq xmm15, xmm0
punpcklqdq xmm9, xmm7
lea rsi, [rcx+rcx]
punpckhdq xmm10, xmm0
shl rdx, 0x4
movaps xmm0, xmm7
add rcx, rsi
movaps xmm7, xmm9
add rdx, .ge25519_niels_sliding_multiples
punpcklqdq xmm15, xmm10
shl rax, 0x4
movaps xmm4, [ed25519$packed2p2]
psrlq xmm7, 0x20
shl rcx, 0x4
add rax, rdx
add rcx, rdx
lea rsi, [r12+0x90]
movdqa [rsp+0x30], xmm7
paddd xmm4, xmm3
psubd xmm4, xmm2
movaps xmm6, xmm15
paddd xmm2, xmm3
add rdx, 0x60
movaps xmm7, xmm5
punpcklqdq xmm6, xmm1
punpckhqdq xmm15, xmm1
movaps xmm1, xmm4
punpckhqdq xmm7, xmm0
punpcklqdq xmm1, xmm2
movaps xmm2, [rcx]
movaps xmm12, xmm6
movaps xmm0, xmm7
movaps xmm5, [rax+0x10]
movaps xmm4, xmm1
psrlq xmm12, 0x20
psrlq xmm0, 0x20
movdqa [rsp+0x70], xmm1
movaps xmm3, xmm2
psrlq xmm4, 0x20
movdqa [rsp+0x60], xmm0
movaps xmm8, xmm6
movdqa [rsp+0xb0], xmm4
movaps xmm14, xmm15
movdqa [rsp+0x40], xmm7
psrlq xmm14, 0x20
movaps xmm1, [rax]
movaps xmm0, [rcx+0x10]
punpckhqdq xmm2, xmm1
movaps xmm13, xmm0
punpcklqdq xmm3, xmm1
punpckhqdq xmm0, xmm5
punpcklqdq xmm13, xmm5
movaps xmm1, xmm2
movaps xmm4, xmm3
psrlq xmm3, 0x20
psrlq xmm1, 0x20
movaps xmm11, xmm1
movaps xmm5, xmm0
movaps xmm1, xmm13
psrlq xmm13, 0x20
pmuludq xmm8, xmm4
movdqa [rsp+0x10], xmm13
psrlq xmm5, 0x20
movdqa [rsp+0x20], xmm5
movaps xmm5, xmm12
movdqa [rsp+0x80], xmm8
pmuludq xmm5, xmm4
movaps xmm8, xmm15
pmuludq xmm8, xmm4
movaps xmm13, [rcx+0x20]
punpcklqdq xmm13, [rax+0x20]
movaps xmm10, xmm13
psrlq xmm10, 0x20
movdqa [rsp+0x50], xmm10
movaps xmm10, xmm6
pmuludq xmm10, xmm3
paddq xmm5, xmm10
movdqa [rsp+0x90], xmm5
movaps xmm5, xmm12
pslld xmm5, 0x1
movaps xmm10, xmm5
pmuludq xmm10, xmm3
movaps xmm7, xmm10
movaps xmm10, xmm6
paddq xmm7, xmm8
movaps xmm8, xmm7
pmuludq xmm10, xmm2
paddq xmm8, xmm10
movaps xmm10, xmm14
movdqa [rsp+0xa0], xmm8
movaps xmm8, xmm15
pmuludq xmm10, xmm4
pmuludq xmm8, xmm3
paddq xmm8, xmm10
movaps xmm10, xmm12
pmuludq xmm10, xmm2
movaps xmm7, xmm10
movaps xmm10, xmm11
paddq xmm7, xmm8
pmuludq xmm10, xmm6
paddq xmm7, xmm10
movaps xmm10, xmm14
movdqa [rsp+0xf0], xmm7
pslld xmm10, 0x1
movaps xmm7, xmm10
movaps xmm10, xmm9
movaps xmm8, xmm7
pmuludq xmm10, xmm4
pmuludq xmm8, xmm3
paddq xmm8, xmm10
movaps xmm10, xmm15
pmuludq xmm10, xmm2
paddq xmm10, xmm8
movaps xmm8, xmm11
pmuludq xmm8, xmm5
paddq xmm8, xmm10
movaps xmm10, xmm6
pmuludq xmm10, xmm1
paddq xmm8, xmm10
movaps xmm10, xmm9
movdqa [rsp+0xc0], xmm8
pmuludq xmm10, xmm3
movaps xmm8, [rsp+0x30]
pmuludq xmm8, xmm4
paddq xmm10, xmm8
movaps xmm8, xmm14
movdqa [rsp], xmm11
pmuludq xmm8, xmm2
paddq xmm8, xmm10
movaps xmm10, xmm11
pmuludq xmm10, xmm15
paddq xmm10, xmm8
movaps xmm8, xmm12
pmuludq xmm8, xmm1
paddq xmm8, xmm10
movaps xmm10, [rsp+0x10]
movaps xmm11, xmm8
pmuludq xmm10, xmm6
paddq xmm11, xmm10
movaps xmm10, [rsp+0x30]
movdqa [rsp+0xd0], xmm11
pslld xmm10, 0x1
movaps xmm11, xmm10
movaps xmm8, xmm11
movaps xmm10, [rsp+0x40]
pmuludq xmm8, xmm3
pmuludq xmm10, xmm4
paddq xmm8, xmm10
movaps xmm10, xmm9
pmuludq xmm10, xmm2
paddq xmm10, xmm8
movaps xmm8, [rsp]
pmuludq xmm8, xmm7
paddq xmm8, xmm10
movaps xmm10, xmm15
pmuludq xmm7, [rsp+0x10]
pmuludq xmm10, xmm1
paddq xmm10, xmm8
movaps xmm8, [rsp+0x10]
pmuludq xmm8, xmm5
paddq xmm8, xmm10
movaps xmm10, xmm6
pmuludq xmm5, [rsp+0x20]
pmuludq xmm10, xmm0
paddq xmm8, xmm10
movaps xmm10, [rsp+0x40]
movdqa [rsp+0xe0], xmm8
pmuludq xmm10, xmm3
movaps xmm8, [rsp+0x60]
pmuludq xmm8, xmm4
paddq xmm10, xmm8
movaps xmm8, [rsp+0x30]
pmuludq xmm8, xmm2
paddq xmm8, xmm10
movaps xmm10, [rsp]
pmuludq xmm10, xmm9
paddq xmm10, xmm8
movaps xmm8, xmm14
pmuludq xmm8, xmm1
paddq xmm8, xmm10
movaps xmm10, [rsp+0x10]
pmuludq xmm10, xmm15
paddq xmm10, xmm8
movaps xmm8, xmm12
pmuludq xmm8, xmm0
paddq xmm8, xmm10
movaps xmm10, [rsp+0x20]
pmuludq xmm10, xmm6
paddq xmm8, xmm10
movaps xmm10, [rsp+0x60]
movdqa [rsp+0x100], xmm8
pslld xmm10, 0x1
pmuludq xmm10, xmm3
movaps xmm8, [rsp+0x70]
pmuludq xmm8, xmm4
paddq xmm10, xmm8
movaps xmm8, [rsp+0x40]
pmuludq xmm4, [rsp+0xb0]
pmuludq xmm8, xmm2
paddq xmm8, xmm10
movaps xmm10, [rsp]
pmuludq xmm11, xmm10
paddq xmm11, xmm8
movaps xmm8, xmm9
pmuludq xmm8, xmm1
paddq xmm8, xmm11
movaps xmm11, xmm6
paddq xmm7, xmm8
movaps xmm8, xmm15
pmuludq xmm6, [rsp+0x50]
pmuludq xmm11, xmm13
pmuludq xmm8, xmm0
paddq xmm8, xmm7
paddq xmm5, xmm8
paddq xmm5, xmm11
movaps xmm11, [rsp+0x60]
movdqa [rsp+0x110], xmm5
movaps xmm5, [rsp+0x70]
movaps xmm7, [rsp+0x40]
pmuludq xmm5, xmm3
paddq xmm5, xmm4
movaps xmm4, xmm11
movaps xmm8, [rsp+0x30]
pmuludq xmm4, xmm2
paddq xmm4, xmm5
movaps xmm5, xmm7
pmuludq xmm5, [rsp]
paddq xmm5, xmm4
movaps xmm4, xmm8
pmuludq xmm4, xmm1
paddq xmm4, xmm5
movaps xmm5, [rsp+0x10]
pmuludq xmm5, xmm9
paddq xmm5, xmm4
movaps xmm4, xmm14
pmuludq xmm14, [ed25519$packednineteen]
pmuludq xmm9, [ed25519$packednineteen]
pmuludq xmm4, xmm0
paddq xmm4, xmm5
movaps xmm5, [rsp+0x20]
pmuludq xmm5, xmm15
paddq xmm5, xmm4
movaps xmm4, xmm12
pmuludq xmm15, [ed25519$packednineteen]
pmuludq xmm12, [ed25519$packednineteen]
pslld xmm12, 0x1
pmuludq xmm4, xmm13
paddq xmm4, xmm5
paddq xmm4, xmm6
movaps xmm6, xmm14
pmuludq xmm14, xmm13
movdqa [rsp+0x120], xmm4
pslld xmm6, 0x1
movaps xmm5, xmm7
movdqa [rsp+0x60], xmm6
pmuludq xmm12, [rsp+0x50]
movaps xmm6, xmm8
pmuludq xmm5, [ed25519$packednineteen]
pmuludq xmm6, [ed25519$packednineteen]
movaps xmm10, xmm6
movaps xmm7, xmm6
movaps xmm6, xmm11
movaps xmm11, xmm15
pmuludq xmm15, [rsp+0x50]
paddq xmm14, xmm15
pslld xmm7, 0x1
movdqa [rsp+0x30], xmm7
pmuludq xmm6, [ed25519$packednineteen]
pmuludq xmm11, xmm13
paddq xmm11, xmm12
movaps xmm8, xmm6
pslld xmm6, 0x1
movdqa [rsp+0x40], xmm6
movaps xmm12, [rsp+0x60]
pmuludq xmm12, [rsp+0x20]
paddq xmm12, xmm11
movaps xmm11, xmm9
movaps xmm4, [rsp+0x70]
pmuludq xmm11, xmm0
paddq xmm11, xmm12
movaps xmm12, [rsp+0x30]
pmuludq xmm4, [ed25519$packednineteen]
pmuludq xmm12, [rsp+0x10]
paddq xmm12, xmm11
movaps xmm11, xmm5
movaps xmm7, [rsp+0xb0]
pmuludq xmm11, xmm1
paddq xmm11, xmm12
movaps xmm12, [rsp+0x40]
pmuludq xmm7, [ed25519$packednineteen]
movaps xmm6, xmm7
pmuludq xmm12, [rsp]
paddq xmm12, xmm11
movaps xmm11, xmm4
movaps xmm15, [rsp+0x10]
pslld xmm6, 0x1
pmuludq xmm3, xmm6
pmuludq xmm11, xmm2
paddq xmm11, xmm12
paddq xmm3, xmm11
movaps xmm12, [rsp+0x20]
paddq xmm3, [rsp+0x80]
pmuludq xmm2, xmm7
movaps xmm11, xmm10
pmuludq xmm10, xmm13
movdqa [rsp+0x80], xmm3
movaps xmm3, xmm12
pmuludq xmm11, xmm0
pmuludq xmm3, xmm9
paddq xmm3, xmm14
paddq xmm11, xmm3
movaps xmm3, xmm15
movaps xmm14, [rsp]
pmuludq xmm3, xmm5
paddq xmm3, xmm11
movaps xmm11, xmm8
pmuludq xmm11, xmm1
paddq xmm11, xmm3
movaps xmm3, xmm14
pmuludq xmm14, xmm6
pmuludq xmm3, xmm4
paddq xmm3, xmm11
movaps xmm11, [rsp+0x50]
paddq xmm2, xmm3
paddq xmm2, [rsp+0x90]
movaps xmm3, [rsp+0x60]
movdqa [rsp+0x90], xmm2
pmuludq xmm3, xmm11
movaps xmm2, xmm9
pmuludq xmm9, xmm11
paddq xmm10, xmm9
pmuludq xmm2, xmm13
paddq xmm2, xmm3
movaps xmm3, [rsp+0x30]
pmuludq xmm3, xmm12
paddq xmm3, xmm2
movaps xmm2, xmm5
movaps xmm9, [rsp+0x40]
pmuludq xmm2, xmm0
paddq xmm2, xmm3
movaps xmm3, [rsp+0x40]
pmuludq xmm3, xmm15
paddq xmm3, xmm2
movaps xmm2, xmm4
pmuludq xmm2, xmm1
paddq xmm2, xmm3
movaps xmm3, xmm14
movaps xmm14, [rsp+0xa0]
pmuludq xmm1, xmm7
paddq xmm3, xmm2
paddq xmm14, xmm3
movdqa [rsp+0xa0], xmm14
movaps xmm14, xmm12
pmuludq xmm14, xmm5
movaps xmm2, xmm14
movaps xmm14, xmm8
pmuludq xmm8, xmm13
paddq xmm2, xmm10
movaps xmm10, xmm15
pmuludq xmm14, xmm0
movaps xmm3, xmm14
movaps xmm14, xmm15
pmuludq xmm10, xmm4
movaps xmm15, xmm11
paddq xmm3, xmm2
movaps xmm2, xmm10
pmuludq xmm14, xmm6
paddq xmm2, xmm3
paddq xmm1, xmm2
paddq xmm1, [rsp+0xf0]
movaps xmm10, xmm1
movaps xmm1, [rsp+0x30]
movaps xmm3, xmm12
pmuludq xmm1, xmm11
movaps xmm11, xmm9
movaps xmm2, xmm1
movaps xmm1, xmm5
pmuludq xmm5, xmm15
pmuludq xmm11, xmm12
paddq xmm8, xmm5
pmuludq xmm1, xmm13
paddq xmm1, xmm2
movaps xmm2, xmm11
paddq xmm2, xmm1
movaps xmm1, xmm4
pmuludq xmm1, xmm0
paddq xmm1, xmm2
movaps xmm2, xmm14
pmuludq xmm0, xmm7
movaps xmm14, xmm15
pmuludq xmm7, xmm13
paddq xmm2, xmm1
movaps xmm1, [rsp+0xc0]
paddq xmm1, xmm2
movaps xmm12, xmm1
movaps xmm1, xmm3
movaps xmm2, [rsp+0x80]
pmuludq xmm1, xmm4
paddq xmm1, xmm8
paddq xmm0, xmm1
movaps xmm1, xmm9
paddq xmm0, [rsp+0xd0]
movaps xmm15, xmm0
movaps xmm0, xmm4
pmuludq xmm4, xmm14
pmuludq xmm1, xmm14
paddq xmm7, xmm4
paddq xmm7, [rsp+0x100]
pmuludq xmm0, xmm13
paddq xmm0, xmm1
movaps xmm1, xmm3
movaps xmm3, xmm2
movaps xmm13, xmm7
pmuludq xmm1, xmm6
paddq xmm1, xmm0
paddq xmm1, [rsp+0xe0]
psrlq xmm3, 0x1a
paddq xmm3, [rsp+0x90]
movaps xmm4, xmm3
movaps xmm9, xmm1
movaps xmm1, [ed25519$packedmask26]
pmuludq xmm6, xmm14
movaps xmm5, xmm4
paddq xmm6, [rsp+0x110]
pand xmm1, xmm12
movaps xmm11, xmm6
psrlq xmm5, 0x19
paddq xmm5, [rsp+0xa0]
movaps xmm7, xmm5
movaps xmm0, xmm12
pand xmm2, [ed25519$packedmask26]
movaps xmm6, xmm7
psrlq xmm0, 0x1a
paddq xmm0, xmm15
movaps xmm3, xmm0
psrlq xmm6, 0x1a
psrlq xmm0, 0x19
paddq xmm6, xmm10
paddq xmm0, xmm9
movaps xmm12, xmm6
psrlq xmm6, 0x19
movaps xmm5, xmm0
paddq xmm1, xmm6
psrlq xmm0, 0x1a
paddq xmm0, xmm13
movaps xmm8, xmm0
psrlq xmm0, 0x19
paddq xmm0, xmm11
movaps xmm6, xmm0
pand xmm7, [ed25519$packedmask26]
psrlq xmm6, 0x1a
paddq xmm6, [rsp+0x120]
movaps xmm9, xmm6
pand xmm4, [ed25519$packedmask25]
psrlq xmm9, 0x19
pmuludq xmm9, [ed25519$packednineteen]
paddq xmm2, xmm9
pand xmm3, [ed25519$packedmask25]
movaps xmm10, xmm2
pand xmm2, [ed25519$packedmask26]
movaps xmm9, xmm1
psrlq xmm10, 0x1a
paddq xmm4, xmm10
pand xmm12, [ed25519$packedmask25]
psrlq xmm9, 0x1a
paddq xmm3, xmm9
movaps xmm9, xmm7
pand xmm8, [ed25519$packedmask25]
movaps xmm10, xmm2
pand xmm5, [ed25519$packedmask26]
pand xmm1, [ed25519$packedmask26]
punpckldq xmm9, xmm12
punpckldq xmm10, xmm4
movaps xmm11, xmm5
pand xmm6, [ed25519$packedmask25]
punpcklqdq xmm10, xmm9
pand xmm0, [ed25519$packedmask26]
movaps xmm9, xmm1
punpckhdq xmm5, xmm8
punpckhdq xmm1, xmm3
punpckldq xmm11, xmm8
punpckhdq xmm7, xmm12
punpckldq xmm9, xmm3
punpckhdq xmm2, xmm4
punpcklqdq xmm1, xmm5
punpcklqdq xmm9, xmm11
movaps xmm11, xmm0
punpcklqdq xmm2, xmm7
punpckhdq xmm0, xmm6
movaps xmm4, xmm1
punpckldq xmm11, xmm6
movdqa [rsp+0x60], xmm2
paddd xmm4, xmm9
movaps xmm3, xmm0
movdqa [rsp+0x490], xmm4
paddd xmm3, xmm11
pxor xmm8, xmm8
movdqa [rsp+0x4a0], xmm3
movaps xmm5, xmm2
movaps xmm2, xmm8
paddd xmm5, xmm10
movdqa [rsp+0x480], xmm5
movdqa [rsp+0x50], xmm10
movdqa [rsp+0x40], xmm1
movdqa [rsp+0x30], xmm9
movdqa [rsp+0x20], xmm0
movdqa [rsp+0x10], xmm11
movdqa [rsp], xmm8
movaps xmm4, [rsp+0x3f0]
movaps xmm3, [rsp+0x400]
paddd xmm4, xmm4
movaps xmm13, xmm4
paddd xmm3, xmm3
punpckhqdq xmm4, xmm3
movaps xmm6, [ed25519$sse2_bot32bitmask]
punpcklqdq xmm13, xmm3
movaps xmm5, [ed25519$sse2_bot32bitmask]
movaps xmm7, [rsp+0x410]
pand xmm6, xmm13
psrlq xmm13, 0x20
pand xmm5, xmm4
paddd xmm7, xmm7
movaps xmm12, [ed25519$sse2_bot32bitmask]
punpcklqdq xmm2, xmm7
psrlq xmm4, 0x20
movaps xmm14, xmm6
pand xmm6, [ed25519$packedmask26]
movaps xmm3, xmm5
pand xmm12, xmm2
psrlq xmm14, 0x1a
paddq xmm13, xmm14
psrlq xmm3, 0x1a
paddq xmm4, xmm3
movaps xmm3, [ed25519$packedmask25]
movaps xmm14, xmm4
movaps xmm7, xmm2
movaps xmm15, xmm13
psrlq xmm14, 0x19
pand xmm3, xmm13
paddq xmm12, xmm14
movaps xmm13, xmm12
pand xmm5, [ed25519$packedmask26]
psrlq xmm7, 0x20
pslldq xmm14, 0x8
psrlq xmm15, 0x19
psrlq xmm13, 0x1a
paddq xmm7, xmm13
movaps xmm13, xmm7
pand xmm4, [ed25519$packedmask25]
psrlq xmm13, 0x19
pmuludq xmm13, [ed25519$packednineteen]
punpckhqdq xmm13, xmm14
paddq xmm5, xmm15
pand xmm7, [ed25519$packedmask25]
paddq xmm6, xmm13
movaps xmm13, xmm5
movaps xmm14, xmm6
pand xmm5, [ed25519$packedmask26]
psrlq xmm13, 0x1a
paddq xmm4, xmm13
pand xmm6, [ed25519$packedmask26]
psrlq xmm14, 0x1a
paddq xmm3, xmm14
pand xmm12, [ed25519$packedmask26]
movaps xmm14, xmm5
punpckhdq xmm5, xmm4
movaps xmm13, xmm6
punpckldq xmm14, xmm4
punpckhdq xmm6, xmm3
punpckldq xmm13, xmm3
punpckhdq xmm12, xmm7
punpcklqdq xmm6, xmm5
punpcklqdq xmm13, xmm14
movdqa [rsp+0x500], xmm12
movdqa [rsp+0x4f0], xmm6
movdqa [rsp+0x4e0], xmm13
call curve25519$mul
movzx eax, bpl
lea rsi, [rsp+0x450]
add eax, 0x2
movaps xmm3, [rsp+0x4e0]
cdqe
lea rax, [rax+rax*2]
movdqa [rsp+0x4b0], xmm3
shl rax, 0x4
add rax, rsi
movaps xmm3, [rsp+0x4f0]
movdqa [rsp+0x4c0], xmm3
movaps xmm3, [rsp+0x500]
movdqa [rsp+0x4d0], xmm3
movaps xmm6, [rsp+0x1a0]
movaps xmm12, [rax]
movaps xmm4, [rax+0x10]
paddd xmm12, xmm6
movaps xmm3, [rax+0x20]
movaps xmm5, [rsp+0x1b0]
movaps xmm7, [rsp+0x1c0]
paddd xmm4, xmm5
movdqa [rax], xmm12
paddd xmm3, xmm7
movdqa [rax+0x10], xmm4
movdqa [rax+0x20], xmm3
movzx eax, r13b
add eax, 0x2
cdqe
lea rax, [rax+rax*2]
movaps xmm2, [rsp+0x60]
shl rax, 0x4
movaps xmm1, [rsp+0x40]
add rax, rsi
movaps xmm4, xmm2
movaps xmm3, [rax]
movaps xmm12, [rax+0x10]
punpckldq xmm4, xmm3
movaps xmm10, [rsp+0x50]
punpckhdq xmm2, xmm3
movaps xmm3, xmm1
movaps xmm9, [rsp+0x30]
punpckhdq xmm1, xmm12
paddd xmm4, [ed25519$packed32packed2p0]
punpckldq xmm3, xmm12
movaps xmm12, xmm10
punpckhdq xmm10, xmm6
movaps xmm0, [rsp+0x20]
punpckldq xmm12, xmm6
movaps xmm6, xmm9
movaps xmm11, [rsp+0x10]
punpckldq xmm6, xmm5
punpckhdq xmm9, xmm5
movaps xmm5, [ed25519$packed32packed2p1]
psubd xmm4, xmm12
punpckldq xmm0, [rax+0x20]
paddd xmm2, xmm5
paddd xmm3, xmm5
psubd xmm2, xmm10
psubd xmm3, xmm6
punpckldq xmm11, xmm7
paddd xmm1, xmm5
movaps xmm7, xmm4
movaps xmm6, xmm2
psubd xmm1, xmm9
punpckhqdq xmm4, xmm3
punpcklqdq xmm7, xmm3
paddd xmm0, xmm5
psubd xmm0, xmm11
punpcklqdq xmm6, xmm1
movaps xmm8, [rsp]
punpckhqdq xmm2, xmm1
movaps xmm5, xmm7
movaps xmm1, [ed25519$packedmask26262626]
movaps xmm3, xmm6
psrld xmm5, 0x1a
pand xmm6, xmm1
paddd xmm5, xmm4
psrld xmm3, 0x1a
paddd xmm3, xmm2
movaps xmm4, xmm3
pand xmm7, xmm1
movaps xmm1, xmm5
psrld xmm4, 0x19
movaps xmm2, xmm4
pslldq xmm4, 0x8
movaps xmm9, xmm6
movaps xmm6, [ed25519$packedmask25252525]
psrld xmm1, 0x19
psrldq xmm2, 0x8
paddd xmm0, xmm2
movaps xmm2, xmm7
pand xmm5, xmm6
paddd xmm1, xmm9
paddd xmm2, xmm4
movaps xmm4, xmm2
pand xmm3, xmm6
movaps xmm6, xmm1
punpcklqdq xmm4, xmm5
punpcklqdq xmm6, xmm3
punpckhqdq xmm2, xmm5
pshufd xmm4, xmm4, 0xd8
punpckhqdq xmm1, xmm3
pshufd xmm3, xmm6, 0xd8
movaps xmm5, xmm4
pshufd xmm2, xmm2, 0xd8
pshufd xmm1, xmm1, 0xd8
punpcklqdq xmm5, xmm3
pshufd xmm0, xmm0, 0xd8
punpckhqdq xmm4, xmm3
movdqa [rsp+0x450], xmm5
movaps xmm5, xmm2
punpckhqdq xmm2, xmm1
punpcklqdq xmm5, xmm1
movdqa [rsp+0x460], xmm5
movaps xmm5, xmm0
punpckhqdq xmm0, xmm8
punpcklqdq xmm5, xmm8
movdqa [rsp+0x470], xmm5
movdqa [rax], xmm4
movdqa [rax+0x10], xmm2
movdqa [rax+0x20], xmm0
jmp .scalarmult_vartime_f
dalign
.ge25519_niels_sliding_multiples:
db 0x3e, 0x91, 0x40, 0x03, 0x75, 0x41, 0x0e, 0x00, 0xa2, 0x73, 0xd6, 0x03, 0x05, 0x8a, 0x2e, 0x00
db 0x7c, 0xe6, 0xf4, 0x03, 0x09, 0x8a, 0x8f, 0x00, 0x34, 0x1a, 0xc2, 0x00, 0xb8, 0xf4, 0x4c, 0x00
db 0x81, 0x8f, 0x29, 0x01, 0xbe, 0xf4, 0x13, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x85, 0x3b, 0x8c, 0x01, 0xbd, 0xf1, 0x24, 0x01, 0xf7, 0x25, 0xc3, 0x01, 0x60, 0xdc, 0x37, 0x00
db 0xb7, 0x4c, 0x3e, 0x03, 0xc2, 0x42, 0x3d, 0x00, 0x32, 0x4c, 0xa4, 0x01, 0xe1, 0xa4, 0x4c, 0x01
db 0x4b, 0x3d, 0xa3, 0x03, 0x74, 0x3e, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x68, 0xaa, 0x7a, 0x03, 0x61, 0x81, 0x44, 0x00, 0x79, 0xd5, 0x93, 0x00, 0x56, 0x65, 0x1e, 0x01
db 0xa0, 0x67, 0x9b, 0x00, 0x8c, 0x59, 0x43, 0x01, 0xee, 0xe5, 0xbe, 0x01, 0x43, 0x0b, 0xb5, 0x00
db 0xc6, 0xf0, 0x89, 0x02, 0xed, 0x45, 0xbc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x65, 0xd2, 0xfc, 0x00, 0x29, 0xfa, 0x47, 0x00, 0xcc, 0xaa, 0x4f, 0x03, 0x0d, 0x2e, 0xef, 0x01
db 0x4f, 0x4d, 0xef, 0x00, 0xbd, 0xd6, 0x4b, 0x01, 0x10, 0x8d, 0xf9, 0x00, 0x26, 0x50, 0x4c, 0x01
db 0xbd, 0x55, 0x75, 0x00, 0x56, 0xe4, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x30, 0x97, 0xee, 0x00, 0x13, 0x2a, 0x6c, 0x01, 0xe4, 0x55, 0x71, 0x01, 0x32, 0x44, 0x87, 0x01
db 0x10, 0x6a, 0x09, 0x00, 0x32, 0x67, 0x01, 0x01, 0x4f, 0x01, 0xa8, 0x01, 0x23, 0x98, 0x1e, 0x01
db 0x0f, 0xa8, 0xb9, 0x01, 0x38, 0x59, 0xe8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x89, 0xd8, 0xd0, 0x01, 0xc3, 0xcf, 0xa4, 0x01, 0x95, 0x42, 0x4c, 0x03, 0xae, 0xe1, 0x10, 0x01
db 0x8c, 0x50, 0x62, 0x01, 0x4c, 0xdb, 0xf2, 0x00, 0xc6, 0xa2, 0x72, 0x00, 0x2e, 0xda, 0x98, 0x00
db 0x9b, 0x2b, 0xf1, 0x02, 0x9a, 0xa0, 0x68, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xba, 0xd6, 0x47, 0x00, 0xe9, 0xb0, 0x60, 0x00, 0xf2, 0xef, 0x36, 0x01, 0x39, 0x59, 0x8a, 0x00
db 0x53, 0x00, 0x54, 0x03, 0x87, 0xa0, 0x64, 0x00, 0x5c, 0x8e, 0x78, 0x02, 0x67, 0x7c, 0xbe, 0x00
db 0xb5, 0xb1, 0x3e, 0x03, 0xf9, 0x29, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x33, 0xbb, 0xa5, 0x00, 0x02, 0x11, 0xaf, 0x00, 0x42, 0x54, 0xa0, 0x01, 0xf7, 0x3a, 0x1e, 0x00
db 0x23, 0x41, 0x35, 0x02, 0x44, 0xec, 0xbf, 0x00, 0x2d, 0x86, 0xf5, 0x01, 0xa3, 0x7b, 0xdd, 0x00
db 0x20, 0x6e, 0x14, 0x03, 0x33, 0x17, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x85, 0x82, 0x2a, 0x01, 0x60, 0xfc, 0xf6, 0x00, 0x97, 0x97, 0x3f, 0x02, 0xee, 0x85, 0x3e, 0x00
db 0x20, 0x38, 0x9c, 0x00, 0x2d, 0xa7, 0xbd, 0x01, 0x8d, 0x85, 0xb3, 0x01, 0x83, 0x56, 0xd3, 0x00
db 0xbb, 0xb3, 0x96, 0x02, 0xf9, 0xaa, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xb1, 0x21, 0x32, 0x02, 0xaa, 0x26, 0xcb, 0x01, 0x4d, 0xf7, 0x74, 0x00, 0xd1, 0xdd, 0x99, 0x00
db 0x85, 0x80, 0xb2, 0x01, 0x3a, 0x2c, 0x19, 0x00, 0xc9, 0x27, 0x3b, 0x01, 0xbd, 0x13, 0xfc, 0x00
db 0x31, 0xe5, 0xd2, 0x01, 0x75, 0xbb, 0x75, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xbf, 0xa3, 0x4e, 0x00, 0x25, 0x34, 0x97, 0x00, 0x63, 0x4d, 0x1a, 0x00, 0xee, 0x9c, 0xd5, 0x01
db 0xd4, 0xc0, 0xd1, 0x01, 0x49, 0x2e, 0x54, 0x00, 0x14, 0x41, 0x29, 0x01, 0x36, 0xce, 0x4f, 0x00
db 0xc9, 0x83, 0x92, 0x02, 0xa9, 0x6f, 0x18, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xa2, 0xb3, 0xb8, 0x01, 0x00, 0x72, 0xdb, 0x00, 0x30, 0x5e, 0x93, 0x00, 0xf5, 0x29, 0x38, 0x00
db 0x7d, 0x0d, 0xcc, 0x02, 0xf3, 0xad, 0x77, 0x00, 0x2c, 0xdd, 0x20, 0x02, 0x53, 0xea, 0x14, 0x00
db 0xf9, 0xa0, 0xc6, 0x01, 0xec, 0x7e, 0xea, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x64, 0x80, 0x9d, 0x03, 0x80, 0x5f, 0x88, 0x01, 0x6d, 0x7e, 0x33, 0x00, 0x02, 0xa9, 0xb7, 0x01
db 0x06, 0x82, 0x62, 0x02, 0x44, 0xb0, 0x5e, 0x01, 0x73, 0x04, 0xe3, 0x01, 0xd9, 0xf2, 0x91, 0x01
db 0xc9, 0xad, 0x1f, 0x01, 0x69, 0x01, 0x27, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x2f, 0x63, 0xa8, 0x02, 0xa9, 0xe2, 0x99, 0x01, 0x65, 0xb3, 0xd8, 0x00, 0xe2, 0x8d, 0x7a, 0x01
db 0x79, 0x42, 0x99, 0x02, 0xb5, 0xf5, 0x86, 0x00, 0xe3, 0xe4, 0x19, 0x01, 0xd6, 0x39, 0xeb, 0x01
db 0xd7, 0xad, 0x38, 0x03, 0xb4, 0xe7, 0xd2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x1b, 0xaf, 0x45, 0x00, 0xe4, 0x2f, 0x3a, 0x01, 0xd6, 0xe0, 0x45, 0x02, 0xce, 0x38, 0x45, 0x01
db 0x0f, 0xfe, 0x8b, 0x03, 0x16, 0xcf, 0xd4, 0x01, 0xc9, 0x14, 0x7e, 0x03, 0x5e, 0xd5, 0x60, 0x01
db 0x08, 0xb0, 0x21, 0x00, 0xc8, 0x05, 0xcf, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x48, 0x43, 0x86, 0x01, 0x92, 0xc0, 0xd6, 0x01, 0x2b, 0x26, 0x70, 0x00, 0x44, 0xb8, 0x4b, 0x01
db 0xcd, 0x5a, 0xfb, 0x00, 0x95, 0xeb, 0x8d, 0x00, 0xb5, 0xaa, 0x3a, 0x00, 0x74, 0xf4, 0xef, 0x00
db 0x5c, 0x9d, 0x02, 0x00, 0x66, 0xad, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xde, 0x2a, 0x80, 0x02, 0x22, 0x21, 0xc0, 0x01, 0xf7, 0xe5, 0xc4, 0x01, 0x81, 0x11, 0x78, 0x00
db 0xfb, 0x67, 0x97, 0x03, 0x06, 0x34, 0x70, 0x01, 0x8b, 0x38, 0x42, 0x03, 0x27, 0xe2, 0xf5, 0x01
db 0xd8, 0x46, 0x25, 0x02, 0xab, 0xd6, 0x09, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xe9, 0x89, 0x60, 0x01, 0x7f, 0x31, 0xcb, 0x00, 0x05, 0x9b, 0x94, 0x00, 0x17, 0x94, 0x09, 0x01
db 0xd2, 0x7a, 0x0c, 0x00, 0x22, 0x86, 0x1a, 0x01, 0xda, 0xcc, 0x88, 0x00, 0x86, 0x08, 0x29, 0x01
db 0xdf, 0x53, 0x2b, 0x02, 0x54, 0x19, 0xf7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x93, 0xbf, 0x7f, 0x02, 0xcc, 0x4e, 0xc0, 0x01, 0x0d, 0x6a, 0xed, 0x01, 0xbb, 0xdb, 0x4c, 0x00
db 0xaf, 0xf3, 0xbb, 0x02, 0x68, 0x59, 0xad, 0x00, 0x55, 0x19, 0x59, 0x01, 0xa2, 0xf3, 0x94, 0x00
db 0x02, 0x76, 0xd1, 0x02, 0x20, 0x9e, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x6d, 0x7f, 0x00, 0x02, 0xa8, 0x88, 0x30, 0x00, 0xee, 0x77, 0xdb, 0x03, 0xe6, 0xad, 0xd5, 0x00
db 0xce, 0x12, 0xfe, 0x02, 0x07, 0xba, 0x07, 0x01, 0x7d, 0x09, 0x07, 0x01, 0x6f, 0x2a, 0x48, 0x00
db 0x6f, 0x34, 0xec, 0x02, 0x5f, 0x3f, 0x8d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x78, 0xa3, 0x2e, 0x03, 0x5c, 0x46, 0x28, 0x00, 0x6c, 0x2a, 0x8e, 0x02, 0x6e, 0xfc, 0x8e, 0x01
db 0x9a, 0xdf, 0x90, 0x00, 0x33, 0xe5, 0xa7, 0x01, 0x48, 0xfc, 0x9b, 0x03, 0x5d, 0x74, 0x0c, 0x01
db 0x97, 0xa0, 0xda, 0x03, 0x9b, 0xee, 0x25, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x0b, 0xcf, 0x8c, 0x02, 0x91, 0x61, 0xf3, 0x00, 0x81, 0xc0, 0x1a, 0x02, 0xc8, 0x54, 0x21, 0x01
db 0x6e, 0x0a, 0x4e, 0x03, 0x92, 0x51, 0xb2, 0x01, 0x03, 0x04, 0x18, 0x00, 0xa1, 0xee, 0xd7, 0x01
db 0x05, 0x8d, 0x21, 0x00, 0x35, 0xd7, 0x0e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xa0, 0xea, 0xcf, 0x03, 0xc4, 0x00, 0xb3, 0x01, 0x99, 0xa4, 0x8d, 0x00, 0xe1, 0xc4, 0x68, 0x00
db 0x0a, 0x23, 0x19, 0x02, 0xd0, 0xd4, 0xf2, 0x01, 0x60, 0xfd, 0xde, 0x02, 0xb7, 0x65, 0xe5, 0x00
db 0xde, 0x12, 0x7f, 0x01, 0xa4, 0x88, 0x87, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x16, 0xb5, 0xd0, 0x03, 0xe6, 0x8b, 0x9d, 0x00, 0xb3, 0xcb, 0xdd, 0x03, 0xfe, 0xb9, 0x71, 0x00
db 0xbd, 0xe2, 0xac, 0x03, 0x70, 0x42, 0xd6, 0x01, 0xc9, 0x3e, 0x2d, 0x03, 0x65, 0x40, 0x08, 0x01
db 0x4d, 0xae, 0x10, 0x02, 0x84, 0x75, 0x44, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x87, 0xde, 0x20, 0x00, 0x11, 0x92, 0xe1, 0x00, 0x02, 0x81, 0xb6, 0x01, 0x97, 0xac, 0xb5, 0x00
db 0xc0, 0x73, 0x28, 0x02, 0x25, 0x2d, 0x94, 0x01, 0x94, 0x13, 0x27, 0x01, 0x3f, 0x07, 0x02, 0x01
db 0x82, 0x24, 0xfe, 0x02, 0xf9, 0x9f, 0xc6, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x81, 0x9d, 0x0e, 0x01, 0xe5, 0xbb, 0x9d, 0x01, 0x58, 0xf2, 0x89, 0x00, 0xb8, 0x06, 0x6e, 0x00
db 0x83, 0x18, 0x95, 0x02, 0x48, 0x12, 0x8f, 0x01, 0x37, 0x32, 0x9b, 0x01, 0x53, 0x75, 0xbc, 0x00
db 0x85, 0xdb, 0x4d, 0x02, 0x64, 0xc9, 0xb4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x54, 0xc8, 0xc8, 0x01, 0x29, 0xae, 0x60, 0x00, 0x8e, 0x6d, 0x40, 0x01, 0xf9, 0xf2, 0xcf, 0x01
db 0x51, 0xf4, 0xcf, 0x00, 0x0c, 0x8d, 0x77, 0x01, 0x41, 0x8c, 0xac, 0x03, 0x59, 0x2e, 0x55, 0x01
db 0xee, 0x59, 0x65, 0x03, 0x12, 0x1b, 0x1d, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x47, 0x11, 0x74, 0x00, 0x19, 0xb2, 0x51, 0x01, 0x90, 0x26, 0x09, 0x01, 0xe6, 0x77, 0xe8, 0x00
db 0xbb, 0xd6, 0xf4, 0x01, 0x32, 0xa3, 0x72, 0x00, 0x03, 0x3b, 0xcd, 0x01, 0xf2, 0xdf, 0xda, 0x00
db 0x5e, 0xdb, 0x97, 0x00, 0x8d, 0x59, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x2b, 0x9a, 0xc6, 0x01, 0x1b, 0xcf, 0xde, 0x01, 0x6e, 0xfa, 0xc2, 0x02, 0x4f, 0x7c, 0x3b, 0x01
db 0xc8, 0xea, 0x7b, 0x03, 0xb5, 0x16, 0x3a, 0x01, 0xda, 0x7b, 0x8e, 0x02, 0xac, 0xe8, 0xf6, 0x01
db 0xe9, 0x4f, 0xe3, 0x01, 0x47, 0x69, 0x72, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x67, 0x0e, 0xf1, 0x01, 0xde, 0x73, 0x3c, 0x00, 0xa2, 0x7e, 0x2b, 0x02, 0xc2, 0x32, 0x0f, 0x01
db 0x6a, 0x77, 0xff, 0x03, 0x77, 0x22, 0x14, 0x00, 0x88, 0x8b, 0xd3, 0x01, 0x38, 0x61, 0x77, 0x00
db 0x22, 0x08, 0xc6, 0x03, 0x40, 0x11, 0x20, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x75, 0xd1, 0x36, 0x02, 0x8e, 0x74, 0x08, 0x00, 0x6d, 0x47, 0xc6, 0x03, 0xdc, 0x4c, 0x3f, 0x01
db 0x2a, 0xd0, 0xee, 0x02, 0x47, 0x8a, 0x83, 0x00, 0x10, 0x72, 0x2e, 0x03, 0xb3, 0xcb, 0x8b, 0x01
db 0xe4, 0x8d, 0x85, 0x00, 0x26, 0x78, 0xdc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xc7, 0x7f, 0xa3, 0x00, 0x0b, 0xb4, 0x27, 0x01, 0x84, 0x78, 0x95, 0x01, 0xad, 0x30, 0x1d, 0x01
db 0x83, 0x66, 0x81, 0x02, 0x23, 0x0e, 0x6e, 0x01, 0xe4, 0x6b, 0xb7, 0x00, 0x15, 0xb1, 0x2d, 0x01
db 0x06, 0x65, 0x51, 0x02, 0x62, 0xce, 0x54, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xdf, 0x1e, 0x45, 0x00, 0x9e, 0x74, 0xbd, 0x00, 0x42, 0x73, 0x99, 0x03, 0x4c, 0x2c, 0xcc, 0x01
db 0x75, 0x69, 0xeb, 0x00, 0x08, 0x95, 0xa5, 0x01, 0xcf, 0x16, 0xa5, 0x03, 0xef, 0x28, 0xc2, 0x00
db 0x5a, 0xff, 0x68, 0x01, 0x47, 0x7b, 0x69, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x59, 0x73, 0x52, 0x00, 0x56, 0x31, 0x78, 0x01, 0x5c, 0xd7, 0xaf, 0x03, 0xdc, 0x56, 0xce, 0x00
db 0x70, 0xb9, 0xe4, 0x00, 0xe9, 0xab, 0x1c, 0x00, 0x6d, 0x0f, 0x9e, 0x02, 0x0c, 0x85, 0x88, 0x01
db 0xfd, 0xfe, 0x35, 0x01, 0x80, 0x6d, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x83, 0x0e, 0x15, 0x02, 0xbf, 0x8a, 0x44, 0x01, 0x32, 0x02, 0xbb, 0x02, 0x59, 0xf2, 0x2b, 0x01
db 0x68, 0x82, 0x3c, 0x03, 0x20, 0x1e, 0x71, 0x00, 0x8f, 0x14, 0xfc, 0x03, 0x70, 0x0e, 0x5e, 0x00
db 0xf9, 0x8b, 0x7d, 0x01, 0xe2, 0xb2, 0x12, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x83, 0x4b, 0x13, 0x02, 0x17, 0x05, 0x1a, 0x00, 0xcc, 0xc3, 0x82, 0x01, 0x82, 0x21, 0x79, 0x00
db 0x99, 0xd7, 0x13, 0x03, 0xd7, 0x3e, 0x1a, 0x00, 0x7e, 0x54, 0x44, 0x03, 0x0d, 0x4a, 0xf2, 0x01
db 0xd2, 0x6a, 0xde, 0x03, 0x27, 0x31, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x68, 0xa8, 0xdc, 0x00, 0x27, 0x8f, 0x61, 0x00, 0x09, 0x17, 0x5a, 0x01, 0x8a, 0xc3, 0xdd, 0x00
db 0x13, 0xfd, 0x20, 0x03, 0x8d, 0x16, 0x36, 0x00, 0x06, 0xab, 0x71, 0x03, 0xc7, 0x3f, 0x78, 0x01
db 0x5f, 0xe0, 0x91, 0x03, 0x5d, 0x9b, 0xe2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x38, 0x11, 0x47, 0x01, 0x42, 0xa5, 0xfc, 0x00, 0xcf, 0x31, 0xca, 0x00, 0xad, 0x7b, 0xca, 0x01
db 0xbc, 0xbf, 0x75, 0x01, 0xad, 0x08, 0xa7, 0x01, 0x12, 0xe2, 0xbc, 0x03, 0x15, 0x42, 0x24, 0x01
db 0x99, 0xbb, 0x75, 0x00, 0x68, 0xad, 0xac, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x76, 0xb9, 0xa0, 0x03, 0xd1, 0x12, 0xdc, 0x01, 0x17, 0xab, 0x1a, 0x01, 0xba, 0xa0, 0xab, 0x00
db 0xcd, 0x06, 0x98, 0x02, 0x90, 0xf5, 0x42, 0x01, 0xea, 0xd8, 0x8f, 0x01, 0x45, 0x15, 0xa0, 0x01
db 0x55, 0xad, 0xc4, 0x03, 0xff, 0x71, 0xc9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xc0, 0x98, 0xd0, 0x00, 0xc7, 0xfd, 0x0a, 0x00, 0x30, 0xd2, 0x6c, 0x00, 0xf3, 0x6a, 0x27, 0x01
db 0xb2, 0x05, 0xf9, 0x03, 0x4c, 0x99, 0x02, 0x01, 0xa4, 0xb8, 0x2e, 0x00, 0xeb, 0xfb, 0x5c, 0x01
db 0x5f, 0x85, 0x5f, 0x02, 0x18, 0x55, 0x33, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xb2, 0x99, 0xcf, 0x01, 0x74, 0xc5, 0x99, 0x00, 0x88, 0x9c, 0xa6, 0x01, 0x10, 0x15, 0x88, 0x00
db 0x54, 0x4b, 0xcd, 0x01, 0x9f, 0x10, 0x12, 0x01, 0xc5, 0xbd, 0x8a, 0x00, 0x7a, 0x64, 0x74, 0x00
db 0x1f, 0xcb, 0x77, 0x02, 0x24, 0x33, 0xe5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x53, 0x50, 0xac, 0x02, 0xb0, 0x09, 0xb1, 0x01, 0x5e, 0x09, 0x4b, 0x02, 0xb3, 0x97, 0x69, 0x01
db 0xb6, 0x6b, 0xf2, 0x02, 0x21, 0x10, 0x31, 0x00, 0x85, 0x78, 0x19, 0x00, 0x5a, 0xa5, 0xd0, 0x01
db 0xc8, 0xfc, 0xb6, 0x03, 0xd5, 0x20, 0xc0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x34, 0x4a, 0x58, 0x02, 0xe0, 0xee, 0xe7, 0x00, 0x03, 0x7a, 0x25, 0x03, 0xa3, 0x95, 0x1e, 0x01
db 0x91, 0xad, 0x1e, 0x01, 0x02, 0x62, 0x53, 0x00, 0x24, 0xce, 0xb1, 0x00, 0xc6, 0x16, 0x85, 0x00
db 0x6d, 0x9d, 0x66, 0x03, 0xa8, 0xa4, 0x4e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x01, 0x3f, 0x77, 0x00, 0xce, 0xc9, 0x19, 0x00, 0x71, 0x61, 0x9f, 0x01, 0xde, 0xaf, 0xd4, 0x01
db 0x23, 0x33, 0xe3, 0x02, 0xb6, 0x29, 0xad, 0x01, 0xdc, 0xd1, 0xea, 0x02, 0xa5, 0x51, 0xed, 0x01
db 0xd0, 0x1a, 0x85, 0x01, 0xfa, 0xbd, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xe5, 0x7d, 0x57, 0x00, 0x30, 0xc7, 0xdd, 0x00, 0x52, 0x99, 0x8b, 0x03, 0xae, 0x81, 0xf2, 0x00
db 0x90, 0x03, 0xd5, 0x01, 0x71, 0xe0, 0x02, 0x00, 0xec, 0x80, 0x07, 0x00, 0x8d, 0x44, 0x0d, 0x01
db 0xaf, 0xa2, 0xf8, 0x01, 0xb7, 0xa5, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x41, 0x25, 0x1f, 0x03, 0xae, 0x4b, 0xd3, 0x00, 0x9d, 0xff, 0x23, 0x03, 0x6d, 0x05, 0x3a, 0x00
db 0x43, 0x54, 0xe2, 0x02, 0x05, 0xad, 0xa1, 0x00, 0xe8, 0xbe, 0xd1, 0x00, 0x8e, 0x7f, 0x2f, 0x00
db 0x77, 0x74, 0x00, 0x03, 0xb1, 0x24, 0x2a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x13, 0xa7, 0x14, 0x01, 0x76, 0x7e, 0x45, 0x01, 0xd5, 0x55, 0x22, 0x03, 0x7f, 0x64, 0xcc, 0x01
db 0xef, 0xbd, 0xa4, 0x02, 0x30, 0xd7, 0x53, 0x01, 0xcf, 0x8b, 0x11, 0x00, 0xff, 0x55, 0xf7, 0x00
db 0xc7, 0x90, 0x34, 0x01, 0x4e, 0x67, 0xea, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xe8, 0xa3, 0xbd, 0x02, 0x0d, 0x49, 0xbb, 0x00, 0xea, 0x91, 0xf2, 0x00, 0x40, 0xbf, 0x0a, 0x00
db 0x21, 0xa3, 0xde, 0x01, 0xe0, 0x9c, 0x2f, 0x00, 0x93, 0xb1, 0xb2, 0x00, 0xb5, 0x54, 0xfa, 0x00
db 0x2f, 0x30, 0x28, 0x01, 0x8b, 0x9d, 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xbd, 0xf5, 0x2e, 0x02, 0xf3, 0x8a, 0x63, 0x01, 0x8a, 0x6f, 0x8c, 0x03, 0x3d, 0x3a, 0xa3, 0x01
db 0xb2, 0x61, 0x92, 0x03, 0xb8, 0x89, 0xbb, 0x01, 0x9d, 0xcf, 0x0b, 0x01, 0xa9, 0x42, 0xcf, 0x00
db 0x17, 0x6f, 0x3d, 0x02, 0xca, 0x1b, 0xda, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x25, 0x5b, 0xe3, 0x00, 0x4f, 0x82, 0x0d, 0x00, 0xcf, 0xe9, 0x52, 0x01, 0x5d, 0x93, 0xed, 0x00
db 0x60, 0x84, 0x0b, 0x02, 0x3f, 0xb8, 0xc7, 0x01, 0xe5, 0x69, 0xc9, 0x00, 0x98, 0x41, 0xa7, 0x01
db 0xd9, 0xa9, 0x46, 0x00, 0x68, 0xc7, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x6a, 0x7c, 0x59, 0x01, 0x9b, 0xa9, 0x44, 0x01, 0x51, 0x75, 0xa5, 0x00, 0x9c, 0x26, 0x18, 0x00
db 0x4c, 0x46, 0x3c, 0x02, 0x22, 0xb0, 0x09, 0x00, 0xe1, 0x39, 0xee, 0x00, 0xf2, 0xc7, 0x14, 0x01
db 0xd2, 0x9a, 0x8a, 0x03, 0x17, 0x4c, 0x58, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xd5, 0xc0, 0xb0, 0x03, 0x39, 0x0a, 0xb3, 0x00, 0xe4, 0x6c, 0x8a, 0x03, 0x3a, 0xd8, 0xde, 0x01
db 0xa6, 0x77, 0xc2, 0x01, 0x61, 0x0a, 0x01, 0x01, 0xeb, 0xd3, 0x46, 0x03, 0x5e, 0x99, 0x8d, 0x01
db 0x7c, 0xc5, 0xf2, 0x02, 0x6b, 0x28, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xd1, 0xae, 0x92, 0x00, 0x7b, 0xe3, 0x25, 0x01, 0x01, 0xa2, 0x7c, 0x02, 0x6b, 0x6b, 0x1a, 0x00
db 0x55, 0x0f, 0x29, 0x03, 0x48, 0xba, 0x47, 0x00, 0x6c, 0x91, 0x8d, 0x01, 0x62, 0x90, 0xa5, 0x01
db 0xd4, 0x35, 0x3e, 0x01, 0xb1, 0xab, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xaa, 0xd2, 0x3a, 0x00, 0xc0, 0xdc, 0x7d, 0x00, 0x76, 0x0f, 0xc1, 0x00, 0x0b, 0x59, 0x01, 0x00
db 0xa6, 0xfc, 0x2c, 0x00, 0x3e, 0xd2, 0x0e, 0x00, 0x29, 0x43, 0xee, 0x00, 0x04, 0x0f, 0x90, 0x00
db 0x65, 0x40, 0xc2, 0x01, 0x70, 0xfa, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x60, 0x5e, 0x02, 0x02, 0xb8, 0x12, 0x39, 0x00, 0x1c, 0x04, 0x27, 0x03, 0xe5, 0x5e, 0x7e, 0x01
db 0xec, 0xec, 0xc0, 0x02, 0x1c, 0x0d, 0x5a, 0x01, 0x7c, 0xce, 0xb1, 0x02, 0x0b, 0x22, 0x62, 0x00
db 0x7e, 0x06, 0x45, 0x01, 0x31, 0xd9, 0xa5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xa6, 0x73, 0x96, 0x00, 0x09, 0xf6, 0xe1, 0x00, 0x2a, 0x7c, 0x92, 0x00, 0x37, 0xaa, 0x6f, 0x01
db 0xf0, 0x0e, 0x65, 0x01, 0xb5, 0x63, 0x6f, 0x01, 0xe1, 0x40, 0xcd, 0x03, 0x8f, 0xc3, 0x3b, 0x00
db 0xac, 0xf0, 0x61, 0x03, 0xcc, 0x2a, 0xd4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x37, 0x10, 0xf8, 0x02, 0xe8, 0xa0, 0x8c, 0x00, 0xd1, 0x23, 0x7e, 0x01, 0xfe, 0xeb, 0x1d, 0x01
db 0x68, 0xbb, 0xbc, 0x01, 0x63, 0x25, 0x2e, 0x00, 0xd6, 0xad, 0xe8, 0x03, 0xe5, 0x16, 0x08, 0x00
db 0x75, 0x70, 0xfb, 0x03, 0xac, 0xe5, 0x53, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xcd, 0x1e, 0xb1, 0x02, 0x85, 0xf1, 0x6b, 0x01, 0xef, 0x22, 0x8f, 0x00, 0xbb, 0xd2, 0xe7, 0x00
db 0x2e, 0xd9, 0x25, 0x02, 0x85, 0xe7, 0xec, 0x00, 0x73, 0x88, 0x50, 0x00, 0xf5, 0x16, 0x7e, 0x01
db 0x5d, 0xe8, 0xfb, 0x01, 0x0e, 0x9a, 0xe3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x79, 0x92, 0x66, 0x01, 0x0a, 0x81, 0x7c, 0x01, 0xf5, 0x41, 0x49, 0x02, 0xeb, 0xeb, 0x23, 0x00
db 0x88, 0x76, 0xeb, 0x00, 0xf1, 0x60, 0x57, 0x00, 0x46, 0x41, 0xca, 0x02, 0xe7, 0xcd, 0x73, 0x00
db 0x75, 0xbb, 0x52, 0x00, 0xa7, 0xff, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x6b, 0x85, 0xb8, 0x03, 0xcd, 0x7d, 0xcb, 0x00, 0x06, 0x4e, 0xf1, 0x02, 0xd0, 0x20, 0x18, 0x00
db 0x75, 0x41, 0xd7, 0x01, 0x22, 0x9e, 0xe5, 0x00, 0x50, 0xa5, 0xfb, 0x03, 0x41, 0x46, 0x48, 0x00
db 0x88, 0x00, 0x35, 0x03, 0xa3, 0xc9, 0xc3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x55, 0xf3, 0xdc, 0x00, 0x1c, 0x48, 0x04, 0x01, 0x64, 0xe4, 0x22, 0x00, 0xe7, 0x3f, 0xf7, 0x01
db 0x25, 0x33, 0xe0, 0x00, 0x98, 0xb6, 0x52, 0x01, 0x9a, 0x76, 0xef, 0x02, 0x63, 0x36, 0x97, 0x00
db 0x8c, 0x9b, 0x03, 0x00, 0x5b, 0x39, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x47, 0x5f, 0x80, 0x01, 0xec, 0x60, 0x91, 0x01, 0xd0, 0x2c, 0x83, 0x03, 0xeb, 0x06, 0x8b, 0x00
db 0x17, 0xd7, 0xd4, 0x03, 0x06, 0xb0, 0x4c, 0x00, 0x8f, 0x5b, 0xa7, 0x03, 0x30, 0x3d, 0x3b, 0x01
db 0x88, 0xad, 0xcf, 0x01, 0xd1, 0x34, 0xf0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x8a, 0x33, 0x78, 0x00, 0xe3, 0xd2, 0xc7, 0x01, 0x23, 0x2b, 0xbc, 0x02, 0x05, 0x3f, 0x8b, 0x01
db 0xaa, 0xd9, 0x80, 0x02, 0x44, 0x3d, 0x5f, 0x00, 0x5a, 0xa9, 0x20, 0x02, 0x97, 0xeb, 0xee, 0x00
db 0xec, 0xaa, 0x62, 0x03, 0x51, 0x5d, 0x83, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x43, 0xf5, 0xb9, 0x01, 0x4d, 0xac, 0x3f, 0x01, 0xae, 0x93, 0xad, 0x02, 0x64, 0xf4, 0x8e, 0x01
db 0xf7, 0xcd, 0x12, 0x02, 0xa9, 0x8b, 0x13, 0x01, 0xab, 0x83, 0x15, 0x01, 0x26, 0x3d, 0x9c, 0x01
db 0xb4, 0x90, 0x87, 0x02, 0xb6, 0xe2, 0xe2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x58, 0xb7, 0x3b, 0x03, 0xf1, 0xdb, 0xf0, 0x01, 0xd1, 0x4b, 0x73, 0x03, 0xe5, 0xb1, 0x29, 0x01
db 0x0e, 0x95, 0xb3, 0x02, 0x22, 0xc9, 0x3b, 0x00, 0xc8, 0x3e, 0xa5, 0x01, 0x32, 0x55, 0x8c, 0x01
db 0xee, 0x3c, 0x6f, 0x00, 0x79, 0x3c, 0xae, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x5d, 0xf9, 0x51, 0x03, 0x37, 0xa7, 0x12, 0x00, 0xb8, 0x96, 0xd5, 0x03, 0xfe, 0x58, 0x76, 0x01
db 0x4a, 0xe5, 0xac, 0x00, 0xda, 0x66, 0x8b, 0x00, 0x99, 0xc5, 0x36, 0x00, 0xa2, 0x63, 0x2a, 0x01
db 0xa1, 0xeb, 0x2c, 0x03, 0xac, 0x6b, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x7e, 0xfe, 0xdc, 0x03, 0x18, 0x4f, 0x9f, 0x01, 0xee, 0x1a, 0xc8, 0x01, 0x2b, 0xbc, 0x44, 0x00
db 0x65, 0x71, 0x82, 0x00, 0x13, 0x7c, 0x4f, 0x01, 0xf0, 0x30, 0xb4, 0x03, 0xcc, 0x96, 0xbf, 0x00
db 0x62, 0x8d, 0x0c, 0x02, 0x97, 0x19, 0x47, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x31, 0x79, 0xfc, 0x01, 0xdd, 0x42, 0x1f, 0x00, 0x4a, 0x75, 0xba, 0x00, 0x39, 0xd3, 0x5b, 0x00
db 0x49, 0xbe, 0x3f, 0x00, 0x30, 0x39, 0x6b, 0x01, 0x9c, 0x15, 0x2a, 0x01, 0xb0, 0x83, 0x9f, 0x00
db 0x67, 0x0f, 0x53, 0x03, 0x85, 0x7b, 0xe5, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x81, 0xbd, 0xec, 0x02, 0x94, 0xc2, 0x96, 0x00, 0xa9, 0xe4, 0xfc, 0x01, 0xa5, 0x01, 0x77, 0x01
db 0x7d, 0x04, 0x75, 0x01, 0x31, 0x4a, 0xee, 0x00, 0xe5, 0x86, 0x26, 0x01, 0xd4, 0xfc, 0x8e, 0x00
db 0x54, 0xdc, 0x49, 0x03, 0x6f, 0x46, 0xb3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xa3, 0x9c, 0x17, 0x02, 0x14, 0x64, 0xd8, 0x01, 0xd0, 0xaf, 0xf0, 0x03, 0x64, 0x59, 0x30, 0x00
db 0x28, 0x74, 0x5c, 0x01, 0x1e, 0x71, 0x99, 0x00, 0x42, 0x54, 0x5d, 0x01, 0x14, 0x10, 0xc7, 0x00
db 0x2e, 0x0b, 0xb4, 0x01, 0xcf, 0x83, 0xd4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x86, 0xc3, 0xaf, 0x01, 0x59, 0x48, 0x98, 0x01, 0xff, 0x03, 0x62, 0x03, 0xa8, 0xc6, 0x45, 0x00
db 0xaa, 0xa8, 0x20, 0x00, 0xaa, 0x0b, 0x99, 0x00, 0x10, 0x3f, 0x31, 0x03, 0xde, 0xee, 0x7c, 0x00
db 0xe4, 0x29, 0x74, 0x02, 0xce, 0x06, 0x78, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xa1, 0x57, 0x93, 0x03, 0xf4, 0xf8, 0x42, 0x01, 0xb6, 0xa7, 0x94, 0x02, 0xf4, 0xcc, 0xea, 0x00
db 0xb3, 0xed, 0x59, 0x02, 0x6e, 0x1e, 0x31, 0x01, 0x6f, 0x32, 0x4d, 0x00, 0x46, 0xc3, 0x30, 0x01
db 0x3c, 0xef, 0xcc, 0x01, 0xb2, 0x24, 0xc4, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x8c, 0x91, 0x64, 0x03, 0xc0, 0x8f, 0x14, 0x00, 0x7b, 0x8a, 0x63, 0x01, 0x5b, 0xfd, 0xa1, 0x01
db 0x13, 0xd0, 0x8a, 0x02, 0xa4, 0xe5, 0x81, 0x00, 0x33, 0x4f, 0xa5, 0x01, 0x01, 0xe1, 0x74, 0x01
db 0x57, 0x02, 0x3d, 0x00, 0x6c, 0x85, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xcf, 0x1d, 0x05, 0x00, 0x1d, 0x2b, 0xf6, 0x00, 0xad, 0xd0, 0x43, 0x01, 0xbd, 0xad, 0x42, 0x00
db 0x90, 0xda, 0x0f, 0x00, 0xeb, 0x3c, 0x74, 0x01, 0xe4, 0xe5, 0x73, 0x01, 0x49, 0xc7, 0x7b, 0x01
db 0x7a, 0x13, 0xb7, 0x03, 0x96, 0xce, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x8a, 0x21, 0xf9, 0x00, 0x7c, 0x8c, 0x5b, 0x01, 0xf8, 0x02, 0xe1, 0x00, 0xe2, 0xd7, 0x58, 0x01
db 0xb8, 0xa5, 0x69, 0x01, 0x76, 0xf1, 0xb2, 0x00, 0x7a, 0x34, 0x8b, 0x01, 0xf2, 0xfe, 0x4c, 0x01
db 0xe3, 0xa4, 0x14, 0x02, 0x95, 0x15, 0x7f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xe5, 0x7a, 0x6d, 0x00, 0x71, 0xc3, 0x95, 0x01, 0x6d, 0xe2, 0x91, 0x03, 0xc6, 0xa7, 0x62, 0x00
db 0xab, 0x42, 0x3f, 0x00, 0x86, 0xad, 0x0d, 0x01, 0x98, 0x81, 0x4f, 0x02, 0x2a, 0x2b, 0x54, 0x01
db 0x54, 0xc4, 0x14, 0x00, 0x71, 0xc4, 0x89, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x8e, 0x98, 0x90, 0x03, 0x9d, 0x79, 0xb8, 0x00, 0x12, 0x49, 0xe4, 0x02, 0xe6, 0xe2, 0x78, 0x00
db 0x54, 0x56, 0x07, 0x00, 0xed, 0x3e, 0x92, 0x01, 0x72, 0xcd, 0x40, 0x00, 0x76, 0x7c, 0xa3, 0x00
db 0x66, 0xd4, 0x09, 0x00, 0x1d, 0x53, 0xc8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x70, 0x17, 0x65, 0x02, 0x01, 0x9d, 0x60, 0x00, 0x65, 0xc2, 0x86, 0x02, 0x3c, 0x51, 0x34, 0x01
db 0x81, 0x92, 0xee, 0x00, 0x3c, 0x22, 0x5d, 0x00, 0x0c, 0x76, 0x5c, 0x03, 0x36, 0x9b, 0x67, 0x00
db 0xb8, 0xec, 0x73, 0x00, 0x50, 0xaa, 0x6f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xe4, 0x9b, 0xc8, 0x02, 0x44, 0xc2, 0x6f, 0x01, 0x83, 0x8c, 0xf3, 0x02, 0x72, 0xeb, 0x8b, 0x01
db 0x2c, 0xce, 0xb3, 0x02, 0x65, 0xb0, 0x97, 0x00, 0x7b, 0x01, 0x4f, 0x03, 0x7f, 0x95, 0xdd, 0x01
db 0x61, 0x8f, 0x14, 0x00, 0x57, 0xb3, 0xea, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xf8, 0xd2, 0x43, 0x03, 0xfc, 0x98, 0x33, 0x00, 0x8e, 0x36, 0x1e, 0x01, 0x1f, 0x2a, 0x78, 0x00
db 0xea, 0x9e, 0x01, 0x00, 0x6f, 0x7b, 0x11, 0x00, 0xd1, 0xd0, 0x28, 0x01, 0xbb, 0xe6, 0xa5, 0x01
db 0x1b, 0x4f, 0x94, 0x01, 0xe1, 0x41, 0x2b, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x01, 0x83, 0x31, 0x03, 0x30, 0xcd, 0x8e, 0x01, 0xb1, 0xd0, 0x04, 0x01, 0x8b, 0x39, 0x38, 0x00
db 0x01, 0x67, 0x72, 0x03, 0x8c, 0xa8, 0x9d, 0x01, 0x69, 0x97, 0x2d, 0x00, 0x81, 0xa6, 0xa7, 0x00
db 0x28, 0x90, 0x1d, 0x03, 0x32, 0xfc, 0xeb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x5e, 0x40, 0x20, 0x02, 0xce, 0xfa, 0x71, 0x01, 0xf8, 0x30, 0xd9, 0x02, 0x6a, 0x6d, 0x7f, 0x01
db 0x47, 0x8c, 0x3b, 0x02, 0xf9, 0xd5, 0x29, 0x01, 0x56, 0x24, 0x97, 0x02, 0x24, 0xa5, 0xa3, 0x00
db 0xd2, 0x4c, 0x6f, 0x00, 0xfa, 0x39, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x05, 0x35, 0xc5, 0x00, 0xfd, 0xc2, 0x90, 0x01, 0x44, 0x72, 0x50, 0x00, 0xf9, 0x30, 0x99, 0x00
db 0x70, 0x92, 0xa3, 0x01, 0xc6, 0x27, 0xd3, 0x01, 0x47, 0xbc, 0x99, 0x03, 0x3d, 0xe1, 0xcf, 0x01
db 0x99, 0xbd, 0x32, 0x03, 0x7d, 0x3e, 0xb3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xe4, 0xf5, 0x03, 0x02, 0xb5, 0x27, 0x36, 0x00, 0xf8, 0x8a, 0x01, 0x00, 0x81, 0x85, 0x47, 0x01
db 0x18, 0x22, 0x4a, 0x00, 0xb7, 0x3b, 0x2e, 0x00, 0xd0, 0x84, 0x93, 0x03, 0x62, 0xea, 0x46, 0x01
db 0x93, 0x96, 0x0b, 0x02, 0x5f, 0x15, 0x17, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x6f, 0x7e, 0xc9, 0x03, 0x47, 0x8c, 0x73, 0x00, 0x1f, 0xdb, 0xb5, 0x03, 0xcf, 0x8f, 0x80, 0x01
db 0x98, 0xfc, 0xe8, 0x01, 0xdd, 0x25, 0xed, 0x01, 0x45, 0x50, 0xbf, 0x01, 0x2b, 0x5c, 0xeb, 0x00
db 0x98, 0xfe, 0x78, 0x01, 0x30, 0x55, 0xb8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xb0, 0x0e, 0xc2, 0x01, 0x22, 0xec, 0xae, 0x01, 0xee, 0x9e, 0x0b, 0x03, 0x7e, 0xd0, 0xb7, 0x01
db 0x6f, 0xe1, 0x87, 0x01, 0xfb, 0x21, 0x44, 0x01, 0x31, 0xa7, 0x9f, 0x00, 0xd7, 0xb6, 0x40, 0x00
db 0x61, 0x18, 0x84, 0x00, 0xbc, 0x7f, 0xa2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xbf, 0x9a, 0xd6, 0x02, 0xbf, 0xcd, 0x58, 0x00, 0xec, 0xf9, 0x29, 0x01, 0xae, 0x19, 0x3c, 0x01
db 0x93, 0x5b, 0x6c, 0x02, 0xe7, 0x7f, 0x3a, 0x01, 0xba, 0xb2, 0x4b, 0x00, 0x6f, 0x22, 0x63, 0x00
db 0xca, 0x95, 0x2a, 0x00, 0xd9, 0xef, 0xab, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xc1, 0xd2, 0xf5, 0x02, 0x18, 0x83, 0x37, 0x00, 0xb5, 0x4f, 0x73, 0x03, 0x73, 0x80, 0x25, 0x01
db 0xf6, 0xf0, 0x63, 0x02, 0xe0, 0x70, 0xad, 0x01, 0x06, 0x6d, 0xb5, 0x01, 0xbd, 0x8f, 0x18, 0x01
db 0x03, 0x95, 0x1b, 0x01, 0xe1, 0xd2, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xcc, 0xa8, 0x13, 0x01, 0x3e, 0x1c, 0x54, 0x01, 0xbc, 0x2b, 0xac, 0x02, 0x67, 0x58, 0xd9, 0x01
db 0x59, 0x74, 0xf4, 0x01, 0x89, 0xd4, 0xea, 0x00, 0x48, 0x5b, 0xab, 0x00, 0x45, 0x3b, 0xdb, 0x01
db 0x01, 0xb8, 0xed, 0x00, 0x4f, 0x02, 0x4b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x0f, 0x19, 0xb8, 0x00, 0xc2, 0xe4, 0x1f, 0x01, 0x82, 0x1f, 0x62, 0x00, 0xd7, 0x08, 0x05, 0x01
db 0x76, 0x5a, 0x1a, 0x00, 0xfd, 0xd7, 0xc7, 0x00, 0x6d, 0xb9, 0xaa, 0x03, 0xdc, 0xd9, 0x9c, 0x01
db 0x35, 0x66, 0x9c, 0x01, 0x1e, 0xaa, 0xce, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xf2, 0x5c, 0x08, 0x01, 0xaf, 0x47, 0xfd, 0x01, 0xe1, 0xf5, 0xe3, 0x03, 0x99, 0x3e, 0x4b, 0x00
db 0x6a, 0xd4, 0xe3, 0x01, 0x3c, 0x03, 0x60, 0x00, 0xa8, 0xf0, 0x5f, 0x01, 0xd8, 0xcd, 0x50, 0x01
db 0x21, 0x8e, 0x9e, 0x02, 0xbc, 0xf1, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xb1, 0x6c, 0x15, 0x00, 0x3f, 0x62, 0x3d, 0x00, 0x69, 0xf0, 0xa4, 0x01, 0x53, 0xd0, 0xd8, 0x00
db 0xea, 0x8a, 0xb6, 0x01, 0xb6, 0x5a, 0xca, 0x01, 0x43, 0xae, 0x16, 0x03, 0x44, 0xdc, 0x34, 0x01
db 0x58, 0x8d, 0x1c, 0x00, 0x43, 0xb3, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x81, 0xc7, 0x18, 0x03, 0x1f, 0x44, 0x35, 0x01, 0x5e, 0x1a, 0xa5, 0x03, 0xf4, 0x93, 0x92, 0x01
db 0x37, 0xbb, 0x48, 0x00, 0x41, 0x33, 0x3d, 0x01, 0x1e, 0x15, 0x43, 0x01, 0xe1, 0x74, 0x9c, 0x01
db 0x14, 0x19, 0x91, 0x00, 0xde, 0xdd, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x6f, 0xc2, 0x6b, 0x00, 0x5f, 0x8e, 0xd4, 0x00, 0xbe, 0x7b, 0x22, 0x00, 0xa8, 0x9e, 0x62, 0x00
db 0x8b, 0x5f, 0xea, 0x01, 0x30, 0xa3, 0x79, 0x01, 0x5f, 0x1d, 0x7a, 0x02, 0x8e, 0x8f, 0xbf, 0x01
db 0x2a, 0x6e, 0xd2, 0x02, 0x5e, 0xb6, 0xc6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0xb6, 0x1a, 0x70, 0x01, 0x77, 0xda, 0x51, 0x00, 0x67, 0xb6, 0xb4, 0x01, 0x7c, 0xce, 0xa0, 0x00
db 0x7b, 0xe3, 0x8a, 0x03, 0x52, 0xc8, 0x2a, 0x01, 0xfe, 0xb0, 0xa0, 0x03, 0xbb, 0xc2, 0x97, 0x00
db 0xd2, 0x17, 0xa0, 0x00, 0x2a, 0x8b, 0xeb, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
db 0x62, 0xb9, 0x20, 0x01, 0x42, 0xfb, 0x05, 0x00, 0xfd, 0xb6, 0x53, 0x03, 0xce, 0xf8, 0x61, 0x00
db 0x63, 0x14, 0x7a, 0x00, 0x64, 0x0a, 0x56, 0x01, 0x92, 0xa7, 0xe0, 0x00, 0x92, 0x7c, 0x90, 0x01
db 0x22, 0x66, 0x3a, 0x01, 0xf1, 0x47, 0x7b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
calign
.scalarmult_vartime_done:
lea rdi, [rsp+0x710]
mov rsi, r12
call ed25519$pack
; ed25519_verify...
mov rax, [rsp+0xdf0]
pxor xmm1, xmm1
movups xmm0, [rax]
pxor xmm0, [rsp+0x710]
movaps xmm7, xmm0
punpckhbw xmm0, xmm1
punpcklbw xmm7, xmm1
movaps xmm8, xmm0
pxor xmm0, xmm0
movaps xmm2, xmm7
punpcklwd xmm2, xmm0
punpckhwd xmm7, xmm0
movaps xmm6, xmm2
movaps xmm2, xmm8
punpckhwd xmm8, xmm0
punpcklwd xmm2, xmm0
movaps xmm15, xmm8
movaps xmm9, xmm2
movups xmm2, [rax+0x10]
pxor xmm2, [rsp+0x720]
movaps xmm4, xmm2
punpckhbw xmm2, xmm1
punpcklbw xmm4, xmm1
movaps xmm1, xmm4
punpckhwd xmm4, xmm0
punpcklwd xmm1, xmm0
movaps xmm3, xmm1
movaps xmm1, xmm2
punpckhwd xmm2, xmm0
punpcklwd xmm1, xmm0
movaps xmm0, xmm9
movaps xmm5, xmm1
pxor xmm1, xmm1
punpckhdq xmm0, xmm1
punpckldq xmm9, xmm1
punpckldq xmm15, xmm1
punpckhdq xmm8, xmm1
por xmm0, xmm9
por xmm0, xmm15
movaps xmm15, xmm6
punpckldq xmm6, xmm1
punpckhdq xmm15, xmm1
por xmm0, xmm8
por xmm0, xmm15
movaps xmm15, xmm7
punpckldq xmm7, xmm1
punpckhdq xmm15, xmm1
por xmm0, xmm15
por xmm0, xmm7
movaps xmm7, xmm2
punpckldq xmm2, xmm1
punpckhdq xmm7, xmm1
por xmm0, xmm6
por xmm0, xmm7
movaps xmm7, xmm5
punpckldq xmm5, xmm1
punpckhdq xmm7, xmm1
por xmm0, xmm2
por xmm0, xmm7
movaps xmm7, xmm4
punpckldq xmm4, xmm1
punpckhdq xmm7, xmm1
por xmm0, xmm5
por xmm0, xmm7
movaps xmm7, xmm3
punpckldq xmm3, xmm1
punpckhdq xmm7, xmm1
por xmm0, xmm4
por xmm0, xmm7
por xmm0, xmm3
movaps xmm7, xmm0
psrldq xmm7, 0x8
por xmm0, xmm7
movq [rsp], xmm0
mov rax, [rsp]
sub rax, 0x1
shr rax, 0x8
and eax, 0x1
; eax is fine for our bool return.
.bailout:
mov rcx, [rsp+0xdf8]
add rsp, rcx
add rsp, 0xe00
pop r15 r14 r13 r12 rbx rbp
epilog
align 16
.one:
dq 1, 0, 0, 0, 0, 0
.zero:
dq 0, 0, 0, 0
align 16
.ec2d:
dd 0x02b2f159,0x01a6e509,0x022add7a,0x00d4141d,0x00038052,0x00f3d130,0x03407977,0x019ce331,0x01c56dff,0x00901b67
dq 0x0
falign
.full_to_pniels:
movaps xmm1, [rsi+0x30]
add rdi, 0x90
add rsi, 0x90
mov edx, .ec2d
paddd xmm1, [ed25519$packed2p0]
psubd xmm1, [rsi-0x90]
pshufd xmm5, xmm1, 0xa0
pshufd xmm1, xmm1, 0xf5
movaps xmm3, [ed25519$sse2_bot32bitmask]
pand xmm5, xmm3
pand xmm1, xmm3
movaps xmm0, [rsi-0x50]
movaps xmm3, xmm5
paddd xmm0, [ed25519$packed2p1]
psubd xmm0, [rsi-0x80]
movaps xmm4, xmm1
pand xmm5, [ed25519$packedmask26]
psrld xmm3, 0x1a
movaps xmm2, [rsi-0x40]
pand xmm1, [ed25519$packedmask25]
psrld xmm4, 0x19
movaps xmm6, xmm4
paddd xmm2, [ed25519$packed2p2]
psrldq xmm4, 8
psubd xmm2, [rsi-0x70]
pslldq xmm6, 8
movaps [rdi-0x70], xmm2
paddd xmm0, xmm4
paddd xmm5, xmm6
movaps [rdi-0x80], xmm0
paddd xmm3, xmm1
movaps xmm1, xmm5
punpckldq xmm5, xmm3
punpckhdq xmm1, xmm3
punpcklqdq xmm5, xmm1
movaps [rdi-0x90], xmm5
movaps xmm2, [rsi-0x90]
movaps xmm1, [rsi-0x80]
paddd xmm2, [rsi-0x60]
movaps xmm0, [rsi-0x70]
paddd xmm1, [rsi-0x50]
paddd xmm0, [rsi-0x40]
movaps [rdi-0x60], xmm2
movaps [rdi-0x50], xmm1
movaps [rdi-0x40], xmm0
movaps xmm2, [rsi-0x30]
movaps xmm1, [rsi-0x20]
movaps xmm0, [rsi-0x10]
movaps [rdi-0x30], xmm2
movaps [rdi-0x20], xmm1
movaps [rdi-0x10], xmm0
call curve25519$mul
ret
falign
.pnielsadd_p1p1:
sub rsp, 0x130
mov r9d, ecx
movzx r8d, cl
movaps xmm8, [rsi+0x30]
xor r9d, 0x1
movzx eax, r9b
lea r8, [r8+r8*2]
add ecx, 0x2
movaps xmm1, [rsi]
lea rax, [rax+rax*2]
shl r8, 0x4
movsxd rcx, ecx
movaps xmm0, [ed25519$packed2p0]
shl rax, 0x4
add r8, rdx
add rax, rdx
paddd xmm0, xmm8
psubd xmm0, xmm1
pshufd xmm15, xmm0, 0xa0
pshufd xmm10, xmm0, 0xf5
movaps xmm6, [rsi+0x10]
paddd xmm1, xmm8
pand xmm15, [ed25519$sse2_bot32bitmask]
movaps xmm7, [rsi+0x40]
pand xmm10, [ed25519$sse2_bot32bitmask]
movaps xmm5, [ed25519$packed2p1]
movaps xmm0, xmm15
paddd xmm5, xmm7
psubd xmm5, xmm6
pand xmm15, [ed25519$packedmask26]
paddd xmm7, xmm6
movaps xmm9, xmm10
psrld xmm0, 0x1a
movaps xmm3, [rsi+0x50]
pand xmm10, [ed25519$packedmask25]
psrld xmm9, 0x19
movaps xmm11, xmm9
psrldq xmm9, 0x8
paddd xmm5, xmm9
movaps xmm9, xmm5
movaps xmm2, [rsi+0x20]
pslldq xmm11, 0x8
paddd xmm15, xmm11
punpcklqdq xmm9, xmm7
paddd xmm0, xmm10
movaps xmm10, xmm15
punpckldq xmm15, xmm0
movaps xmm4, [ed25519$packed2p2]
punpckhdq xmm10, xmm0
movaps xmm0, xmm7
movaps xmm7, xmm9
paddd xmm4, xmm3
psubd xmm4, xmm2
punpckhqdq xmm5, xmm0
movaps xmm0, [rax]
paddd xmm2, xmm3
punpcklqdq xmm15, xmm10
psrlq xmm7, 0x20
punpcklqdq xmm4, xmm2
movaps xmm11, [r8+0x20]
movaps xmm6, xmm15
punpckhqdq xmm15, xmm1
movaps xmm2, xmm4
punpcklqdq xmm6, xmm1
movaps xmm1, [r8]
psrlq xmm2, 0x20
punpcklqdq xmm11, [rax+0x20]
movaps xmm14, xmm15
movaps xmm3, xmm1
punpckhqdq xmm1, xmm0
movaps xmm12, xmm6
psrlq xmm14, 0x20
movaps [rsp-0x68], xmm7
movaps xmm7, xmm5
psrlq xmm12, 0x20
movaps [rsp-0x58], xmm5
punpcklqdq xmm3, xmm0
psrlq xmm7, 0x20
movaps xmm0, xmm1
movaps xmm10, xmm11
movaps [rsp-0x28], xmm7
psrlq xmm0, 0x20
psrlq xmm10, 0x20
movaps xmm8, xmm6
movaps [rsp+0x48], xmm2
movaps xmm2, xmm0
movaps [rsp-0x8], xmm4
movaps xmm4, xmm3
psrlq xmm3, 0x20
movaps [rsp-0x38], xmm10
movaps xmm10, xmm6
pmuludq xmm8, xmm4
movaps [rsp+0x8], xmm8
pmuludq xmm10, xmm3
movaps xmm8, xmm15
movaps [rsp-0x18], xmm11
pmuludq xmm8, xmm4
movaps xmm5, [rax+0x10]
lea rax, [rcx+rcx*2]
movaps xmm7, [r8+0x10]
shl rax, 0x4
add rax, rdi
movaps xmm0, xmm7
punpckhqdq xmm7, xmm5
punpcklqdq xmm0, xmm5
movaps xmm5, xmm7
psrlq xmm5, 0x20
movaps [rsp-0x48], xmm5
movaps xmm5, xmm12
movaps xmm13, xmm0
pmuludq xmm5, xmm4
paddq xmm5, xmm10
movaps xmm10, xmm12
movaps [rsp+0x18], xmm5
psrlq xmm13, 0x20
pslld xmm10, 0x1
movaps xmm5, xmm10
pmuludq xmm10, xmm3
movaps [rsp-0x78], xmm13
movaps xmm13, xmm7
movaps xmm7, xmm10
movaps xmm10, xmm6
paddq xmm7, xmm8
movaps xmm8, xmm7
pmuludq xmm10, xmm1
paddq xmm8, xmm10
movaps xmm10, xmm14
movaps [rsp+0x28], xmm8
movaps xmm8, xmm15
pmuludq xmm10, xmm4
pmuludq xmm8, xmm3
paddq xmm8, xmm10
movaps xmm10, xmm12
pmuludq xmm10, xmm1
movaps xmm7, xmm10
movaps xmm10, xmm6
paddq xmm7, xmm8
movaps xmm11, xmm7
pmuludq xmm10, xmm2
paddq xmm11, xmm10
movaps xmm10, xmm14
movaps [rsp+0x38], xmm11
pslld xmm10, 0x1
movaps xmm7, xmm10
movaps xmm10, xmm9
movaps xmm8, xmm7
pmuludq xmm10, xmm4
pmuludq xmm8, xmm3
paddq xmm8, xmm10
movaps xmm10, xmm15
pmuludq xmm10, xmm1
paddq xmm10, xmm8
movaps xmm8, xmm5
pmuludq xmm8, xmm2
paddq xmm8, xmm10
movaps xmm10, xmm6
pmuludq xmm10, xmm0
paddq xmm8, xmm10
movaps [rsp+0x88], xmm8
movaps xmm10, xmm9
movaps [rsp+0x58], xmm13
pmuludq xmm10, xmm3
movaps xmm11, [rsp-0x68]
movaps xmm8, xmm11
pmuludq xmm8, xmm4
paddq xmm10, xmm8
movaps xmm8, xmm14
pmuludq xmm8, xmm1
paddq xmm8, xmm10
movaps xmm10, xmm15
pmuludq xmm10, xmm2
paddq xmm10, xmm8
movaps xmm8, xmm12
pmuludq xmm8, xmm0
paddq xmm8, xmm10
movaps xmm10, [rsp-0x78]
pmuludq xmm10, xmm6
paddq xmm8, xmm10
movaps xmm10, xmm11
movaps [rsp+0x98], xmm8
pslld xmm10, 0x1
movaps xmm11, xmm10
movaps xmm8, xmm11
pmuludq xmm11, xmm2
movaps xmm10, [rsp-0x58]
pmuludq xmm8, xmm3
pmuludq xmm10, xmm4
paddq xmm8, xmm10
movaps xmm10, xmm9
pmuludq xmm10, xmm1
paddq xmm10, xmm8
movaps xmm8, xmm7
pmuludq xmm8, xmm2
paddq xmm8, xmm10
movaps xmm10, xmm15
pmuludq xmm10, xmm0
paddq xmm10, xmm8
movaps xmm8, [rsp-0x78]
pmuludq xmm8, xmm5
paddq xmm8, xmm10
movaps xmm10, xmm13
pmuludq xmm10, xmm6
paddq xmm8, xmm10
movaps xmm10, [rsp-0x58]
movaps [rsp+0xa8], xmm8
pmuludq xmm10, xmm3
movaps xmm8, [rsp-0x28]
pmuludq xmm8, xmm4
paddq xmm10, xmm8
movaps xmm8, [rsp-0x68]
pmuludq xmm8, xmm1
paddq xmm8, xmm10
movaps xmm10, xmm9
pmuludq xmm10, xmm2
paddq xmm10, xmm8
movaps xmm8, xmm14
pmuludq xmm8, xmm0
paddq xmm8, xmm10
movaps xmm10, [rsp-0x78]
pmuludq xmm10, xmm15
paddq xmm10, xmm8
movaps xmm8, xmm13
pmuludq xmm8, xmm12
paddq xmm8, xmm10
movaps xmm10, [rsp-0x48]
pmuludq xmm10, xmm6
paddq xmm8, xmm10
movaps xmm10, [rsp-0x28]
movaps [rsp+0xb8], xmm8
pslld xmm10, 0x1
pmuludq xmm10, xmm3
movaps xmm8, [rsp-0x8]
pmuludq xmm8, xmm4
paddq xmm10, xmm8
movaps xmm8, [rsp-0x58]
pmuludq xmm4, [rsp+0x48]
pmuludq xmm8, xmm1
paddq xmm8, xmm10
paddq xmm11, xmm8
movaps xmm8, xmm9
pmuludq xmm8, xmm0
paddq xmm8, xmm11
movaps xmm11, [rsp-0x78]
pmuludq xmm7, xmm11
paddq xmm7, xmm8
movaps xmm8, xmm13
pmuludq xmm8, xmm15
paddq xmm8, xmm7
movaps xmm7, [rsp-0x48]
pmuludq xmm5, xmm7
paddq xmm5, xmm8
movaps xmm8, [rsp-0x18]
movaps xmm10, xmm8
pmuludq xmm10, xmm6
paddq xmm10, xmm5
movaps xmm5, [rsp-0x8]
pmuludq xmm5, xmm3
paddq xmm5, xmm4
movaps xmm4, [rsp-0x28]
pmuludq xmm4, xmm1
paddq xmm4, xmm5
movaps xmm5, [rsp-0x58]
pmuludq xmm5, xmm2
paddq xmm5, xmm4
movaps xmm4, [rsp-0x68]
pmuludq xmm4, xmm0
paddq xmm4, xmm5
movaps xmm5, xmm11
movaps xmm11, [rsp-0x38]
pmuludq xmm5, xmm9
paddq xmm5, xmm4
movaps xmm4, xmm13
movaps xmm13, [ed25519$packednineteen]
pmuludq xmm6, xmm11
pmuludq xmm4, xmm14
paddq xmm4, xmm5
movaps xmm5, xmm7
pmuludq xmm14, xmm13
movaps xmm7, [rsp-0x28]
pmuludq xmm9, xmm13
pmuludq xmm5, xmm15
paddq xmm5, xmm4
movaps xmm4, xmm8
pmuludq xmm7, xmm13
movaps xmm8, xmm7
pslld xmm7, 0x1
pmuludq xmm4, xmm12
paddq xmm4, xmm5
paddq xmm4, xmm6
movaps xmm6, xmm14
pmuludq xmm15, xmm13
pmuludq xmm12, xmm13
movaps [rsp+0xc8], xmm4
pslld xmm12, 0x1
pslld xmm6, 0x1
movaps [rsp+0x68], xmm6
movaps xmm6, [rsp-0x68]
pmuludq xmm6, xmm13
movaps xmm4, xmm6
movaps xmm5, [rsp-0x58]
pslld xmm4, 0x1
movaps [rsp+0x78], xmm6
pmuludq xmm5, xmm13
movaps [rsp-0x68], xmm4
movaps xmm4, [rsp-0x8]
movaps [rsp-0x58], xmm7
pmuludq xmm12, [rsp-0x38]
pmuludq xmm4, xmm13
movaps xmm11, [rsp-0x18]
pmuludq xmm11, xmm15
paddq xmm11, xmm12
movaps xmm12, [rsp+0x68]
pmuludq xmm15, [rsp-0x38]
pmuludq xmm12, [rsp-0x48]
paddq xmm12, xmm11
movaps xmm11, [rsp+0x58]
pmuludq xmm11, xmm9
paddq xmm11, xmm12
movaps xmm12, [rsp-0x68]
pmuludq xmm12, [rsp-0x78]
paddq xmm12, xmm11
movaps xmm11, xmm5
movaps xmm7, [rsp+0x48]
pmuludq xmm11, xmm0
paddq xmm11, xmm12
movaps xmm12, [rsp-0x58]
pmuludq xmm7, xmm13
movaps xmm6, xmm7
pmuludq xmm12, xmm2
paddq xmm12, xmm11
movaps xmm11, xmm4
pslld xmm6, 0x1
pmuludq xmm3, xmm6
pmuludq xmm11, xmm1
paddq xmm11, xmm12
movaps xmm12, [rsp-0x18]
paddq xmm3, xmm11
paddq xmm3, [rsp+0x8]
pmuludq xmm1, xmm7
pmuludq xmm14, xmm12
paddq xmm14, xmm15
movaps xmm15, [rsp-0x48]
movaps [rsp+0x8], xmm3
movaps xmm3, xmm15
pmuludq xmm3, xmm9
paddq xmm3, xmm14
movaps xmm11, [rsp+0x78]
movaps xmm14, [rsp+0x58]
pmuludq xmm11, xmm14
paddq xmm11, xmm3
movaps xmm3, [rsp-0x78]
pmuludq xmm3, xmm5
paddq xmm3, xmm11
movaps xmm11, xmm8
pmuludq xmm11, xmm0
paddq xmm11, xmm3
movaps xmm3, xmm4
pmuludq xmm3, xmm2
paddq xmm3, xmm11
movaps xmm11, [rsp-0x38]
paddq xmm1, xmm3
paddq xmm1, [rsp+0x18]
pmuludq xmm2, xmm6
movaps [rsp+0x18], xmm1
movaps xmm1, xmm12
pmuludq xmm1, xmm9
pmuludq xmm9, xmm11
movaps xmm3, [rsp+0x68]
pmuludq xmm3, xmm11
paddq xmm1, xmm3
movaps xmm3, [rsp-0x68]
pmuludq xmm3, xmm15
paddq xmm3, xmm1
movaps xmm1, xmm14
pmuludq xmm1, xmm5
paddq xmm1, xmm3
movaps xmm3, [rsp-0x58]
pmuludq xmm3, [rsp-0x78]
paddq xmm3, xmm1
movaps xmm1, xmm4
pmuludq xmm1, xmm0
paddq xmm1, xmm3
paddq xmm2, xmm1
movaps xmm1, xmm15
paddq xmm2, [rsp+0x28]
pmuludq xmm0, xmm7
movaps [rsp+0x28], xmm2
pmuludq xmm1, xmm5
movaps xmm3, xmm15
movaps xmm15, xmm11
movaps xmm2, [rsp+0x78]
pmuludq xmm2, xmm12
paddq xmm2, xmm9
paddq xmm1, xmm2
movaps xmm2, xmm14
movaps xmm9, xmm12
pmuludq xmm2, xmm8
paddq xmm2, xmm1
movaps xmm1, [rsp-0x78]
pmuludq xmm8, xmm9
pmuludq xmm1, xmm4
paddq xmm1, xmm2
paddq xmm0, xmm1
paddq xmm0, [rsp+0x38]
movaps [rsp+0x38], xmm0
movaps xmm0, [rsp-0x68]
pmuludq xmm0, xmm11
movaps xmm1, xmm0
movaps xmm0, xmm12
movaps xmm12, [rsp-0x58]
movaps xmm2, xmm12
pmuludq xmm0, xmm5
paddq xmm0, xmm1
pmuludq xmm5, xmm15
paddq xmm8, xmm5
movaps xmm5, xmm3
pmuludq xmm2, xmm3
movaps xmm1, xmm2
movaps xmm2, xmm14
pmuludq xmm5, xmm6
paddq xmm1, xmm0
movaps xmm0, xmm14
pmuludq xmm2, xmm7
movaps xmm14, xmm9
movaps xmm9, [rsp+0x98]
pmuludq xmm0, xmm4
paddq xmm0, xmm1
movaps xmm1, [rsp-0x78]
pmuludq xmm1, xmm6
paddq xmm1, xmm0
movaps xmm0, [rsp+0x88]
paddq xmm0, xmm1
movaps xmm1, xmm2
movaps xmm11, xmm0
movaps xmm0, xmm3
movaps xmm2, xmm14
pmuludq xmm0, xmm4
paddq xmm0, xmm8
paddq xmm1, xmm0
movaps xmm0, xmm12
paddq xmm9, xmm1
pmuludq xmm7, xmm2
movaps xmm3, xmm15
pmuludq xmm0, xmm15
movaps xmm1, xmm0
movaps xmm0, xmm14
pmuludq xmm6, xmm3
paddq xmm10, xmm6
movaps xmm3, [ed25519$packedmask26]
pmuludq xmm0, xmm4
paddq xmm0, xmm1
movaps xmm1, xmm5
movaps xmm5, [rsp+0xa8]
pmuludq xmm4, xmm15
paddq xmm7, xmm4
paddq xmm1, xmm0
movaps xmm0, xmm11
paddq xmm7, [rsp+0xb8]
paddq xmm5, xmm1
movaps xmm1, [rsp+0x8]
movaps xmm14, xmm5
psrlq xmm0, 0x1a
paddq xmm0, xmm9
movaps xmm15, xmm7
movaps xmm2, xmm1
pand xmm3, xmm11
pand xmm1, [ed25519$packedmask26]
psrlq xmm2, 0x1a
paddq xmm2, [rsp+0x18]
movaps xmm5, xmm2
movaps xmm4, xmm2
movaps xmm2, xmm0
pand xmm5, [ed25519$packedmask25]
psrlq xmm4, 0x19
psrlq xmm2, 0x19
paddq xmm4, [rsp+0x28]
paddq xmm2, xmm14
movaps xmm7, xmm4
movaps xmm6, xmm4
movaps xmm4, xmm2
pand xmm7, [ed25519$packedmask26]
psrlq xmm6, 0x1a
psrlq xmm4, 0x1a
paddq xmm6, [rsp+0x38]
paddq xmm4, xmm15
movaps xmm9, xmm6
movaps xmm8, xmm6
movaps xmm6, xmm4
pand xmm9, [ed25519$packedmask25]
psrlq xmm6, 0x19
paddq xmm10, xmm6
movaps xmm6, xmm10
pand xmm10, [ed25519$packedmask26]
psrlq xmm8, 0x19
paddq xmm3, xmm8
psrlq xmm6, 0x1a
paddq xmm6, [rsp+0xc8]
pand xmm0, [ed25519$packedmask25]
pand xmm4, [ed25519$packedmask25]
movaps xmm8, xmm10
movaps xmm10, xmm6
pand xmm2, [ed25519$packedmask26]
movaps xmm12, xmm8
psrlq xmm10, 0x19
pmuludq xmm10, xmm13
paddq xmm1, xmm10
movaps xmm11, xmm1
pand xmm1, [ed25519$packedmask26]
movaps xmm10, xmm3
psrlq xmm11, 0x1a
paddq xmm5, xmm11
pand xmm3, [ed25519$packedmask26]
psrlq xmm10, 0x1a
paddq xmm0, xmm10
movaps xmm10, xmm7
punpckhdq xmm7, xmm9
movaps xmm11, xmm1
punpckhdq xmm1, xmm5
punpckldq xmm10, xmm9
punpckldq xmm11, xmm5
movaps xmm5, xmm1
pand xmm6, [ed25519$packedmask25]
movaps xmm14, xmm11
punpcklqdq xmm5, xmm7
movaps xmm11, xmm3
punpckhdq xmm3, xmm0
punpcklqdq xmm14, xmm10
movaps xmm10, xmm2
punpckldq xmm11, xmm0
punpckhdq xmm2, xmm4
movaps xmm7, xmm5
movaps xmm5, xmm3
punpckldq xmm10, xmm4
movaps xmm15, xmm11
punpcklqdq xmm5, xmm2
movaps [rsp+0xa8], xmm7
punpcklqdq xmm15, xmm10
movaps xmm1, xmm5
movaps xmm5, xmm8
movaps [rsp+0x48], xmm14
movaps xmm0, xmm7
punpckhdq xmm5, xmm6
movaps [rsp+0x58], xmm15
paddd xmm0, [rsp+0x48]
movaps xmm2, xmm0
movaps xmm0, xmm1
punpckldq xmm12, xmm6
movaps [rsp+0xb8], xmm1
paddd xmm0, [rsp+0x58]
movaps xmm1, xmm0
movaps xmm0, xmm5
movaps [rdi+0x30], xmm2
paddd xmm0, xmm12
movaps [rdi+0x40], xmm1
movaps [rdi+0x50], xmm0
movaps [rsp+0xc8], xmm5
movaps [rsp+0x68], xmm12
movaps xmm15, [rsi+0x60]
movaps xmm1, [rsi+0x90]
movaps xmm4, xmm15
movaps xmm5, [rsi+0x70]
punpckhqdq xmm15, xmm1
punpcklqdq xmm4, xmm1
movaps xmm11, [rsi+0x80]
movaps xmm9, xmm5
movaps xmm3, xmm15
punpcklqdq xmm11, [rsi+0xb0]
movaps xmm6, xmm4
movaps xmm0, [rsi+0xa0]
psrlq xmm3, 0x20
movaps xmm14, xmm3
psrlq xmm6, 0x20
movaps xmm12, xmm6
movaps xmm1, [rdx+0x60]
punpcklqdq xmm9, xmm0
punpckhqdq xmm5, xmm0
movaps xmm10, xmm1
movaps xmm0, [rdx+0x90]
movaps xmm3, xmm11
movaps xmm2, xmm9
punpckhqdq xmm1, xmm0
punpcklqdq xmm10, xmm0
movaps xmm7, [rdx+0x70]
psrlq xmm3, 0x20
movaps xmm6, xmm5
psrlq xmm2, 0x20
movaps [rsp-0x48], xmm5
movaps xmm5, xmm10
psrlq xmm6, 0x20
movaps [rsp+0x78], xmm3
movaps xmm3, xmm10
movaps xmm10, xmm1
movaps [rsp-0x58], xmm2
psrlq xmm3, 0x20
psrlq xmm10, 0x20
movaps xmm2, xmm10
movaps [rsp-0x28], xmm6
movaps xmm10, xmm7
movaps xmm6, [rdx+0xa0]
punpcklqdq xmm10, xmm6
punpckhqdq xmm7, xmm6
movaps xmm0, xmm10
psrlq xmm10, 0x20
movaps [rsp-0x78], xmm10
movaps xmm6, xmm7
movaps [rsp-0x68], xmm7
psrlq xmm6, 0x20
movaps [rsp-0x38], xmm6
movaps xmm6, xmm12
pmuludq xmm6, xmm5
movaps xmm10, [rdx+0x80]
punpcklqdq xmm10, [rdx+0xb0]
movaps xmm8, xmm10
movaps [rsp-0x18], xmm10
psrlq xmm8, 0x20
movaps xmm10, xmm4
movaps [rsp-0x8], xmm8
movaps xmm8, xmm4
pmuludq xmm10, xmm5
movaps [rsp+0x8], xmm10
pmuludq xmm8, xmm3
paddq xmm6, xmm8
movaps xmm8, xmm12
movaps [rsp+0x18], xmm6
pslld xmm8, 0x1
movaps xmm6, xmm8
movaps xmm8, xmm15
movaps xmm7, xmm6
pmuludq xmm8, xmm5
pmuludq xmm7, xmm3
paddq xmm7, xmm8
movaps xmm8, xmm4
pmuludq xmm8, xmm1
paddq xmm7, xmm8
movaps xmm8, xmm14
movaps [rsp+0x28], xmm7
pmuludq xmm8, xmm5
movaps xmm7, xmm8
movaps xmm8, xmm15
pmuludq xmm8, xmm3
paddq xmm8, xmm7
movaps xmm7, xmm12
pmuludq xmm7, xmm1
paddq xmm7, xmm8
movaps xmm8, xmm4
movaps xmm10, xmm7
pmuludq xmm8, xmm2
paddq xmm10, xmm8
movaps xmm8, xmm14
movaps [rsp+0x38], xmm10
movaps xmm10, xmm9
pslld xmm8, 0x1
movaps xmm7, xmm8
pmuludq xmm8, xmm3
pmuludq xmm10, xmm5
paddq xmm8, xmm10
movaps xmm10, xmm15
pmuludq xmm10, xmm1
paddq xmm10, xmm8
movaps xmm8, xmm6
pmuludq xmm8, xmm2
paddq xmm8, xmm10
movaps xmm10, xmm4
pmuludq xmm10, xmm0
paddq xmm8, xmm10
movaps xmm10, xmm9
movaps [rsp+0xd8], xmm8
pmuludq xmm10, xmm3
movaps xmm8, [rsp-0x58]
pmuludq xmm8, xmm5
paddq xmm10, xmm8
movaps xmm8, xmm14
pmuludq xmm8, xmm1
paddq xmm8, xmm10
movaps xmm10, xmm15
pmuludq xmm10, xmm2
paddq xmm10, xmm8
movaps xmm8, xmm12
pmuludq xmm8, xmm0
paddq xmm8, xmm10
movaps xmm10, [rsp-0x78]
pmuludq xmm10, xmm4
paddq xmm8, xmm10
movaps xmm10, [rsp-0x48]
movaps [rsp+0xe8], xmm8
pmuludq xmm10, xmm5
movaps xmm8, [rsp-0x58]
pslld xmm8, 0x1
movaps [rsp+0x88], xmm8
pmuludq xmm8, xmm3
paddq xmm8, xmm10
movaps xmm10, xmm9
pmuludq xmm10, xmm1
paddq xmm10, xmm8
movaps xmm8, xmm7
pmuludq xmm7, [rsp-0x78]
pmuludq xmm8, xmm2
paddq xmm8, xmm10
movaps xmm10, xmm15
pmuludq xmm10, xmm0
paddq xmm10, xmm8
movaps xmm8, [rsp-0x78]
pmuludq xmm8, xmm6
paddq xmm8, xmm10
movaps xmm10, [rsp-0x68]
pmuludq xmm10, xmm4
paddq xmm8, xmm10
movaps xmm10, [rsp-0x48]
movaps [rsp+0xf8], xmm8
pmuludq xmm10, xmm3
movaps xmm8, [rsp-0x28]
pmuludq xmm8, xmm5
paddq xmm10, xmm8
movaps xmm8, [rsp-0x58]
pmuludq xmm8, xmm1
paddq xmm8, xmm10
movaps xmm10, xmm9
pmuludq xmm10, xmm2
paddq xmm10, xmm8
movaps xmm8, xmm14
pmuludq xmm8, xmm0
paddq xmm8, xmm10
movaps xmm10, [rsp-0x78]
pmuludq xmm10, xmm15
paddq xmm10, xmm8
movaps xmm8, [rsp-0x68]
pmuludq xmm8, xmm12
paddq xmm8, xmm10
movaps xmm10, [rsp-0x38]
pmuludq xmm10, xmm4
paddq xmm8, xmm10
movaps xmm10, [rsp-0x28]
movaps [rsp+0x108], xmm8
pslld xmm10, 0x1
pmuludq xmm10, xmm3
movaps xmm8, xmm11
pmuludq xmm8, xmm5
paddq xmm10, xmm8
pmuludq xmm5, [rsp+0x78]
movaps xmm8, [rsp-0x48]
pmuludq xmm8, xmm1
paddq xmm8, xmm10
movaps xmm10, [rsp+0x88]
pmuludq xmm10, xmm2
paddq xmm10, xmm8
movaps xmm8, xmm9
pmuludq xmm8, xmm0
paddq xmm8, xmm10
paddq xmm7, xmm8
movaps xmm8, [rsp-0x68]
pmuludq xmm8, xmm15
paddq xmm8, xmm7
movaps xmm7, [rsp-0x38]
pmuludq xmm6, xmm7
paddq xmm6, xmm8
movaps xmm8, [rsp-0x18]
movaps xmm10, xmm8
pmuludq xmm10, xmm4
paddq xmm10, xmm6
movaps xmm6, xmm11
pmuludq xmm4, [rsp-0x8]
pmuludq xmm11, xmm13
pmuludq xmm6, xmm3
paddq xmm6, xmm5
movaps xmm5, [rsp-0x28]
pmuludq xmm5, xmm1
paddq xmm5, xmm6
movaps xmm6, [rsp-0x48]
pmuludq xmm6, xmm2
paddq xmm6, xmm5
movaps xmm5, [rsp-0x58]
pmuludq xmm5, xmm0
paddq xmm5, xmm6
movaps xmm6, [rsp-0x78]
pmuludq xmm6, xmm9
paddq xmm6, xmm5
movaps xmm5, [rsp-0x68]
pmuludq xmm9, xmm13
pmuludq xmm5, xmm14
paddq xmm5, xmm6
movaps xmm6, xmm7
pmuludq xmm14, xmm13
pmuludq xmm6, xmm15
paddq xmm6, xmm5
movaps xmm5, xmm8
pmuludq xmm15, xmm13
pmuludq xmm5, xmm12
paddq xmm5, xmm6
paddq xmm5, xmm4
movaps xmm4, xmm14
pmuludq xmm12, xmm13
pslld xmm12, 0x1
movaps [rsp+0x118], xmm5
pslld xmm4, 0x1
movaps [rsp+0x88], xmm4
pmuludq xmm12, [rsp-0x8]
movaps xmm4, [rsp-0x58]
movaps xmm6, [rsp-0x48]
pmuludq xmm4, xmm13
pmuludq xmm6, xmm13
movaps xmm8, [rsp-0x28]
movaps xmm5, xmm6
movaps xmm6, xmm4
movaps [rsp+0x98], xmm4
pmuludq xmm8, xmm13
movaps xmm4, xmm11
pslld xmm6, 0x1
movaps [rsp-0x58], xmm6
movaps xmm6, xmm8
pslld xmm6, 0x1
movaps [rsp-0x48], xmm6
movaps xmm11, [rsp+0x78]
pmuludq xmm11, xmm13
movaps xmm7, xmm11
pslld xmm11, 0x1
movaps xmm6, xmm11
movaps xmm11, [rsp-0x18]
pmuludq xmm11, xmm15
paddq xmm11, xmm12
movaps xmm12, [rsp+0x88]
pmuludq xmm15, [rsp-0x8]
pmuludq xmm3, xmm6
pmuludq xmm12, [rsp-0x38]
paddq xmm12, xmm11
movaps xmm11, [rsp-0x68]
pmuludq xmm11, xmm9
paddq xmm11, xmm12
movaps xmm12, [rsp-0x58]
pmuludq xmm12, [rsp-0x78]
paddq xmm12, xmm11
movaps xmm11, xmm5
pmuludq xmm11, xmm0
paddq xmm11, xmm12
movaps xmm12, [rsp-0x48]
pmuludq xmm12, xmm2
paddq xmm12, xmm11
movaps xmm11, xmm4
pmuludq xmm11, xmm1
paddq xmm11, xmm12
movaps xmm12, [rsp-0x18]
paddq xmm3, xmm11
paddq xmm3, [rsp+0x8]
pmuludq xmm1, xmm7
pmuludq xmm14, xmm12
paddq xmm14, xmm15
movaps xmm15, [rsp-0x38]
movaps [rsp+0x8], xmm3
movaps xmm3, xmm15
pmuludq xmm3, xmm9
paddq xmm3, xmm14
movaps xmm11, [rsp+0x98]
movaps xmm14, [rsp-0x68]
pmuludq xmm11, xmm14
paddq xmm11, xmm3
movaps xmm3, [rsp-0x78]
pmuludq xmm3, xmm5
paddq xmm3, xmm11
movaps xmm11, xmm8
pmuludq xmm11, xmm0
paddq xmm11, xmm3
movaps xmm3, xmm4
pmuludq xmm3, xmm2
paddq xmm3, xmm11
paddq xmm1, xmm3
movaps xmm3, [rsp+0x18]
pmuludq xmm2, xmm6
movaps xmm11, [rsp-0x8]
paddq xmm3, xmm1
movaps xmm1, xmm12
movaps [rsp+0x18], xmm3
pmuludq xmm1, xmm9
pmuludq xmm9, xmm11
movaps xmm3, [rsp+0x88]
pmuludq xmm3, xmm11
paddq xmm1, xmm3
movaps xmm3, [rsp-0x58]
pmuludq xmm3, xmm15
paddq xmm3, xmm1
movaps xmm1, xmm14
pmuludq xmm1, xmm5
paddq xmm1, xmm3
movaps xmm3, [rsp-0x48]
pmuludq xmm3, [rsp-0x78]
paddq xmm3, xmm1
movaps xmm1, xmm4
pmuludq xmm1, xmm0
paddq xmm1, xmm3
paddq xmm2, xmm1
paddq xmm2, [rsp+0x28]
movaps [rsp+0x28], xmm2
pmuludq xmm0, xmm7
movaps xmm3, xmm15
movaps xmm2, [rsp+0x98]
pmuludq xmm2, xmm12
paddq xmm2, xmm9
movaps xmm9, xmm15
movaps xmm15, xmm12
pmuludq xmm9, xmm5
movaps xmm1, xmm9
movaps xmm9, [rsp-0x78]
paddq xmm1, xmm2
movaps xmm2, xmm14
pmuludq xmm9, xmm4
pmuludq xmm2, xmm8
paddq xmm2, xmm1
movaps xmm1, xmm9
movaps xmm9, [rsp+0x38]
pmuludq xmm8, xmm15
paddq xmm1, xmm2
paddq xmm0, xmm1
paddq xmm9, xmm0
movaps [rsp+0x38], xmm9
movaps xmm9, xmm11
movaps xmm2, [rsp-0x58]
pmuludq xmm2, xmm11
movaps xmm11, xmm12
movaps xmm12, [rsp-0x48]
pmuludq xmm11, xmm5
movaps xmm0, xmm11
pmuludq xmm5, xmm9
movaps xmm11, xmm12
paddq xmm8, xmm5
movaps xmm5, xmm3
paddq xmm0, xmm2
movaps xmm2, xmm14
pmuludq xmm11, xmm3
movaps xmm1, xmm11
movaps xmm11, xmm14
movaps xmm14, xmm15
paddq xmm1, xmm0
pmuludq xmm11, xmm4
movaps xmm0, xmm11
movaps xmm11, [rsp-0x78]
paddq xmm0, xmm1
pmuludq xmm11, xmm6
movaps xmm1, xmm11
paddq xmm1, xmm0
movaps xmm0, xmm3
paddq xmm1, [rsp+0xd8]
movaps xmm11, xmm1
movaps xmm3, xmm9
pmuludq xmm0, xmm4
paddq xmm0, xmm8
movaps xmm8, xmm2
pmuludq xmm8, xmm7
movaps xmm1, xmm8
pmuludq xmm7, xmm14
movaps xmm8, xmm12
paddq xmm1, xmm0
paddq xmm1, [rsp+0xe8]
movaps xmm15, xmm1
pmuludq xmm8, xmm9
movaps xmm9, xmm14
pmuludq xmm9, xmm4
pmuludq xmm4, xmm3
paddq xmm7, xmm4
movaps xmm4, [rsp+0x108]
movaps xmm0, xmm9
movaps xmm9, xmm5
paddq xmm4, xmm7
movaps xmm7, [rsp+0x8]
pmuludq xmm9, xmm6
movaps xmm1, xmm9
paddq xmm0, xmm8
movaps xmm2, xmm7
pand xmm7, [ed25519$packedmask26]
pmuludq xmm6, xmm3
paddq xmm1, xmm0
paddq xmm1, [rsp+0xf8]
movaps xmm9, xmm1
movaps xmm1, xmm11
movaps xmm8, xmm4
psrlq xmm2, 0x1a
paddq xmm2, [rsp+0x18]
movaps xmm4, xmm2
paddq xmm10, xmm6
psrlq xmm1, 0x1a
paddq xmm1, xmm15
movaps xmm3, [ed25519$packedmask26]
movaps xmm0, xmm7
movaps xmm7, xmm1
psrlq xmm4, 0x19
movaps xmm1, xmm2
paddq xmm4, [rsp+0x28]
movaps xmm2, xmm7
pand xmm7, [ed25519$packedmask25]
movaps xmm6, xmm4
psrlq xmm2, 0x19
paddq xmm2, xmm9
pand xmm3, xmm11
psrlq xmm6, 0x1a
paddq xmm6, [rsp+0x38]
pand xmm1, [ed25519$packedmask25]
movaps xmm5, xmm7
movaps xmm7, xmm2
movaps xmm2, xmm4
movaps xmm4, xmm7
pand xmm2, [ed25519$packedmask26]
psrlq xmm4, 0x1a
paddq xmm4, xmm8
movaps xmm9, xmm4
psrlq xmm4, 0x19
paddq xmm10, xmm4
movaps xmm4, xmm10
pand xmm10, [ed25519$packedmask26]
movaps xmm8, xmm6
psrlq xmm4, 0x1a
paddq xmm4, [rsp+0x118]
psrlq xmm8, 0x19
paddq xmm3, xmm8
pand xmm6, [ed25519$packedmask25]
pand xmm7, [ed25519$packedmask26]
movaps xmm8, xmm10
movaps xmm10, xmm4
pand xmm9, [ed25519$packedmask25]
psrlq xmm10, 0x19
pmuludq xmm10, xmm13
paddq xmm0, xmm10
movaps xmm11, xmm0
movaps xmm10, [ed25519$packedmask26]
psrlq xmm11, 0x1a
movaps xmm12, xmm11
movaps xmm11, xmm3
pand xmm10, xmm0
psrlq xmm11, 0x1a
paddq xmm5, xmm11
movaps xmm11, xmm2
paddq xmm1, xmm12
pand xmm3, [ed25519$packedmask26]
punpckldq xmm11, xmm6
pand xmm4, [ed25519$packedmask25]
movaps xmm0, xmm11
movaps xmm11, xmm10
punpckhdq xmm2, xmm6
movaps xmm6, [ed25519$sse2_bot32bitmask]
punpckldq xmm11, xmm1
punpckhdq xmm10, xmm1
movaps xmm12, xmm11
movaps xmm11, xmm7
punpckhdq xmm7, xmm9
punpcklqdq xmm12, xmm0
punpckldq xmm11, xmm9
punpcklqdq xmm10, xmm2
movaps xmm2, [ed25519$sse2_bot32bitmask]
paddd xmm12, xmm12
movaps xmm0, xmm11
movaps xmm11, xmm3
punpckhdq xmm3, xmm5
punpckldq xmm11, xmm5
pxor xmm5, xmm5
punpcklqdq xmm3, xmm7
punpcklqdq xmm11, xmm0
movaps xmm0, xmm8
punpckhdq xmm8, xmm4
punpckldq xmm0, xmm4
movaps xmm4, xmm12
paddd xmm11, xmm11
punpckhqdq xmm12, xmm11
punpcklqdq xmm4, xmm11
movaps xmm9, xmm5
paddd xmm0, xmm0
punpcklqdq xmm9, xmm0
pand xmm6, xmm4
psrlq xmm4, 0x20
movaps xmm1, xmm9
movaps xmm7, xmm6
movaps xmm6, [ed25519$sse2_bot32bitmask]
pand xmm2, xmm9
psrlq xmm1, 0x20
pand xmm6, xmm12
movaps xmm9, xmm7
psrlq xmm12, 0x20
pand xmm7, [ed25519$packedmask26]
psrlq xmm9, 0x1a
paddq xmm4, xmm9
movaps xmm9, xmm4
movaps xmm11, xmm6
pand xmm6, [ed25519$packedmask26]
psrlq xmm9, 0x19
psrlq xmm11, 0x1a
paddq xmm12, xmm11
movaps xmm11, xmm12
pand xmm4, [ed25519$packedmask25]
psrlq xmm11, 0x19
paddq xmm2, xmm11
movaps xmm0, xmm11
paddq xmm6, xmm9
movaps xmm9, xmm2
pand xmm12, [ed25519$packedmask25]
pslldq xmm0, 0x8
psrlq xmm9, 0x1a
paddq xmm1, xmm9
movaps xmm9, xmm1
pand xmm2, [ed25519$packedmask26]
psrlq xmm9, 0x19
pmuludq xmm9, xmm13
movaps xmm13, xmm6
punpckhqdq xmm9, xmm0
pand xmm6, [ed25519$packedmask26]
psrlq xmm13, 0x1a
paddq xmm12, xmm13
paddq xmm7, xmm9
movaps xmm9, xmm7
pand xmm7, [ed25519$packedmask26]
psrlq xmm9, 0x1a
paddq xmm4, xmm9
pand xmm1, [ed25519$packedmask25]
movaps xmm13, xmm6
punpckhdq xmm6, xmm12
movaps xmm9, xmm7
punpckldq xmm13, xmm12
punpckhdq xmm7, xmm4
punpckldq xmm9, xmm4
punpckhdq xmm2, xmm1
punpcklqdq xmm7, xmm6
punpcklqdq xmm9, xmm13
movaps [rdi+0x90], xmm9
movaps [rdi+0xa0], xmm7
movaps [rdi+0x60], xmm9
movaps [rdi+0x70], xmm7
movaps [rdi+0xb0], xmm2
movaps [rdi+0x80], xmm2
movaps xmm6, [rax+0x10]
movaps xmm2, [rax]
paddd xmm6, xmm3
movaps xmm1, xmm6
movaps xmm6, [rax+0x20]
paddd xmm2, xmm10
movaps [rax+0x10], xmm1
paddd xmm6, xmm8
movaps [rax], xmm2
movaps [rax+0x20], xmm6
movzx eax, r9b
lea rax, [rax+rax*2+0x6]
movaps xmm2, [rsp+0xa8]
shl rax, 0x4
add rax, rdi
movaps xmm0, [rax]
movaps xmm6, xmm2
movaps xmm1, [rsp+0xb8]
punpckldq xmm6, xmm0
punpckhdq xmm2, xmm0
movaps xmm4, xmm1
movaps xmm0, [rax+0x10]
paddd xmm6, [ed25519$packed32packed2p0]
movaps xmm14, [rsp+0x48]
punpckldq xmm4, xmm0
punpckhdq xmm1, xmm0
movaps xmm0, [rsp+0xc8]
movaps xmm11, xmm14
movaps xmm15, [rsp+0x58]
movaps xmm13, xmm14
punpckldq xmm0, [rax+0x20]
movaps xmm7, [rsp+0x68]
movaps xmm9, xmm15
punpckldq xmm11, xmm10
punpckhdq xmm13, xmm10
movaps xmm10, xmm15
punpckldq xmm7, xmm8
punpckhdq xmm9, xmm3
psubd xmm6, xmm11
movaps xmm8, xmm6
punpckldq xmm10, xmm3
movaps xmm3, [ed25519$packed32packed2p1]
paddd xmm2, xmm3
paddd xmm0, xmm3
psubd xmm2, xmm13
psubd xmm0, xmm7
movaps xmm7, xmm2
paddd xmm4, xmm3
paddd xmm1, xmm3
psubd xmm4, xmm10
psubd xmm1, xmm9
punpcklqdq xmm8, xmm4
punpcklqdq xmm7, xmm1
punpckhqdq xmm6, xmm4
punpckhqdq xmm2, xmm1
movaps xmm4, xmm8
movaps xmm1, [ed25519$packedmask26262626]
movaps xmm3, xmm7
psrld xmm4, 0x1a
paddd xmm4, xmm6
pand xmm7, xmm1
psrld xmm3, 0x1a
paddd xmm3, xmm2
movaps xmm6, xmm3
pand xmm8, xmm1
movaps xmm1, xmm4
psrld xmm6, 0x19
movaps xmm2, xmm6
pslldq xmm6, 0x8
movaps xmm9, xmm7
movaps xmm7, [ed25519$packedmask25252525]
psrld xmm1, 0x19
psrldq xmm2, 0x8
paddd xmm0, xmm2
movaps xmm2, xmm8
pand xmm4, xmm7
paddd xmm1, xmm9
pand xmm3, xmm7
paddd xmm2, xmm6
movaps xmm7, xmm2
movaps xmm6, xmm1
punpcklqdq xmm7, xmm4
punpcklqdq xmm6, xmm3
punpckhqdq xmm2, xmm4
pshufd xmm4, xmm7, 0xd8
punpckhqdq xmm1, xmm3
pshufd xmm3, xmm6, 0xd8
movaps xmm6, xmm4
pshufd xmm2, xmm2, 0xd8
pshufd xmm1, xmm1, 0xd8
punpcklqdq xmm6, xmm3
pshufd xmm0, xmm0, 0xd8
punpckhqdq xmm4, xmm3
movaps [rdi], xmm6
movaps xmm6, xmm2
punpckhqdq xmm2, xmm1
punpcklqdq xmm6, xmm1
movaps [rdi+0x10], xmm6
movaps xmm6, xmm0
punpckhqdq xmm0, xmm5
punpcklqdq xmm6, xmm5
movaps [rdi+0x20], xmm6
movaps [rax], xmm4
movaps [rax+0x10], xmm2
movaps [rax+0x20], xmm0
add rsp, 0x130
ret
end if
if used ed25519$expand256_modm32 | defined include_everything
; two arguments: rdi == destination, rsi == source
falign
ed25519$expand256_modm32:
prolog ed25519$expand256_modm32
push rbp rbx r12
mov r11, rdi
mov r10, [rsi]
mov r9, [rsi+0x18]
push r13 r14 r15
sub rsp, 0x78
xor edx, edx
mov eax, r10d
mov r8d, r10d
mov rcx, [rsi+0x8]
mov [rsp+0x8], rdx
mov [rsp+0x10], rdx
mov [rsp+0x18], rdx
shr eax, 0x10
and r8d, 0xff00
mov [rsp+0x20], rdx
mov [rsp+0x30], r10
mov [rsp+0x50], rdx
mov r14d, eax
mov eax, r10d
mov [rsp+0x58], rdx
mov [rsp+0x60], rdx
mov [rsp+0x68], rdx
mov edx, r9d
shr eax, 0x18
movzx r14d, r14b
shr edx, 0x18
mov r15d, eax
mov eax, ecx
shl r14, 0x10
shr eax, 0x10
or r8, r14
mov [rsp+0x38], rcx
mov r13d, eax
mov eax, ecx
movzx edx, dl
shr eax, 0x18
mov [rsp+0x48], r9
mov ebp, eax
mov rax, [rsi+0x10]
movzx esi, r10b
or r8, rsi
movzx esi, r15b
movzx ebp, bpl
shl rsi, 0x18
shl rbp, 0x18
or r8, rsi
mov rsi, 0xff00000000
mov edi, eax
and rsi, r10
shr edi, 0x18
mov ebx, eax
or r8, rsi
mov rsi, 0xff0000000000
mov r12d, edi
and rsi, r10
mov edi, r9d
shr ebx, 0x10
or r8, rsi
mov rsi, 0xff000000000000
shr edi, 0x10
and rsi, r10
shr r10, 0x38
movzx ebx, bl
or r8, rsi
shl r10, 0x38
mov rsi, rcx
or r8, r10
movzx r10d, r13b
and esi, 0xff00
shl r10, 0x10
mov [rsp+0x40], rax
movzx edi, dil
or rsi, r10
movzx r10d, cl
or rsi, r10
mov r10, 0xff00000000
and r10, rcx
or rsi, rbp
or rsi, r10
mov r10, 0xff0000000000
and r10, rcx
shl rbx, 0x10
shl rdi, 0x10
or rsi, r10
mov r10, 0xff000000000000
shl rdx, 0x18
and r10, rcx
shr rcx, 0x38
or rsi, r10
shl rcx, 0x38
movzx r10d, al
or rsi, rcx
mov rcx, rax
and ecx, 0xff00
or rcx, rbx
or rcx, r10
movzx r10d, r12b
shl r10, 0x18
or rcx, r10
mov r10, 0xff00000000
and r10, rax
or rcx, r10
mov r10, 0xff0000000000
and r10, rax
or rcx, r10
mov r10, 0xff000000000000
and r10, rax
shr rax, 0x38
or rcx, r10
shl rax, 0x38
or rcx, rax
mov rax, r9
and eax, 0xff00
or rax, rdi
movzx edi, r9b
or rax, rdi
mov rdi, 0xffffffffffffff
or rax, rdx
mov rdx, 0xff00000000
and rdx, r9
or rax, rdx
mov rdx, 0xff0000000000
and rdx, r9
or rax, rdx
mov rdx, 0xff000000000000
and rdx, r9
or rax, rdx
mov rdx, r8
shr r8, 0x38
and rdx, rdi
shr r9, 0x38
mov [r11], rdx
mov rdx, rsi
shr rsi, 0x30
shl rdx, 0x8
shl r9, 0x38
or rdx, r8
or rax, r9
and rdx, rdi
mov [r11+8], rdx
mov rdx, rcx
shr rcx, 0x28
shl rdx, 0x10
or rdx, rsi
mov rsi, rsp
and rdx, rdi
mov [r11+0x10], rdx
mov rdx, rax
shl rdx, 0x18
or rdx, rcx
and rdx, rdi
mov rdi, r11
mov [r11+0x18], rdx
mov rdx, rax
shr rax, 0x38
shr rdx, 0x20
mov [rsp], rax
mov [r11+0x20], rdx
mov rdx, r11
call ed25519$barrett_reduce256_modm
add rsp, 0x78
pop r15 r14 r13 r12 rbx rbp
epilog
end if
if used ed25519$add256_modm | defined include_everything
; three arguments: rdi == dest, rsi == x, rdx == y
falign
ed25519$add256_modm:
prolog ed25519$add256_modm
mov r8, 0xffffffffffffff
mov rax, [rsi]
add rax, [rdx]
mov rcx, rax
shr rax, 56
add rax, [rsi+8]
add rax, [rdx+8]
and rcx, r8
mov [rdi], rcx
mov rcx, rax
shr rax, 56
add rax, [rsi+16]
add rax, [rdx+16]
and rcx, r8
mov [rdi+8], rcx
mov rcx, rax
shr rax, 56
add rax, [rsi+24]
add rax, [rdx+24]
mov r9, [rdx+32]
and rcx, r8
mov [rdi+16], rcx
and r8, rax
shr rax, 56
add rax, [rsi+32]
add rax, r9
mov [rdi+24], r8
mov [rdi+32], rax
call ed25519$reduce256_modm
epilog
end if
if used ed25519$contract256_modm | defined include_everything
; two arguments: rdi == dest (32 bytes), rsi == in
falign
ed25519$contract256_modm:
prolog ed25519$contract256_modm
mov rdx, [rsi+8]
mov rax, rdx
shr rdx, 8
shl rax, 56
or rax, [rsi]
mov [rdi], rax
mov rcx, [rsi+16]
mov rax, rcx
shr rcx, 16
shl rax, 48
or rax, rdx
mov [rdi+8], rax
mov rdx, [rsi+24]
mov rax, rdx
shl rax, 40
or rax, rcx
mov [rdi+16], rax
shr rdx, 24
mov rax, [rsi+32]
shl rax, 32
or rax, rdx
mov [rdi+24], rax
epilog
end if
if used ed25519$expand256_modm64 | defined include_everything
; two arguments: rdi == destination, rsi == source
falign
ed25519$expand256_modm64:
prolog ed25519$expand256_modm64
push rbx r12
sub rsp,0x38
movzx r12d, byte [rsi+0x1]
movzx eax, byte [rsi+0x2]
movzx ebx, byte [rsi+0x9]
movzx r11d, byte [rsi+0x11]
movzx ecx, byte [rsi+0x19]
movzx edx, byte [rsi+0x22]
movzx r10d, byte [rsi+0x29]
movzx r9d, byte [rsi+0x31]
shl rax,0x10
shl r12,0x8
movzx r8d, byte [rsi+0x39]
or r12,rax
movzx eax, byte [rsi]
shl rbx,0x8
shl r11,0x8
or r12,rax
movzx eax, byte [rsi+0x3]
shl rax,0x18
or r12,rax
movzx eax, byte [rsi+0x4]
shl rax,0x20
or r12,rax
movzx eax, byte [rsi+0x5]
shl rax,0x28
or r12,rax
movzx eax, byte [rsi+0x6]
shl rax,0x30
or r12,rax
movzx eax, byte [rsi+0x7]
shl rax,0x38
or r12,rax
movzx eax, byte [rsi+0xa]
shl rax,0x10
or rbx,rax
movzx eax, byte [rsi+0x8]
or rbx,rax
movzx eax, byte [rsi+0xb]
shl rax,0x18
or rbx,rax
movzx eax, byte [rsi+0xc]
shl rax,0x20
or rbx,rax
movzx eax, byte [rsi+0xd]
shl rax,0x28
or rbx,rax
movzx eax, byte [rsi+0xe]
shl rax,0x30
or rbx,rax
movzx eax, byte [rsi+0xf]
shl rax,0x38
or rbx,rax
movzx eax, byte [rsi+0x12]
shl rax,0x10
or r11,rax
movzx eax, byte [rsi+0x10]
or r11,rax
movzx eax, byte [rsi+0x13]
shl rax,0x18
shl rcx,0x8
shl rdx,0x10
or r11,rax
movzx eax, byte [rsi+0x14]
shl rax,0x20
or r11,rax
movzx eax, byte [rsi+0x15]
shl rax,0x28
or r11,rax
movzx eax, byte [rsi+0x16]
shl rax,0x30
or r11,rax
movzx eax, byte [rsi+0x17]
shl rax,0x38
or r11,rax
movzx eax, byte [rsi+0x1a]
shl rax,0x10
or rcx,rax
movzx eax, byte [rsi+0x18]
or rcx,rax
movzx eax, byte [rsi+0x1b]
shl rax,0x18
or rcx,rax
movzx eax, byte [rsi+0x1c]
shl rax,0x20
or rcx,rax
movzx eax, byte [rsi+0x1d]
shl rax,0x28
or rcx,rax
movzx eax, byte [rsi+0x1e]
shl rax,0x30
or rcx,rax
movzx eax, byte [rsi+0x1f]
shl rax,0x38
or rcx,rax
movzx eax, byte [rsi+0x21]
shl rax,0x8
or rax,rdx
movzx edx, byte [rsi+0x20]
or rax,rdx
movzx edx, byte [rsi+0x23]
shl rdx,0x18
or rax,rdx
movzx edx, byte [rsi+0x24]
shl rdx,0x20
or rax,rdx
movzx edx, byte [rsi+0x25]
shl rdx,0x28
or rax,rdx
movzx edx, byte [rsi+0x26]
shl r10,0x8
shl r9,0x8
shl rdx,0x30
or rax,rdx
movzx edx, byte [rsi+0x27]
shl rdx,0x38
or rax,rdx
movzx edx, byte [rsi+0x2a]
shl rdx,0x10
or r10,rdx
movzx edx, byte [rsi+0x28]
or r10,rdx
movzx edx, byte [rsi+0x2b]
shl rdx,0x18
or r10,rdx
movzx edx, byte [rsi+0x2c]
shl rdx,0x20
or r10,rdx
movzx edx, byte [rsi+0x2d]
shl rdx,0x28
or r10,rdx
movzx edx, byte [rsi+0x2e]
shl rdx,0x30
or r10,rdx
movzx edx, byte [rsi+0x2f]
shl rdx,0x38
or r10,rdx
movzx edx, byte [rsi+0x32]
shl rdx,0x10
or r9,rdx
movzx edx, byte [rsi+0x30]
or r9,rdx
movzx edx, byte [rsi+0x33]
shl rdx,0x18
or r9,rdx
movzx edx, byte [rsi+0x34]
shl rdx,0x20
or r9,rdx
movzx edx, byte [rsi+0x35]
shl rdx,0x28
or r9,rdx
movzx edx, byte [rsi+0x36]
shl rdx,0x30
or r9,rdx
movzx edx, byte [rsi+0x37]
shl rdx,0x38
or r9,rdx
movzx edx, byte [rsi+0x3a]
shl r8,0x8
shl rdx,0x10
or r8,rdx
movzx edx, byte [rsi+0x38]
or r8,rdx
movzx edx, byte [rsi+0x3b]
shl rdx,0x18
or r8,rdx
movzx edx, byte [rsi+0x3c]
shl rdx,0x20
or r8,rdx
movzx edx, byte [rsi+0x3d]
shl rdx,0x28
or r8,rdx
movzx edx, byte [rsi+0x3e]
shl rdx,0x30
or r8,rdx
movzx edx, byte [rsi+0x3f]
mov rsi,0xffffffffffffff
shl rdx,0x38
or r8,rdx
mov rdx,r12
shr r12,0x38
and rdx,rsi
mov [rdi],rdx
mov rdx,rbx
shr rbx,0x30
shl rdx,0x8
or rdx,r12
and rdx,rsi
mov [rdi+0x8],rdx
mov rdx,r11
shr r11,0x28
shl rdx,0x10
or rdx,rbx
and rdx,rsi
mov [rdi+0x10],rdx
mov rdx,rcx
shl rdx,0x18
or rdx,r11
mov r11,rcx
shr rcx,0x38
and rdx,rsi
shr r11,0x20
mov [rdi+0x18],rdx
mov rdx,rax
shl rdx,0x20
or rdx,r11
mov r11,0xffffffffff
and rdx,r11
mov [rdi+0x20],rdx
mov rdx,rax
shl rdx,0x8
or rdx,rcx
shr rax,0x30
and rdx,rsi
mov [rsp],rdx
mov rdx,r10
shr r10,0x28
shl rdx,0x10
or rdx,rax
mov rax,r9
shr r9,0x20
shl rax,0x18
and rdx,rsi
or rax,r10
mov [rsp+0x8],rdx
mov rdx,rdi
and rax,rsi
mov [rsp+0x10],rax
mov rax,r8
shr r8,0x18
shl rax,0x20
mov [rsp+0x20],r8
or rax,r9
and rax,rsi
mov rsi,rsp
mov [rsp+0x18],rax
call ed25519$barrett_reduce256_modm
add rsp,0x38
pop r12 rbx
epilog
end if
if used ed25519$barrett_reduce256_modm | defined include_everything
; three arguments: rdi == r, rsi == q1, rdx == r1
falign
ed25519$barrett_reduce256_modm:
prolog ed25519$barrett_reduce256_modm
push rbp rbx r12
mov r8, 0xfffffffff
mov rbp, 0xffffffffffffff
mov rcx, [rsi]
mov r11, [rsi+0x8]
mov r12, [rsi+0x10]
push r13 r14 r15
sub rsp, 0x68
mov rbx, [rsi+0x18]
mov r13, [rsi+0x20]
mov [rsp], rcx
mov [rsp+0x50], rdi
mov [rsp+0x58], rdx
mov rdi, 0x9ce5a30a2c131b
mov rax, rbx
mul rdi
mov r14, rax
mov rax, rcx
mov r15, rdx
mul rbp
mov r9, rax
mov r10, rdx
mov rax, r12
add r9, r14
mov r14, 0xffffffffeb2106
adc r10, r15
mov r15, 0x215d086329a7ed
mul r15
add r9, rax
mov rcx, rdx
mov rax, rdi
adc r10, rcx
mul r13
mov [rsp+0x10], rax
mov rax, r11
mov [rsp+0x18], rdx
mul r14
add r9, rax
mov rax, [rsp]
mov rcx, rdx
adc r10, rcx
xor edi, edi
shrd r9, r10, 0x38
mul r8
mov rsi, r9
mov [rsp], rax
mov rax, [rsp+0x10]
add [rsp], rax
mov rax, r11
mov [rsp+0x8], rdx
mov rdx, [rsp+0x18]
adc [rsp+0x8], rdx
mul rbp
add [rsp], rax
mov rax, rbx
adc [rsp+0x8], rdx
mul r15
add [rsp], rax
mov rax, r12
adc [rsp+0x8], rdx
mul r14
add [rsp], rax
mov rax, r11
adc [rsp+0x8], rdx
add [rsp], rsi
adc [rsp+0x8], rdi
xor edi, edi
mul r8
mov r9, [rsp]
mov r10, [rsp+0x8]
mov [rsp+0x10], rax
mov rax, r15
mov [rsp+0x18], rdx
mul r13
shrd r9, r10, 0x38
mov rsi, r9
mov r9, rax
mov rax, rbx
add r9, [rsp+0x10]
mov r10, rdx
adc r10, [rsp+0x18]
mul r14
add r9, rax
mov rcx, rdx
mov rax, r12
adc r10, rcx
mul rbp
mov rcx, rdx
add r9, rax
mov rax, [rsp]
adc r10, rcx
add r9, rsi
mov r15, r9
adc r10, rdi
mov rcx, r9
shr rax, 0x28
shl r15, 0x10
xor edi, edi
and r15, rbp
movzx edx, ax
mov rax, r12
or r15, rdx
mul r8
shrd r9, r10, 0x38
mov rsi, r9
mov r11, rax
mov rax, r14
mov r12, rdx
mul r13
mov [rsp], rax
mov rax, rbx
add [rsp], r11
mov [rsp+0x8], rdx
adc [rsp+0x8], r12
mul rbp
add [rsp], rax
mov rax, rbx
adc [rsp+0x8], rdx
add [rsp], rsi
adc [rsp+0x8], rdi
shr rcx, 0x28
xor ebx, ebx
mul r8
mov r11, [rsp]
movzx ecx, cx
mov r12, [rsp+0x8]
mov rsi, r11
mov rdi, r11
mov r9, rax
mov rax, r11
shl rsi, 0x10
and rsi, rbp
mov r10, rdx
shrd rax, r12, 0x38
or rsi, rcx
mov rcx, rax
mov rax, r13
mul rbp
add rax, r9
adc rdx, r10
add rax, rcx
adc rdx, rbx
mov rcx, rax
mov r12, rax
mov r11, rax
mov rax, r13
mov rbx, rdx
mul r8
shl r11, 0x10
shr rdi, 0x28
and r11, rbp
movzx edi, di
or r11, rdi
mov rdi, 0x12631a5cf5d3ed
mov r9, rax
mov rax, rcx
mov r10, rdx
shrd rax, rbx, 0x38
xor ebx, ebx
add r9, rax
adc r10, rbx
mov rax, r9
mov r8, r9
shrd r9, r10, 0x38
shr rax, 0x28
shl r8, 0x10
shr r12, 0x28
mov rbx, r9
movzx eax, ax
and r8, rbp
shl rbx, 0x10
movzx r12d, r12w
mov [rsp+0x28], rbx
or [rsp+0x28], rax
mov rax, r15
mul rdi
or r8, r12
mov r12d, 0x14de
mov [rsp+0x30], rax
mov rcx, rax
mov rax, rsi
shrd rcx, rdx, 0x38
mov [rsp+0x38], rdx
mov rbx, rdx
mul rdi
mov [rsp+0x10], rcx
shr rbx, 0x38
mov [rsp+0x18], rbx
mov r13, rax
mov rax, 0xf9dea2f79cd658
mov r14, rdx
mul r15
add [rsp+0x10], rax
mov rax, r11
adc [rsp+0x18], rdx
add [rsp+0x10], r13
adc [rsp+0x18], r14
mul rdi
mov rbx, [rsp+0x18]
mov [rsp], rax
mov rax, 0xf9dea2f79cd658
mov [rsp+0x8], rdx
mul rsi
mov rcx, [rsp+0x10]
shrd rcx, rbx, 0x38
mov r13, rax
mov rax, r15
mov r14, rdx
mul r12
shr rbx, 0x38
add r13, rax
mov rax, r8
adc r14, rdx
add r13, rcx
adc r14, rbx
add r13, [rsp]
adc r14, [rsp+0x8]
mul rdi
mov r9, r13
shrd r9, r14, 0x38
mov [rsp+0x40], rax
mov rax, 0xf9dea2f79cd658
mov [rsp+0x48], rdx
mul r11
mov r10, r14
mov rcx, r9
shr r10, 0x38
mov rbx, r10
mov [rsp], rax
mov rax, rsi
mov [rsp+0x8], rdx
mul r12
add [rsp], rax
adc [rsp+0x8], rdx
mov rax, [rsp+0x40]
add [rsp], rcx
mov rdx, [rsp+0x48]
adc [rsp+0x8], rbx
add [rsp], rax
mov rax, [rsp+0x28]
adc [rsp+0x8], rdx
mov rbx, [rsp]
mov rsi, [rsp+0x8]
mov r10, [rsp+0x58]
mul rdi
mov edi, 0x10000000
shrd rbx, rsi, 0x38
mov rcx, [rsp+0x30]
mov r9, rax
mov rax, r11
mul r12
mov r11, rax
mov rax, rdi
mul r15
add r11, rax
mov rax, 0xf9dea2f79cd658
add r11, r9
mul r8
mov rdx, [r10]
add r11, rax
and rcx, rbp
mov rax, [rsp+0x50]
sub rdx, rcx
and r13, rbp
mov rcx, rdx
shr rcx, 0x3f
mov r8, rcx
shl r8, 0x38
add rdx, r8
mov [rax], rdx
mov rdx, [r10+0x8]
sub rdx, rcx
mov rcx, [rsp+0x10]
and rcx, rbp
sub rdx, rcx
mov rcx, rdx
shr rcx, 0x3f
mov rdi, rcx
shl rdi, 0x38
add rdx, rdi
mov [rax+0x8], rdx
mov rdx, [r10+0x10]
sub rdx, rcx
sub rdx, r13
mov rcx, rdx
shr rcx, 0x3f
mov rdi, rcx
shl rdi, 0x38
add rdx, rdi
mov rdi, rax
mov [rax+0x10], rdx
mov rax, [rsp]
mov rdx, [r10+0x18]
and rax, rbp
sub rdx, rcx
sub rdx, rax
mov rcx, rdx
shr rcx, 0x3f
mov rax, rcx
shl rax, 0x38
add rdx, rax
mov [rdi+0x18], rdx
mov rax, [r10+0x20]
mov rdx, 0xffffffffff
sub rax, rcx
add r11, rbx
mov rbx, rdi
and r11, rdx
sub rax, r11
mov rdx, rax
shr rdx, 0x3f
shl rdx, 0x28
add rax, rdx
mov [rdi+0x20], rax
call ed25519$reduce256_modm
add rsp, 0x68
mov rdi, rbx
pop r15 r14 r13 r12 rbx rbp
call ed25519$reduce256_modm
epilog
end if
if used ed25519$reduce256_modm | defined include_everything
; single argument in rdi: r
falign
ed25519$reduce256_modm:
prolog ed25519$reduce256_modm
push rbp rbx r12
mov rsi, 0xff06215d086329a8
mov r10, [rdi]
mov r9, [rdi+0x10]
push r13 r14 r15
mov r14, 0xffed9ce5a30a2c13
add rsi, [rdi+0x8]
mov r8, [rdi+0x20]
add r14, r10
lea rcx, [r9-0x14de]
mov rbx, [rdi+0x18]
mov r15, r14
shr r15, 0x3f
lea rdx, [r8-0x10000000]
sub rsi, r15
shl r15, 0x38
mov r13, rsi
add r15, r14
shr r13, 0x3f
xor r15, r10
sub rcx, r13
shl r13, 0x38
mov r12, rcx
shr r12, 0x3f
add rsi, r13
xor rsi, [rdi+0x8]
sub rbx, r12
shl r12, 0x38
mov rbp, rbx
add rcx, r12
shr rbp, 0x3f
xor rcx, r9
sub rdx, rbp
shl rbp, 0x38
add rbx, rbp
mov r11, rdx
xor rbx, [rdi+0x18]
shr r11, 0x3f
lea rax, [r11-1]
shl r11, 0x20
add rdx, r11
and rbx, rax
xor rbx, [rdi+0x18]
and r15, rax
and rsi, rax
and rcx, rax
xor rsi, [rdi+0x8]
xor r15, r10
xor rcx, r9
xor rdx, r8
and rdx, rax
mov [rdi], r15
mov [rdi+0x10], rcx
mov [rdi+0x18], rbx
xor rdx, r8
pop r15 r14 r13
mov [rdi+0x8], rsi
mov [rdi+0x20], rdx
pop r12 rbx rbp
epilog
end if
if used ed25519$mul256_modm | defined include_everything
; three arguments: rdi == r, rsi == x, rdx == y
falign
ed25519$mul256_modm:
prolog ed25519$mul256_modm
push rbp rbx r12
mov rcx, rdx
mov rbx, 0xffffffffffffff
push r13 r14 r15
sub rsp, 0x98
mov r8, [rsi]
mov r14, [rcx+0x8]
mov [rsp+0x28], rdi
mov rdi, [rdx]
mov r15, [rsi+0x8]
mov rax, r8
mul rdi
mov r11, rax
mov r9, rax
mov rax, r8
mov r12, rdx
and r9, rbx
mul r14
mov [rsp+0x60], r9
mov r9, rax
mov rax, r11
mov r10, rdx
shrd rax, r12, 0x38
xor r12d, r12d
mov r11, rax
mov rax, r15
mul rdi
add rax, r9
adc rdx, r10
add rax, r11
mov r11, rax
mov r9, rax
mov rax, [rcx+0x10]
adc rdx, r12
and r9, rbx
mov r12, rdx
mov [rsp+0x68], r9
mov [rsp+0x18], rax
mul r8
mov r9, rax
mov r10, rdx
mov rax, r11
mov rdx, [rsi+0x10]
shrd rax, r12, 0x38
xor r12d, r12d
mov r11, rax
mov rax, rdx
mov [rsp+0x20], rdx
mul rdi
mov [rsp], rax
mov rax, r15
add [rsp], r9
mov [rsp+0x8], rdx
adc [rsp+0x8], r10
mul r14
add [rsp], rax
mov rax, r8
adc [rsp+0x8], rdx
add [rsp], r11
adc [rsp+0x8], r12
mov r13, [rcx+0x18]
mov r11, [rsp]
mul r13
mov r12, [rsp+0x8]
mov rbp, [rsi+0x18]
mov rcx, [rcx+0x20]
mov r9, r11
and r9, rbx
mov [rsp+0x70], r9
mov r9, rax
mov rax, r11
shrd rax, r12, 0x38
mov r10, rdx
xor r12d, r12d
mov r11, rax
mov rax, rbp
mul rdi
mov [rsp], rax
mov rax, [rsp+0x18]
add [rsp], r9
mov [rsp+0x8], rdx
adc [rsp+0x8], r10
mul r15
add [rsp], rax
mov rax, [rsp+0x20]
adc [rsp+0x8], rdx
mul r14
add [rsp], rax
mov rax, r8
adc [rsp+0x8], rdx
add [rsp], r11
mov r8, [rsi+0x20]
mov rsi, 0xffffffffff
mov r11, [rsp]
adc [rsp+0x8], r12
mov r9, r11
mul rcx
mov r12, [rsp+0x8]
and r9, rbx
mov [rsp+0x78], r9
mov r9, rax
mov rax, r11
mov r10, rdx
shrd rax, r12, 0x38
xor r12d, r12d
mov r11, rax
mov rax, rdi
mul r8
mov [rsp], rax
add [rsp], r9
mov rax, rbp
mov [rsp+0x8], rdx
adc [rsp+0x8], r10
mul r14
add [rsp], rax
mov rax, r15
adc [rsp+0x8], rdx
mul r13
add [rsp], rax
adc [rsp+0x8], rdx
mov rax, [rsp+0x20]
mul qword [rsp+0x18]
add [rsp], rax
mov rax, r14
adc [rsp+0x8], rdx
add [rsp], r11
adc [rsp+0x8], r12
xor edi, edi
mul r8
mov r11, [rsp]
mov r9, rax
mov r10, rdx
mov rax, [rsp]
mov rdx, [rsp+0x8]
and rsi, r11
mov [rsp+0x80], rsi
shrd rax, rdx, 0x38
mov rsi, rax
mov rax, r15
mul rcx
mov [rsp], rax
mov [rsp+0x8], rdx
mov r15, [rsp+0x20]
mov r14, [rsp+0x18]
add [rsp], r9
adc [rsp+0x8], r10
mov rax, r15
mul r13
add [rsp], rax
mov rax, r14
adc [rsp+0x8], rdx
mul rbp
add [rsp], rax
mov rax, r14
adc [rsp+0x8], rdx
add [rsp], rsi
adc [rsp+0x8], rdi
shr r11, 0x18
xor edi, edi
mul r8
mov r12, [rsp]
mov r11d, r11d
mov rsi, r12
mov r9, rax
mov r10, rdx
mov rax, [rsp]
mov rdx, [rsp+0x8]
shl rsi, 0x20
and rsi, rbx
or rsi, r11
shrd rax, rdx, 0x38
mov [rsp+0x30], rsi
mov rsi, rax
mov rax, r15
mul rcx
mov r14, rax
mov r15, rdx
mov rax, rbp
add r14, r9
adc r15, r10
mul r13
add r14, rax
mov rax, r13
adc r15, rdx
add r14, rsi
adc r15, rdi
mov rsi, r14
shr r12, 0x18
mul r8
shl rsi, 0x20
mov r12d, r12d
and rsi, rbx
mov r11, r14
xor edi, edi
or rsi, r12
mov [rsp+0x38], rsi
mov r9, rax
mov rax, r14
mov r10, rdx
shrd rax, r15, 0x38
mov rsi, rax
mov rax, rbp
mul rcx
mov r14, rax
mov r15, rdx
mov rax, r8
add r14, r9
adc r15, r10
add r14, rsi
adc r15, rdi
mov rsi, r14
shr r11, 0x18
mul rcx
shl rsi, 0x20
mov r11d, r11d
and rsi, rbx
xor edi, edi
mov rbp, r14
or rsi, r11
mov [rsp+0x40], rsi
lea rsi, [rsp+0x30]
mov r9, rax
mov rax, r14
mov r10, rdx
shrd rax, r15, 0x38
add r9, rax
adc r10, rdi
mov rcx, r9
mov rdx, r9
shrd rcx, r10, 0x38
mov rax, r9
shr rdx, 0x18
mov rdi, [rsp+0x28]
mov edx, edx
shl rax, 0x20
shr rbp, 0x18
shl rcx, 0x20
and rax, rbx
mov ebp, ebp
or rcx, rdx
lea rdx, [rsp+0x60]
or rax, rbp
mov [rsp+0x48], rax
mov [rsp+0x50], rcx
call ed25519$barrett_reduce256_modm
add rsp, 0x98
pop r15 r14 r13 r12 rbx rbp
epilog
end if
if used ed25519$scalarmult | defined include_everything
; two arguments: rdi == r, rsi == s
falign
ed25519$scalarmult:
prolog ed25519$scalarmult
push rbp rbx r12
sub rsp, 0x200
mov r8d, 14
xor r9d, r9d
mov r10d, 14
mov rax, rsp
mov rbx, rdi
mov r11d, 8
and rax, 0xf
sub rsp, rax
mov rdx, [rsi]
mov rdi, rsp
mov [rsp+0x190], rax
mov rax, rsp
calign
.contract256_window4_loop1:
mov ecx, edx
add rax, 1
shr rdx, 4
and ecx, 0xf
mov byte [rax-1], cl
mov rcx, rax
sub rcx, rdi
cmp r8, rcx
ja .contract256_window4_loop1
add r9, 1
cmp r9, 5
je .contract256_window4_signed
cmp r9, 4
mov r8, r10
mov rdx, [rsi+r9*8]
cmove r8, r11
mov rdi, rax
jmp .contract256_window4_loop1
calign
.contract256_window4_signed:
movzx edx, byte [rsp]
lea rdi, [rsp+0x3f]
mov rax, rsp
xor ecx, ecx
calign
.contract256_window4_signloop:
lea r8d, [rdx+rcx]
add rax, 1
mov edx, r8d
and r8d, 0xf
mov ecx, r8d
sar dl, 4
add dl, byte [rax]
sar cl, 3
mov esi, ecx
shl esi, 4
sub r8d, esi
mov byte [rax], dl
mov byte [rax-1], r8b
cmp rax, rdi
jne .contract256_window4_signloop
movsx edx, byte [rsp+1]
lea rdi, [rsp+0x40]
xor esi, esi
add byte [rsp+0x3f], cl
call .choose_niels
pxor xmm9, xmm9
lea rdi, [rbx+0x60]
movaps xmm12, [rsp+0x70]
mov edx, 0x30
movaps xmm4, [ed25519$packed2p0]
movaps xmm13, xmm9
movaps xmm11, [rsp+0x80]
paddd xmm4, xmm12
psubd xmm4, [rsp+0x40]
movaps xmm3, xmm4
movaps xmm0, [ed25519$packed2p1]
paddd xmm0, xmm11
psubd xmm0, [rsp+0x50]
punpcklqdq xmm3, xmm0
punpckhqdq xmm4, xmm0
movaps xmm10, [rsp+0x90]
paddd xmm11, [rsp+0x50]
movaps xmm1, [ed25519$packed2p2]
movaps xmm6, xmm3
movaps xmm5, xmm4
psrlq xmm3, 0x20
movaps xmm2, [ed25519$sse2_bot32bitmask]
paddd xmm1, xmm10
psubd xmm1, [rsp+0x60]
punpcklqdq xmm13, xmm1
psrlq xmm4, 0x20
paddd xmm10, [rsp+0x60]
pand xmm6, xmm2
movaps xmm0, [ed25519$packedmask26]
pand xmm5, xmm2
movaps xmm14, xmm13
movaps xmm8, [ed25519$packednineteen]
psrlq xmm13, 0x20
movdqa xmm7, xmm6
movdqa xmm1, xmm5
pand xmm14, xmm2
pand xmm5, xmm0
psrlq xmm7, 0x1a
paddq xmm3, xmm7
psrlq xmm1, 0x1a
movaps xmm7, xmm3
paddq xmm4, xmm1
movaps xmm15, xmm4
pand xmm6, xmm0
psrlq xmm7, 0x19
paddq xmm5, xmm7
movaps xmm1, [ed25519$packedmask25]
psrlq xmm15, 0x19
paddq xmm14, xmm15
movaps xmm7, xmm14
pslldq xmm15, 0x8
pand xmm4, xmm1
psrlq xmm7, 0x1a
paddq xmm13, xmm7
movaps xmm7, xmm13
pand xmm3, xmm1
psrlq xmm7, 0x19
pmuludq xmm7, xmm8
punpckhqdq xmm7, xmm15
punpcklqdq xmm9, xmm10
pand xmm14, xmm0
paddq xmm6, xmm7
movaps xmm7, xmm5
pand xmm5, xmm0
movaps xmm15, xmm6
pand xmm6, xmm0
psrlq xmm7, 0x1a
paddq xmm4, xmm7
movaps xmm7, xmm5
psrlq xmm15, 0x1a
punpckhdq xmm5, xmm4
paddq xmm3, xmm15
pand xmm13, xmm1
punpckldq xmm7, xmm4
movaps xmm15, xmm6
movaps xmm4, [rsp+0x40]
punpckhdq xmm6, xmm3
punpckldq xmm15, xmm3
paddd xmm4, xmm12
movaps xmm3, xmm4
punpckhqdq xmm4, xmm11
punpcklqdq xmm6, xmm5
punpcklqdq xmm3, xmm11
movaps xmm5, xmm4
punpcklqdq xmm15, xmm7
psrlq xmm4, 0x20
movaps [rbx+0x10], xmm6
movaps xmm6, xmm3
psrlq xmm3, 0x20
pand xmm5, xmm2
pand xmm6, xmm2
pand xmm2, xmm9
psrlq xmm9, 0x20
movaps xmm7, xmm5
pand xmm5, xmm0
movaps xmm10, xmm6
psrlq xmm7, 0x1a
paddq xmm4, xmm7
movaps xmm7, xmm4
psrlq xmm10, 0x1a
paddq xmm3, xmm10
movaps xmm10, xmm3
psrlq xmm7, 0x19
paddq xmm2, xmm7
pand xmm6, xmm0
psrlq xmm10, 0x19
paddq xmm5, xmm10
movaps xmm10, xmm2
pslldq xmm7, 0x8
pand xmm4, xmm1
psrlq xmm10, 0x1a
paddq xmm9, xmm10
movaps xmm10, xmm9
pand xmm2, xmm0
psrlq xmm10, 0x19
pmuludq xmm8, xmm10
punpckhqdq xmm8, xmm7
movaps xmm7, xmm5
pand xmm3, xmm1
pand xmm1, xmm9
paddq xmm6, xmm8
movaps xmm8, xmm6
pand xmm6, xmm0
pand xmm0, xmm5
psrlq xmm7, 0x1a
paddq xmm4, xmm7
psrlq xmm8, 0x1a
paddq xmm3, xmm8
punpckhdq xmm14, xmm13
movaps xmm5, xmm6
punpckhdq xmm6, xmm3
movaps xmm7, xmm0
punpckldq xmm5, xmm3
punpckldq xmm7, xmm4
punpckhdq xmm0, xmm4
punpckhdq xmm2, xmm1
punpcklqdq xmm5, xmm7
punpcklqdq xmm6, xmm0
movaps [rbx], xmm15
movaps [rbx+0x20], xmm14
movaps [rbx+0x30], xmm5
movaps [rbx+0x40], xmm6
movaps [rbx+0x50], xmm2
; add_reduce done
xor esi, esi
; edx is the right # of bytes already
call memset
movaps xmm0, [rsp+0xa0]
lea r12, [rsp+0x3]
mov dword [rbx+0x60], 2
xor ebp, ebp
movaps xmm1, [rsp+0xb0]
movaps xmm2, [rsp+0xc0]
movaps [rbx+0x90], xmm0
movaps [rbx+0xa0], xmm1
movaps [rbx+0xb0], xmm2
calign
.multaddloop1:
lea esi, [rbp+3]
lea rdi, [rsp+0x40]
movsx edx, byte [r12+rbp]
shr esi, 1
add rbp, 2
call .choose_niels
lea rsi, [rsp+0x40]
mov rdi, rbx
call .nielsadd2
cmp rbp, 0x3e
jne .multaddloop1
xor bpl, bpl
lea r12, [rsp+2]
repeat 3
lea rdi, [rsp+0xd0]
mov rsi, rbx
call ed25519$double_p1p1
lea rsi, [rsp+0xd0]
mov rdi, rbx
call ed25519$p1p1_to_partial
end repeat
lea rdi, [rsp+0xd0]
mov rsi, rbx
call ed25519$double_p1p1
lea rsi, [rsp+0xd0]
mov rdi, rbx
call ed25519$p1p1_to_full
movsx edx, byte [rsp]
lea rdi, [rsp+0x40]
xor esi, esi
call .choose_niels
lea rdi, [rsp+0xa0]
mov edx, .ge25519_ecd
mov rsi, rdi
call curve25519$mul
lea rsi, [rsp+0x40]
mov rdi, rbx
call .nielsadd2
calign
.lastloop:
movsx edx, byte [r12+rbp]
lea esi, [rbp+0x2]
lea rdi, [rsp+0x40]
add rbp, 2
shr esi, 1
call .choose_niels
lea rsi, [rsp+0x40]
mov rdi, rbx
call .nielsadd2
cmp rbp, 0x3e
jne .lastloop
mov rcx, [rsp+0x190]
add rsp, rcx
add rsp, 0x200
pop r12 rbx rbp
epilog
align 16
.ge25519_ecd:
dd 0x035978a3,0x00d37284,0x03156ebd,0x006a0a0e,0x0001c029,0x0179e898,0x03a03cbb,0x01ce7198,0x02e2b6ff,0x01480db3
dq 0x0
; /* multiples of the base point in packed {ysubx, xaddy, t2d} form */
align 16
.ge25519_niels_base_multiples:
db 0x3e,0x91,0x40,0xd7,0x05,0x39,0x10,0x9d,0xb3,0xbe,0x40,0xd1,0x05,0x9f,0x39,0xfd,0x09,0x8a,0x8f,0x68,0x34,0x84,0xc1,0xa5,0x67,0x12,0xf8,0x98,0x92,0x2f,0xfd,0x44,0x85,0x3b,0x8c,0xf5,0xc6,0x93,0xbc,0x2f,0x19,0x0e,0x8c,0xfb,0xc6,0x2d,0x93,0xcf,0xc2,0x42,0x3d,0x64,0x98,0x48,0x0b,0x27,0x65,0xba,0xd4,0x33,0x3a,0x9d,0xcf,0x07,0x59,0xbb,0x6f,0x4b,0x67,0x15,0xbd,0xdb,0xea,0xa5,0xa2,0xee,0x00,0x3f,0xe1,0x41,0xfa,0xc6,0x57,0xc9,0x1c,0x9d,0xd4,0xcd,0xca,0xec,0x16,0xaf,0x1f,0xbe,0x0e,0x4f
db 0xa8,0xd5,0xb4,0x42,0x60,0xa5,0x99,0x8a,0xf6,0xac,0x60,0x4e,0x0c,0x81,0x2b,0x8f,0xaa,0x37,0x6e,0xb1,0x6b,0x23,0x9e,0xe0,0x55,0x25,0xc9,0x69,0xa6,0x95,0xb5,0x6b,0xd7,0x71,0x3c,0x93,0xfc,0xe7,0x24,0x92,0xb5,0xf5,0x0f,0x7a,0x96,0x9d,0x46,0x9f,0x02,0x07,0xd6,0xe1,0x65,0x9a,0xa6,0x5a,0x2e,0x2e,0x7d,0xa8,0x3f,0x06,0x0c,0x59,0x02,0x68,0xd3,0xda,0xaa,0x7e,0x34,0x6e,0x05,0x48,0xee,0x83,0x93,0x59,0xf3,0xba,0x26,0x68,0x07,0xe6,0x10,0xbe,0xca,0x3b,0xb8,0xd1,0x5e,0x16,0x0a,0x4f,0x31,0x49
db 0x65,0xd2,0xfc,0xa4,0xe8,0x1f,0x61,0x56,0x7d,0xba,0xc1,0xe5,0xfd,0x53,0xd3,0x3b,0xbd,0xd6,0x4b,0x21,0x1a,0xf3,0x31,0x81,0x62,0xda,0x5b,0x55,0x87,0x15,0xb9,0x2a,0x30,0x97,0xee,0x4c,0xa8,0xb0,0x25,0xaf,0x8a,0x4b,0x86,0xe8,0x30,0x84,0x5a,0x02,0x32,0x67,0x01,0x9f,0x02,0x50,0x1b,0xc1,0xf4,0xf8,0x80,0x9a,0x1b,0x4e,0x16,0x7a,0x34,0x48,0x67,0xf1,0xf4,0x11,0xf2,0x9b,0x95,0xf8,0x2d,0xf6,0x17,0x6b,0x4e,0xb8,0x4e,0x2a,0x72,0x5b,0x07,0x6f,0xde,0xd7,0x21,0x2a,0xbb,0x63,0xb9,0x04,0x9a,0x54
db 0xbf,0x18,0x68,0x05,0x0a,0x05,0xfe,0x95,0xa9,0xfa,0x60,0x56,0x71,0x89,0x7e,0x32,0x73,0x50,0xa0,0x06,0xcd,0xe3,0xe8,0xc3,0x9a,0xa4,0x45,0x74,0x4c,0x3f,0x93,0x27,0x9f,0x09,0xfc,0x8e,0xb9,0x51,0x73,0x28,0x38,0x25,0xfd,0x7d,0xf4,0xc6,0x65,0x67,0x65,0x92,0x0a,0xfb,0x3d,0x8d,0x34,0xca,0x27,0x87,0xe5,0x21,0x03,0x91,0x0e,0x68,0xb0,0x26,0x14,0xe5,0xec,0x45,0x1e,0xbf,0x94,0x0f,0xba,0x6d,0x3d,0xc6,0x2b,0xe3,0xc0,0x52,0xf8,0x8c,0xd5,0x74,0x29,0xe4,0x18,0x4c,0xe6,0xb0,0xb1,0x79,0xf0,0x44
db 0xba,0xd6,0x47,0xa4,0xc3,0x82,0x91,0x7f,0xb7,0x29,0x27,0x4b,0xd1,0x14,0x00,0xd5,0x87,0xa0,0x64,0xb8,0x1c,0xf1,0x3c,0xe3,0xf3,0x55,0x1b,0xeb,0x73,0x7e,0x4a,0x15,0x33,0xbb,0xa5,0x08,0x44,0xbc,0x12,0xa2,0x02,0xed,0x5e,0xc7,0xc3,0x48,0x50,0x8d,0x44,0xec,0xbf,0x5a,0x0c,0xeb,0x1b,0xdd,0xeb,0x06,0xe2,0x46,0xf1,0xcc,0x45,0x29,0xb3,0x03,0xd0,0xe7,0x79,0xa1,0x32,0xc8,0x7e,0x4d,0x12,0x00,0x0a,0x9d,0x72,0x5f,0xf3,0x8f,0x6d,0x0e,0xa1,0xd4,0xc1,0x62,0x98,0x7a,0xb2,0x38,0x59,0xac,0xb8,0x68
db 0xa4,0x8c,0x7d,0x7b,0xb6,0x06,0x98,0x49,0x39,0x27,0xd2,0x27,0x84,0xe2,0x5b,0x57,0xb9,0x53,0x45,0x20,0xe7,0x5c,0x08,0xbb,0x84,0x78,0x41,0xae,0x41,0x4c,0xb6,0x38,0x31,0x71,0x15,0x77,0xeb,0xee,0x0c,0x3a,0x88,0xaf,0xc8,0x00,0x89,0x15,0x27,0x9b,0x36,0xa7,0x59,0xda,0x68,0xb6,0x65,0x80,0xbd,0x38,0xcc,0xa2,0xb6,0x7b,0xe5,0x51,0xa4,0xe3,0x9d,0x68,0x91,0xad,0x9d,0x8f,0x37,0x91,0xfb,0xf8,0x28,0x24,0x5f,0x17,0x88,0xb9,0xcf,0x9f,0x32,0xb5,0x0a,0x05,0x9f,0xc0,0x54,0x13,0xa2,0xdf,0x65,0x78
db 0xb1,0x21,0x32,0xaa,0x9a,0x2c,0x6f,0xba,0xa7,0x23,0xba,0x3b,0x53,0x21,0xa0,0x6c,0x3a,0x2c,0x19,0x92,0x4f,0x76,0xea,0x9d,0xe0,0x17,0x53,0x2e,0x5d,0xdd,0x6e,0x1d,0xbf,0xa3,0x4e,0x94,0xd0,0x5c,0x1a,0x6b,0xd2,0xc0,0x9d,0xb3,0x3a,0x35,0x70,0x74,0x49,0x2e,0x54,0x28,0x82,0x52,0xb2,0x71,0x7e,0x92,0x3c,0x28,0x69,0xea,0x1b,0x46,0x36,0xda,0x0f,0xab,0xac,0x8a,0x7a,0x21,0xc8,0x49,0x35,0x3d,0x54,0xc6,0x28,0xa5,0x68,0x75,0xab,0x13,0x8b,0x5b,0xd0,0x37,0x37,0xbc,0x2c,0x3a,0x62,0xef,0x3c,0x23
db 0xd9,0x34,0x92,0xf3,0xed,0x5d,0xa7,0xe2,0xf9,0x58,0xb5,0xe1,0x80,0x76,0x3d,0x96,0xfb,0x23,0x3c,0x6e,0xac,0x41,0x27,0x2c,0xc3,0x01,0x0e,0x32,0xa1,0x24,0x90,0x3a,0x8f,0x3e,0xdd,0x04,0x66,0x59,0xb7,0x59,0x2c,0x70,0x88,0xe2,0x77,0x03,0xb3,0x6c,0x23,0xc3,0xd9,0x5e,0x66,0x9c,0x33,0xb1,0x2f,0xe5,0xbc,0x61,0x60,0xe7,0x15,0x09,0x7e,0xa3,0x34,0xa8,0x35,0xe8,0x7d,0xdf,0xea,0x57,0x98,0x68,0xda,0x9c,0xe1,0x8b,0x26,0xb3,0x67,0x71,0x36,0x85,0x11,0x2c,0xc2,0xd5,0xef,0xdb,0xd9,0xb3,0x9e,0x58
db 0x5e,0x51,0xaa,0x49,0x54,0x63,0x5b,0xed,0x3a,0x82,0xc6,0x0b,0x9f,0xc4,0x65,0xa8,0xc4,0xd1,0x42,0x5b,0xe9,0x1f,0x0c,0x85,0xb9,0x15,0xd3,0x03,0x6f,0x6d,0xd7,0x30,0x1d,0x9c,0x2f,0x63,0x0e,0xdd,0xcc,0x2e,0x15,0x31,0x89,0x76,0x96,0xb6,0xd0,0x51,0x58,0x7a,0x63,0xa8,0x6b,0xb7,0xdf,0x52,0x39,0xef,0x0e,0xa0,0x49,0x7d,0xd3,0x6d,0xc7,0xe4,0x06,0x21,0x17,0x44,0x44,0x6c,0x69,0x7f,0x8d,0x92,0x80,0xd6,0x53,0xfb,0x26,0x3f,0x4d,0x69,0xa4,0x9e,0x73,0xb4,0xb0,0x4b,0x86,0x2e,0x11,0x97,0xc6,0x10
db 0xde,0x5f,0xbe,0x7d,0x27,0xc4,0x93,0x64,0xa2,0x7e,0xad,0x19,0xad,0x4f,0x5d,0x26,0x90,0x45,0x30,0x46,0xc8,0xdf,0x00,0x0e,0x09,0xfe,0x66,0xed,0xab,0x1c,0xe6,0x25,0x05,0xc8,0x58,0x83,0xa0,0x2a,0xa6,0x0c,0x47,0x42,0x20,0x7a,0xe3,0x4a,0x3d,0x6a,0xdc,0xed,0x11,0x3b,0xa6,0xd3,0x64,0x74,0xef,0x06,0x08,0x55,0xaf,0x9b,0xbf,0x03,0x04,0x66,0x58,0xcc,0x28,0xe1,0x13,0x3f,0x7e,0x74,0x59,0xb4,0xec,0x73,0x58,0x6f,0xf5,0x68,0x12,0xcc,0xed,0x3d,0xb6,0xa0,0x2c,0xe2,0x86,0x45,0x63,0x78,0x6d,0x56
db 0x34,0x08,0xc1,0x9c,0x9f,0xa4,0x37,0x16,0x51,0xc4,0x9b,0xa8,0xd5,0x56,0x8e,0xbc,0xdb,0xd2,0x7f,0x7f,0x0f,0xec,0xb5,0x1c,0xd9,0x35,0xcc,0x5e,0xca,0x5b,0x97,0x33,0xd0,0x2f,0x5a,0xc6,0x85,0x42,0x05,0xa1,0xc3,0x67,0x16,0xf3,0x2a,0x11,0x64,0x6c,0x58,0xee,0x1a,0x73,0x40,0xe2,0x0a,0x68,0x2a,0xb2,0x93,0x47,0xf3,0xa5,0xfb,0x14,0xd4,0xf7,0x85,0x69,0x16,0x46,0xd7,0x3c,0x57,0x00,0xc8,0xc9,0x84,0x5e,0x3e,0x59,0x1e,0x13,0x61,0x7b,0xb6,0xf2,0xc3,0x2f,0x6c,0x52,0xfc,0x83,0xea,0x9c,0x82,0x14
db 0xc2,0x95,0xdd,0x97,0x84,0x7b,0x43,0xff,0xa7,0xb5,0x4e,0xaa,0x30,0x4e,0x74,0x6c,0x8b,0xe8,0x85,0x3c,0x61,0x5d,0x0c,0x9e,0x73,0x81,0x75,0x5f,0x1e,0xc7,0xd9,0x2f,0xb8,0xec,0x71,0x4e,0x2f,0x0b,0xe7,0x21,0xe3,0x77,0xa4,0x40,0xb9,0xdd,0x56,0xe6,0x80,0x4f,0x1d,0xce,0xce,0x56,0x65,0xbf,0x7e,0x7b,0x5d,0x53,0xc4,0x3b,0xfc,0x05,0xdd,0xde,0xaf,0x52,0xae,0xb3,0xb8,0x24,0xcf,0x30,0x3b,0xed,0x8c,0x63,0x95,0x34,0x95,0x81,0xbe,0xa9,0x83,0xbc,0xa4,0x33,0x04,0x1f,0x65,0x5c,0x47,0x67,0x37,0x37
db 0xd9,0xad,0xd1,0x40,0xfd,0x99,0xba,0x2f,0x27,0xd0,0xf4,0x96,0x6f,0x16,0x07,0xb3,0xae,0x3b,0xf0,0x15,0x52,0xf0,0x63,0x43,0x99,0xf9,0x18,0x3b,0x6c,0xa5,0xbe,0x1f,0x90,0x65,0x24,0x14,0xcb,0x95,0x40,0x63,0x35,0x55,0xc1,0x16,0x40,0x14,0x12,0xef,0x60,0xbc,0x10,0x89,0x0c,0x14,0x38,0x9e,0x8c,0x7c,0x90,0x30,0x57,0x90,0xf5,0x6b,0x8a,0x5b,0x41,0xe1,0xf1,0x78,0xa7,0x0f,0x7e,0xa7,0xc3,0xba,0xf7,0x9f,0x40,0x06,0x50,0x9a,0xa2,0x9a,0xb8,0xd7,0x52,0x6f,0x56,0x5a,0x63,0x7a,0xf6,0x1c,0x52,0x02
db 0x94,0x52,0x9d,0x0a,0x0b,0xee,0x3f,0x51,0x66,0x5a,0xdf,0x0f,0x5c,0xe7,0x98,0x8f,0xce,0x07,0xe1,0xbf,0x88,0x86,0x61,0xd4,0xed,0x2c,0x38,0x71,0x7e,0x0a,0xa0,0x3f,0xe4,0x5e,0x2f,0x77,0x20,0x67,0x14,0xb1,0xce,0x9a,0x07,0x96,0xb1,0x94,0xf8,0xe8,0x4a,0x82,0xac,0x00,0x4d,0x22,0xf8,0x4a,0xc4,0x6c,0xcd,0xf7,0xd9,0x53,0x17,0x00,0x34,0xdb,0x3d,0x96,0x2d,0x23,0x69,0x3c,0x58,0x38,0x97,0xb4,0xda,0x87,0xde,0x1d,0x85,0xf2,0x91,0xa0,0xf9,0xd1,0xd7,0xaa,0xb6,0xed,0x48,0xa0,0x2f,0xfe,0xb5,0x12
db 0x4d,0xe3,0xfc,0x96,0xc4,0xfb,0xf0,0x71,0xed,0x5b,0xf3,0xad,0x6b,0x82,0xb9,0x73,0x61,0xc5,0x28,0xff,0x61,0x72,0x04,0xd2,0x6f,0x20,0xb1,0x6f,0xf9,0x76,0x9b,0x74,0x92,0x1e,0x6f,0xad,0x26,0x7c,0x2b,0xdf,0x13,0x89,0x4b,0x50,0x23,0xd3,0x66,0x4b,0xc3,0x8b,0x1c,0x75,0xc0,0x9d,0x40,0x8c,0xb8,0xc7,0x96,0x07,0xc2,0x93,0x7e,0x6f,0x05,0xae,0xa6,0xae,0x04,0xf6,0x5a,0x1f,0x99,0x9c,0xe4,0xbe,0xf1,0x51,0x23,0xc1,0x66,0x6b,0xff,0xee,0xb5,0x08,0xa8,0x61,0x51,0x21,0xe0,0x01,0x0f,0xc1,0xce,0x0f
db 0x44,0x1e,0xfe,0x49,0xa6,0x58,0x4d,0x64,0x7e,0x77,0xad,0x31,0xa2,0xae,0xfc,0x21,0xd2,0xd0,0x7f,0x88,0x5a,0x1c,0x44,0x02,0xf3,0x11,0xc5,0x83,0x71,0xaa,0x01,0x49,0x45,0x4e,0x24,0xc4,0x9d,0xd2,0xf2,0x3d,0x0a,0xde,0xd8,0x93,0x74,0x0e,0x02,0x2b,0x4d,0x21,0x0c,0x82,0x7e,0x06,0xc8,0x6c,0x0a,0xb9,0xea,0x6f,0x16,0x79,0x37,0x41,0xf0,0xf8,0x1a,0x8c,0x54,0xb7,0xb1,0x08,0xb4,0x99,0x62,0x24,0x7c,0x7a,0x0f,0xce,0x39,0xd9,0x06,0x1e,0xf9,0xb0,0x60,0xf7,0x13,0x12,0x6d,0x72,0x7b,0x88,0xbb,0x41
db 0xbe,0x46,0x43,0x74,0x44,0x7d,0xe8,0x40,0x25,0x2b,0xb5,0x15,0xd4,0xda,0x48,0x1d,0x3e,0x60,0x3b,0xa1,0x18,0x8a,0x3a,0x7c,0xf7,0xbd,0xcd,0x2f,0xc1,0x28,0xb7,0x4e,0xae,0x91,0x66,0x7c,0x59,0x4c,0x23,0x7e,0xc8,0xb4,0x85,0x0a,0x3d,0x9d,0x88,0x64,0xe7,0xfa,0x4a,0x35,0x0c,0xc9,0xe2,0xda,0x1d,0x9e,0x6a,0x0c,0x07,0x1e,0x87,0x0a,0x89,0x89,0xbc,0x4b,0x99,0xb5,0x01,0x33,0x60,0x42,0xdd,0x5b,0x3a,0xae,0x6b,0x73,0x3c,0x9e,0xd5,0x19,0xe2,0xad,0x61,0x0d,0x64,0xd4,0x85,0x26,0x0f,0x30,0xe7,0x3e
db 0xb7,0xd6,0x7d,0x9e,0xe4,0x55,0xd2,0xf5,0xac,0x1e,0x0b,0x61,0x5c,0x11,0x16,0x80,0xca,0x87,0xe1,0x92,0x5d,0x97,0x99,0x3c,0xc2,0x25,0x91,0x97,0x62,0x57,0x81,0x13,0x18,0x75,0x1e,0x84,0x47,0x79,0xfa,0x43,0xd7,0x46,0x9c,0x63,0x59,0xfa,0xc6,0xe5,0x74,0x2b,0x05,0xe3,0x1d,0x5e,0x06,0xa1,0x30,0x90,0xb8,0xcf,0xa2,0xc6,0x47,0x7d,0xe0,0xd6,0xf0,0x8e,0x14,0xd0,0xda,0x3f,0x3c,0x6f,0x54,0x91,0x9a,0x74,0x3e,0x9d,0x57,0x81,0xbb,0x26,0x10,0x62,0xec,0x71,0x80,0xec,0xc9,0x34,0x8d,0xf5,0x8c,0x14
db 0x27,0xf0,0x34,0x79,0xf6,0x92,0xa4,0x46,0xa9,0x0a,0x84,0xf6,0xbe,0x84,0x99,0x46,0x54,0x18,0x61,0x89,0x2a,0xbc,0xa1,0x5c,0xd4,0xbb,0x5d,0xbd,0x1e,0xfa,0xf2,0x3f,0x6d,0x75,0xe4,0x9a,0x7d,0x2f,0x57,0xe2,0x7f,0x48,0xf3,0x88,0xbb,0x45,0xc3,0x56,0x8d,0xa8,0x60,0x69,0x6d,0x0b,0xd1,0x9f,0xb9,0xa1,0xae,0x4e,0xad,0xeb,0x8f,0x27,0x66,0x39,0x93,0x8c,0x1f,0x68,0xaa,0xb1,0x98,0x0c,0x29,0x20,0x9c,0x94,0x21,0x8c,0x52,0x3c,0x9d,0x21,0x91,0x52,0x11,0x39,0x7b,0x67,0x9c,0xfe,0x02,0xdd,0x04,0x41
db 0x2a,0x42,0x24,0x11,0x5e,0xbf,0xb2,0x72,0xb5,0x3a,0xa3,0x98,0x33,0x0c,0xfa,0xa1,0x66,0xb6,0x52,0xfa,0x01,0x61,0xcb,0x94,0xd5,0x53,0xaf,0xaf,0x00,0x3b,0x86,0x2c,0xb8,0x6a,0x09,0xdb,0x06,0x4e,0x21,0x81,0x35,0x4f,0xe4,0x0c,0xc9,0xb6,0xa8,0x21,0xf5,0x2a,0x9e,0x40,0x2a,0xc1,0x24,0x65,0x81,0xa4,0xfc,0x8e,0xa4,0xb5,0x65,0x01,0x76,0x6a,0x84,0xa0,0x74,0xa4,0x90,0xf1,0xc0,0x7c,0x2f,0xcd,0x84,0xf9,0xef,0x12,0x8f,0x2b,0xaa,0x58,0x06,0x29,0x5e,0x69,0xb8,0xc8,0xfe,0xbf,0xd9,0x67,0x1b,0x59
db 0xfa,0x9b,0xb4,0x80,0x1c,0x0d,0x2f,0x31,0x8a,0xec,0xf3,0xab,0x5e,0x51,0x79,0x59,0x88,0x1c,0xf0,0x9e,0xc0,0x33,0x70,0x72,0xcb,0x7b,0x8f,0xca,0xc7,0x2e,0xe0,0x3d,0x5d,0xb5,0x18,0x9f,0x71,0xb3,0xb9,0x99,0x1e,0x64,0x8c,0xa1,0xfa,0xe5,0x65,0xe4,0xed,0x05,0x9f,0xc2,0x36,0x11,0x08,0x61,0x8b,0x12,0x30,0x70,0x86,0x4f,0x9b,0x48,0xef,0x92,0xeb,0x3a,0x2d,0x10,0x32,0xd2,0x61,0xa8,0x16,0x61,0xb4,0x53,0x62,0xe1,0x24,0xaa,0x0b,0x19,0xe7,0xab,0x7e,0x3d,0xbf,0xbe,0x6c,0x49,0xba,0xfb,0xf5,0x49
db 0xd4,0xcf,0x5b,0x8a,0x10,0x9a,0x94,0x30,0xeb,0x73,0x64,0xbc,0x70,0xdd,0x40,0xdc,0x1c,0x0d,0x7c,0x30,0xc1,0x94,0xc2,0x92,0x74,0x6e,0xfa,0xcb,0x6d,0xa8,0x04,0x56,0x2e,0x57,0x9c,0x1e,0x8c,0x62,0x5d,0x15,0x41,0x47,0x88,0xc5,0xac,0x86,0x4d,0x8a,0xeb,0x63,0x57,0x51,0xf6,0x52,0xa3,0x91,0x5b,0x51,0x67,0x88,0xc2,0xa6,0xa1,0x06,0xb6,0x64,0x17,0x7c,0xd4,0xd1,0x88,0x72,0x51,0x8b,0x41,0xe0,0x40,0x11,0x54,0x72,0xd1,0xf6,0xac,0x18,0x60,0x1a,0x03,0x9f,0xc6,0x42,0x27,0xfe,0x89,0x9e,0x98,0x20
db 0x7f,0xcc,0x2d,0x3a,0xfd,0x77,0x97,0x49,0x92,0xd8,0x4f,0xa5,0x2c,0x7c,0x85,0x32,0xa0,0xe3,0x07,0xd2,0x64,0xd8,0x79,0xa2,0x29,0x7e,0xa6,0x0c,0x1d,0xed,0x03,0x04,0x2e,0xec,0xea,0x85,0x8b,0x27,0x74,0x16,0xdf,0x2b,0xcb,0x7a,0x07,0xdc,0x21,0x56,0x5a,0xf4,0xcb,0x61,0x16,0x4c,0x0a,0x64,0xd3,0x95,0x05,0xf7,0x50,0x99,0x0b,0x73,0x52,0xc5,0x4e,0x87,0x35,0x2d,0x4b,0xc9,0x8d,0x6f,0x24,0x98,0xcf,0xc8,0xe6,0xc5,0xce,0x35,0xc0,0x16,0xfa,0x46,0xcb,0xf7,0xcc,0x3d,0x30,0x08,0x43,0x45,0xd7,0x5b
db 0xc2,0x4c,0xb2,0x28,0x95,0xd1,0x9a,0x7f,0x81,0xc1,0x35,0x63,0x65,0x54,0x6b,0x7f,0x36,0x72,0xc0,0x4f,0x6e,0xb6,0xb8,0x66,0x83,0xad,0x80,0x73,0x00,0x78,0x3a,0x13,0x2a,0x79,0xe7,0x15,0x21,0x93,0xc4,0x85,0xc9,0xdd,0xcd,0xbd,0xa2,0x89,0x4c,0xc6,0x62,0xd7,0xa3,0xad,0xa8,0x3d,0x1e,0x9d,0x2c,0xf8,0x67,0x30,0x12,0xdb,0xb7,0x5b,0xbe,0x62,0xca,0xc6,0x67,0xf4,0x61,0x09,0xee,0x52,0x19,0x21,0xd6,0x21,0xec,0x04,0x70,0x47,0xd5,0x9b,0x77,0x60,0x23,0x18,0xd2,0xe0,0xf0,0x58,0x6d,0xca,0x0d,0x74
db 0x4e,0xce,0xcf,0x52,0x07,0xee,0x48,0xdf,0xb7,0x08,0xec,0x06,0xf3,0xfa,0xff,0xc3,0xc4,0x59,0x54,0xb9,0x2a,0x0b,0x71,0x05,0x8d,0xa3,0x3e,0x96,0xfa,0x25,0x1d,0x16,0x3c,0x43,0x78,0x04,0x57,0x8c,0x1a,0x23,0x9d,0x43,0x81,0xc2,0x0e,0x27,0xb5,0xb7,0x9f,0x07,0xd9,0xe3,0xea,0x99,0xaa,0xdb,0xd9,0x03,0x2b,0x6c,0x25,0xf5,0x03,0x2c,0x7d,0xa4,0x53,0x7b,0x75,0x18,0x0f,0x79,0x79,0x58,0x0c,0xcf,0x30,0x01,0x7b,0x30,0xf9,0xf7,0x7e,0x25,0x77,0x3d,0x90,0x31,0xaf,0xbb,0x96,0xbd,0xbd,0x68,0x94,0x69
db 0xcf,0xfe,0xda,0xf4,0x46,0x2f,0x1f,0xbd,0xf7,0xd6,0x7f,0xa4,0x14,0x01,0xef,0x7c,0x7f,0xb3,0x47,0x4a,0xda,0xfd,0x1f,0xd3,0x85,0x57,0x90,0x73,0xa4,0x19,0x52,0x52,0x48,0x19,0xa9,0x6a,0xe6,0x3d,0xdd,0xd8,0xcc,0xd2,0xc0,0x2f,0xc2,0x64,0x50,0x48,0x2f,0xea,0xfd,0x34,0x66,0x24,0x48,0x9b,0x3a,0x2e,0x4a,0x6c,0x4e,0x1c,0x3e,0x29,0xe1,0x12,0x51,0x92,0x4b,0x13,0x6e,0x37,0xa0,0x5d,0xa1,0xdc,0xb5,0x78,0x37,0x70,0x11,0x31,0x1c,0x46,0xaf,0x89,0x45,0xb0,0x23,0x28,0x03,0x7f,0x44,0x5c,0x60,0x5b
db 0x89,0x7c,0xc4,0x20,0x59,0x80,0x65,0xb9,0xcc,0x8f,0x3b,0x92,0x0c,0x10,0xf0,0xe7,0x77,0xef,0xe2,0x02,0x65,0x25,0x01,0x00,0xee,0xb3,0xae,0xa8,0xce,0x6d,0xa7,0x24,0x4c,0xf0,0xe7,0xf0,0xc6,0xfe,0xe9,0x3b,0x62,0x49,0xe3,0x75,0x9e,0x57,0x6a,0x86,0x1a,0xe6,0x1d,0x1e,0x16,0xef,0x42,0x55,0xd5,0xbd,0x5a,0xcc,0xf4,0xfe,0x12,0x2f,0x40,0xc7,0xc0,0xdf,0xb2,0x22,0x45,0x0a,0x07,0xa4,0xc9,0x40,0x7f,0x6e,0xd0,0x10,0x68,0xf6,0xcf,0x78,0x41,0x14,0xcf,0xc6,0x90,0x37,0xa4,0x18,0x25,0x7b,0x60,0x5e
db 0x18,0x18,0xdf,0x6c,0x8f,0x1d,0xb3,0x58,0xa2,0x58,0x62,0xc3,0x4f,0xa7,0xcf,0x35,0x6e,0x1d,0xe6,0x66,0x4f,0xff,0xb3,0xe1,0xf7,0xd5,0xcd,0x6c,0xab,0xac,0x67,0x50,0x14,0xcf,0x96,0xa5,0x1c,0x43,0x2c,0xa0,0x00,0xe4,0xd3,0xae,0x40,0x2d,0xc4,0xe3,0xdb,0x26,0x0f,0x2e,0x80,0x26,0x45,0xd2,0x68,0x70,0x45,0x9e,0x13,0x33,0x1f,0x20,0x51,0x9d,0x03,0x08,0x6b,0x7f,0x52,0xfd,0x06,0x00,0x7c,0x01,0x64,0x49,0xb1,0x18,0xa8,0xa4,0x25,0x2e,0xb0,0x0e,0x22,0xd5,0x75,0x03,0x46,0x62,0x88,0xba,0x7c,0x39
db 0xb2,0x59,0x59,0xf0,0x93,0x30,0xc1,0x30,0x76,0x79,0xa9,0xe9,0x8d,0xa1,0x3a,0xe2,0x26,0x5e,0x1d,0x72,0x91,0xd4,0x2f,0x22,0x3a,0x6c,0x6e,0x76,0x20,0xd3,0x39,0x23,0xe7,0x79,0x13,0xc8,0xfb,0xc3,0x15,0x78,0xf1,0x2a,0xe1,0xdd,0x20,0x94,0x61,0xa6,0xd5,0xfd,0xa8,0x85,0xf8,0xc0,0xa9,0xff,0x52,0xc2,0xe1,0xc1,0x22,0x40,0x1b,0x77,0xa7,0x2f,0x3a,0x51,0x86,0xd9,0x7d,0xd8,0x08,0xcf,0xd4,0xf9,0x71,0x9b,0xac,0xf5,0xb3,0x83,0xa2,0x1e,0x1b,0xc3,0x6b,0xd0,0x76,0x1a,0x97,0x19,0x92,0x18,0x1a,0x33
db 0xc6,0x80,0x4f,0xfb,0x45,0x6f,0x16,0xf5,0xcf,0x75,0xc7,0x61,0xde,0xc7,0x36,0x9c,0x1c,0xd9,0x41,0x90,0x1b,0xe8,0xd4,0xe3,0x21,0xfe,0xbd,0x83,0x6b,0x7c,0x16,0x31,0xaf,0x72,0x75,0x9d,0x3a,0x2f,0x51,0x26,0x9e,0x4a,0x07,0x68,0x88,0xe2,0xcb,0x5b,0xc4,0xf7,0x80,0x11,0xc1,0xc1,0xed,0x84,0x7b,0xa6,0x49,0xf6,0x9f,0x61,0xc9,0x1a,0x68,0x10,0x4b,0x52,0x42,0x38,0x2b,0xf2,0x87,0xe9,0x9c,0xee,0x3b,0x34,0x68,0x50,0xc8,0x50,0x62,0x4a,0x84,0x71,0x9d,0xfc,0x11,0xb1,0x08,0x1f,0x34,0x36,0x24,0x61
db 0x8d,0x89,0x4e,0x87,0xdb,0x41,0x9d,0xd9,0x20,0xdc,0x07,0x6c,0xf1,0xa5,0xfe,0x09,0xbc,0x9b,0x0f,0xd0,0x67,0x2c,0x3d,0x79,0x40,0xff,0x5e,0x9e,0x30,0xe2,0xeb,0x46,0x38,0x26,0x2d,0x1a,0xe3,0x49,0x63,0x8b,0x35,0xfd,0xd3,0x9b,0x00,0xb7,0xdf,0x9d,0xa4,0x6b,0xa0,0xa3,0xb8,0xf1,0x8b,0x7f,0x45,0x04,0xd9,0x78,0x31,0xaa,0x22,0x15,0x38,0x49,0x61,0x69,0x53,0x2f,0x38,0x2c,0x10,0x6d,0x2d,0xb7,0x9a,0x40,0xfe,0xda,0x27,0xf2,0x46,0xb6,0x91,0x33,0xc8,0xe8,0x6c,0x30,0x24,0x05,0xf5,0x70,0xfe,0x45
db 0x8c,0x0b,0x0c,0x96,0xa6,0x75,0x48,0xda,0x20,0x2f,0x0e,0xef,0x76,0xd0,0x68,0x5b,0xd4,0x8f,0x0b,0x3d,0xcf,0x51,0xfb,0x07,0xd4,0x92,0xe3,0xa0,0x23,0x16,0x8d,0x42,0x91,0x14,0x95,0xc8,0x20,0x49,0xf2,0x62,0xa2,0x0c,0x63,0x3f,0xc8,0x07,0xf0,0x05,0xb8,0xd4,0xc9,0xf5,0xd2,0x45,0xbb,0x6f,0x45,0x22,0x7a,0xb5,0x6d,0x9f,0x61,0x16,0xfd,0x08,0xa3,0x01,0x44,0x4a,0x4f,0x08,0xac,0xca,0xa5,0x76,0xc3,0x19,0x22,0xa8,0x7d,0xbc,0xd1,0x43,0x46,0xde,0xb8,0xde,0xc6,0x38,0xbd,0x60,0x2d,0x59,0x81,0x1d
db 0x5f,0xac,0x0d,0xa6,0x56,0x87,0x36,0x61,0x57,0xdc,0xab,0xeb,0x6a,0x2f,0xe0,0x17,0x7d,0x0f,0xce,0x4c,0x2d,0x3f,0x19,0x7f,0xf0,0xdc,0xec,0x89,0x77,0x4a,0x23,0x20,0xe8,0xc5,0x85,0x7b,0x9f,0xb6,0x65,0x87,0xb2,0xba,0x68,0xd1,0x8b,0x67,0xf0,0x6f,0x9b,0x0f,0x33,0x1d,0x7c,0xe7,0x70,0x3a,0x7c,0x8e,0xaf,0xb0,0x51,0x6d,0x5f,0x3a,0x52,0xb2,0x78,0x71,0xb6,0x0d,0xd2,0x76,0x60,0xd1,0x1e,0xd5,0xf9,0x34,0x1c,0x07,0x70,0x11,0xe4,0xb3,0x20,0x4a,0x2a,0xf6,0x66,0xe3,0xff,0x3c,0x35,0x82,0xd6,0x7c
db 0xb6,0xfa,0x87,0xd8,0x5b,0xa4,0xe1,0x0b,0x6e,0x3b,0x40,0xba,0x32,0x6a,0x84,0x2a,0x00,0x60,0x6e,0xe9,0x12,0x10,0x92,0xd9,0x43,0x09,0xdc,0x3b,0x86,0xc8,0x38,0x28,0xf3,0xf4,0xac,0x68,0x60,0xcd,0x65,0xa6,0xd3,0xe3,0xd7,0x3c,0x18,0x2d,0xd9,0x42,0xd9,0x25,0x60,0x33,0x9d,0x38,0x59,0x57,0xff,0xd8,0x2c,0x2b,0x3b,0x25,0xf0,0x3e,0x30,0x50,0x46,0x4a,0xcf,0xb0,0x6b,0xd1,0xab,0x77,0xc5,0x15,0x41,0x6b,0x49,0xfa,0x9d,0x41,0xab,0xf4,0x8a,0xae,0xcf,0x82,0x12,0x28,0xa8,0x06,0xa6,0xb8,0xdc,0x21
db 0xc8,0x9f,0x9d,0x8c,0x46,0x04,0x60,0x5c,0xcb,0xa3,0x2a,0xd4,0x6e,0x09,0x40,0x25,0x9c,0x2f,0xee,0x12,0x4c,0x4d,0x5b,0x12,0xab,0x1d,0xa3,0x94,0x81,0xd0,0xc3,0x0b,0xba,0x31,0x77,0xbe,0xfa,0x00,0x8d,0x9a,0x89,0x18,0x9e,0x62,0x7e,0x60,0x03,0x82,0x7f,0xd9,0xf3,0x43,0x37,0x02,0xcc,0xb2,0x8b,0x67,0x6f,0x6c,0xbf,0x0d,0x84,0x5d,0x8b,0xe1,0x9f,0x30,0x0d,0x38,0x6e,0x70,0xc7,0x65,0xe1,0xb9,0xa6,0x2d,0xb0,0x6e,0xab,0x20,0xae,0x7d,0x99,0xba,0xbb,0x57,0xdd,0x96,0xc1,0x2a,0x23,0x76,0x42,0x3a
db 0xfa,0x84,0x70,0x8a,0x2c,0x43,0x42,0x4b,0x45,0xe5,0xb9,0xdf,0xe3,0x19,0x8a,0x89,0x5d,0xe4,0x58,0x9c,0x21,0x00,0x9f,0xbe,0xd1,0xeb,0x6d,0xa1,0xce,0x77,0xf1,0x1f,0xcb,0x7e,0x44,0xdb,0x72,0xc1,0xf8,0x3b,0xbd,0x2d,0x28,0xc6,0x1f,0xc4,0xcf,0x5f,0xfe,0x15,0xaa,0x75,0xc0,0xff,0xac,0x80,0xf9,0xa9,0xe1,0x24,0xe8,0xc9,0x70,0x07,0xfd,0xb5,0xb5,0x45,0x9a,0xd9,0x61,0xcf,0x24,0x79,0x3a,0x1b,0xe9,0x84,0x09,0x86,0x89,0x3e,0x3e,0x30,0x19,0x09,0x30,0xe7,0x1e,0x0b,0x50,0x41,0xfd,0x64,0xf2,0x39
db 0x9c,0xe2,0xe7,0xdb,0x17,0x34,0xad,0xa7,0x9c,0x13,0x9c,0x2b,0x6a,0x37,0x94,0xbd,0xa9,0x7b,0x59,0x93,0x8e,0x1b,0xe9,0xa0,0x40,0x98,0x88,0x68,0x34,0xd7,0x12,0x17,0xe1,0x7b,0x09,0xfe,0xab,0x4a,0x9b,0xd1,0x29,0x19,0xe0,0xdf,0xe1,0xfc,0x6d,0xa4,0xff,0xf1,0xa6,0x2c,0x94,0x08,0xc9,0xc3,0x4e,0xf1,0x35,0x2c,0x27,0x21,0xc6,0x65,0xdd,0x93,0x31,0xce,0xf8,0x89,0x2b,0xe7,0xbb,0xc0,0x25,0xa1,0x56,0x33,0x10,0x4d,0x83,0xfe,0x1c,0x2e,0x3d,0xa9,0x19,0x04,0x72,0xe2,0x9c,0xb1,0x0a,0x80,0xf9,0x22
db 0xcb,0xf8,0x9e,0x3e,0x8a,0x36,0x5a,0x60,0x15,0x47,0x50,0xa5,0x22,0xc0,0xe9,0xe3,0x8f,0x24,0x24,0x5f,0xb0,0x48,0x3d,0x55,0xe5,0x26,0x76,0x64,0xcd,0x16,0xf4,0x13,0xac,0xfd,0x6e,0x9a,0xdd,0x9f,0x02,0x42,0x41,0x49,0xa5,0x34,0xbe,0xce,0x12,0xb9,0x7b,0xf3,0xbd,0x87,0xb9,0x64,0x0f,0x64,0xb4,0xca,0x98,0x85,0xd3,0xa4,0x71,0x41,0x8c,0x4c,0xc9,0x99,0xaa,0x58,0x27,0xfa,0x07,0xb8,0x00,0xb0,0x6f,0x6f,0x00,0x23,0x92,0x53,0xda,0xad,0xdd,0x91,0xd2,0xfb,0xab,0xd1,0x4b,0x57,0xfa,0x14,0x82,0x50
db 0x4b,0xfe,0xd6,0x3e,0x15,0x69,0x02,0xc2,0xc4,0x77,0x1d,0x51,0x39,0x67,0x5a,0xa6,0x94,0xaf,0x14,0x2c,0x46,0x26,0xde,0xcb,0x4b,0xa7,0xab,0x6f,0xec,0x60,0xf9,0x22,0xd6,0x03,0xd0,0x53,0xbb,0x15,0x1a,0x46,0x65,0xc9,0xf3,0xbc,0x88,0x28,0x10,0xb2,0x5a,0x3a,0x68,0x6c,0x75,0x76,0xc5,0x27,0x47,0xb4,0x6c,0xc8,0xa4,0x58,0x77,0x3a,0x76,0x50,0xae,0x93,0xf6,0x11,0x81,0x54,0xa6,0x54,0xfd,0x1d,0xdf,0x21,0xae,0x1d,0x65,0x5e,0x11,0xf3,0x90,0x8c,0x24,0x12,0x94,0xf4,0xe7,0x8d,0x5f,0xd1,0x9f,0x5d
db 0x7f,0x72,0x63,0x6d,0xd3,0x08,0x14,0x03,0x33,0xb5,0xc7,0xd7,0xef,0x9a,0x37,0x6a,0x4b,0xe2,0xae,0xcc,0xc5,0x8f,0xe1,0xa9,0xd3,0xbe,0x8f,0x4f,0x91,0x35,0x2f,0x33,0x1e,0x52,0xd7,0xee,0x2a,0x4d,0x24,0x3f,0x15,0x96,0x2e,0x43,0x28,0x90,0x3a,0x8e,0xd4,0x16,0x9c,0x2e,0x77,0xba,0x64,0xe1,0xd8,0x98,0xeb,0x47,0xfa,0x87,0xc1,0x3b,0x0c,0xc2,0x86,0xea,0x15,0x01,0x47,0x6d,0x25,0xd1,0x46,0x6c,0xcb,0xb7,0x8a,0x99,0x88,0x01,0x66,0x3a,0xb5,0x32,0x78,0xd7,0x03,0xba,0x6f,0x90,0xce,0x81,0x0d,0x45
db 0x75,0x52,0x20,0xa6,0xa1,0xb6,0x7b,0x6e,0x83,0x8e,0x3c,0x41,0xd7,0x21,0x4f,0xaa,0xb2,0x5c,0x8f,0xe8,0x55,0xd1,0x56,0x6f,0xe1,0x5b,0x34,0xa6,0x4b,0x5d,0xe2,0x2d,0x3f,0x74,0xae,0x1c,0x96,0xd8,0x74,0xd0,0xed,0x63,0x1c,0xee,0xf5,0x18,0x6d,0xf8,0x29,0xed,0xf4,0xe7,0x5b,0xc5,0xbd,0x97,0x08,0xb1,0x3a,0x66,0x79,0xd2,0xba,0x4c,0xcd,0x1f,0xd7,0xa0,0x24,0x90,0xd1,0x80,0xf8,0x8a,0x28,0xfb,0x0a,0xc2,0x25,0xc5,0x19,0x64,0x3a,0x5f,0x4b,0x97,0xa3,0xb1,0x33,0x72,0x00,0xe2,0xef,0xbc,0x7f,0x7d
db 0x01,0x28,0x6b,0x26,0x6a,0x1e,0xef,0xfa,0x16,0x9f,0x73,0xd5,0xc4,0x68,0x6c,0x86,0x2c,0x76,0x03,0x1b,0xbc,0x2f,0x8a,0xf6,0x8d,0x5a,0xb7,0x87,0x5e,0x43,0x75,0x59,0x94,0x90,0xc2,0xf3,0xc5,0x5d,0x7c,0xcd,0xab,0x05,0x91,0x2a,0x9a,0xa2,0x81,0xc7,0x58,0x30,0x1c,0x42,0x36,0x1d,0xc6,0x80,0xd7,0xd4,0xd8,0xdc,0x96,0xd1,0x9c,0x4f,0x68,0x37,0x7b,0x6a,0xd8,0x97,0x92,0x19,0x63,0x7a,0xd1,0x1a,0x24,0x58,0xd0,0xd0,0x17,0x0c,0x1c,0x5c,0xad,0x9c,0x02,0xba,0x07,0x03,0x7a,0x38,0x84,0xd0,0xcd,0x7c
db 0x17,0x04,0x26,0x6d,0x2c,0x42,0xa6,0xdc,0xbd,0x40,0x82,0x94,0x50,0x3d,0x15,0xae,0x77,0xc6,0x68,0xfb,0xb4,0xc1,0xc0,0xa9,0x53,0xcf,0xd0,0x61,0xed,0xd0,0x8b,0x42,0x93,0xcc,0x60,0x67,0x18,0x84,0x0c,0x9b,0x99,0x2a,0xb3,0x1a,0x7a,0x00,0xae,0xcd,0x18,0xda,0x0b,0x62,0x86,0xec,0x8d,0xa8,0x44,0xca,0x90,0x81,0x84,0xca,0x93,0x35,0xa7,0x9a,0x84,0x5e,0x9a,0x18,0x13,0x92,0xcd,0xfa,0xd8,0x65,0x35,0xc3,0xd8,0xd4,0xd1,0xbb,0xfd,0x53,0x5b,0x54,0x52,0x8c,0xe6,0x63,0x2d,0xda,0x08,0x83,0x39,0x27
db 0x13,0xd4,0x5e,0x43,0x28,0x8d,0xc3,0x42,0xc9,0xcc,0x78,0x32,0x60,0xf3,0x50,0xbd,0xef,0x03,0xda,0x79,0x1a,0xab,0x07,0xbb,0x55,0x33,0x8c,0xbe,0xae,0x97,0x95,0x26,0x53,0x24,0x70,0x0a,0x4c,0x0e,0xa1,0xb9,0xde,0x1b,0x7d,0xd5,0x66,0x58,0xa2,0x0f,0xf7,0xda,0x27,0xcd,0xb5,0xd9,0xb9,0xff,0xfd,0x33,0x2c,0x49,0x45,0x29,0x2c,0x57,0xbe,0x30,0xcd,0xd6,0x45,0xc7,0x7f,0xc7,0xfb,0xae,0xba,0xe3,0xd3,0xe8,0xdf,0xe4,0x0c,0xda,0x5d,0xaa,0x30,0x88,0x2c,0xa2,0x80,0xca,0x5b,0xc0,0x98,0x54,0x98,0x7f
db 0x17,0xe1,0x0b,0x9f,0x88,0xce,0x49,0x38,0x88,0xa2,0x54,0x7b,0x1b,0xad,0x05,0x80,0x1c,0x92,0xfc,0x23,0x9f,0xc3,0xa3,0x3d,0x04,0xf3,0x31,0x0a,0x47,0xec,0xc2,0x76,0x63,0x63,0xbf,0x0f,0x52,0x15,0x56,0xd3,0xa6,0xfb,0x4d,0xcf,0x45,0x5a,0x04,0x08,0xc2,0xa0,0x3f,0x87,0xbc,0x4f,0xc2,0xee,0xe7,0x12,0x9b,0xd6,0x3c,0x65,0xf2,0x30,0x85,0x0c,0xc1,0xaa,0x38,0xc9,0x08,0x8a,0xcb,0x6b,0x27,0xdb,0x60,0x9b,0x17,0x46,0x70,0xac,0x6f,0x0e,0x1e,0xc0,0x20,0xa9,0xda,0x73,0x64,0x59,0xf1,0x73,0x12,0x2f
db 0x11,0x1e,0xe0,0x8a,0x7c,0xfc,0x39,0x47,0x9f,0xab,0x6a,0x4a,0x90,0x74,0x52,0xfd,0x2e,0x8f,0x72,0x87,0x82,0x8a,0xd9,0x41,0xf2,0x69,0x5b,0xd8,0x2a,0x57,0x9e,0x5d,0xc0,0x0b,0xa7,0x55,0xd7,0x8b,0x48,0x30,0xe7,0x42,0xd4,0xf1,0xa4,0xb5,0xd6,0x06,0x62,0x61,0x59,0xbc,0x9e,0xa6,0xd1,0xea,0x84,0xf7,0xc5,0xed,0x97,0x19,0xac,0x38,0x3b,0xb1,0x51,0xa7,0x17,0xb5,0x66,0x06,0x8c,0x85,0x9b,0x7e,0x86,0x06,0x7d,0x74,0x49,0xde,0x4d,0x45,0x11,0xc0,0xac,0xac,0x9c,0xe6,0xe9,0xbf,0x9c,0xcd,0xdf,0x22
db 0xd9,0x0c,0x0d,0xc3,0xe0,0xd2,0xdb,0x8d,0x33,0x43,0xbb,0xac,0x5f,0x66,0x8e,0xad,0x1f,0x96,0x2a,0x32,0x8c,0x25,0x6b,0x8f,0xc7,0xc1,0x48,0x54,0xc0,0x16,0x29,0x6b,0xa1,0xe0,0x3b,0x10,0xb4,0x59,0xec,0x56,0x69,0xf9,0x59,0xd2,0xec,0xba,0xe3,0x2e,0x32,0xcd,0xf5,0x13,0x94,0xb2,0x7c,0x79,0x72,0xe4,0xcd,0x24,0x78,0x87,0xe9,0x0f,0x3b,0x91,0xba,0x0a,0xd1,0x34,0xdb,0x7e,0x0e,0xac,0x6d,0x2e,0x82,0xcd,0xa3,0x4e,0x15,0xf8,0x78,0x65,0xff,0x3d,0x08,0x66,0x17,0x0a,0xf0,0x7f,0x30,0x3f,0x30,0x4c
db 0x85,0x8c,0xb2,0x17,0xd6,0x3b,0x0a,0xd3,0xea,0x3b,0x77,0x39,0xb7,0x77,0xd3,0xc5,0xbf,0x5c,0x6a,0x1e,0x8c,0xe7,0xc6,0xc6,0xc4,0xb7,0x2a,0x8b,0xf7,0xb8,0x61,0x0d,0x00,0x45,0xd9,0x0d,0x58,0x03,0xfc,0x29,0x93,0xec,0xbb,0x6f,0xa4,0x7a,0xd2,0xec,0xf8,0xa7,0xe2,0xc2,0x5f,0x15,0x0a,0x13,0xd5,0xa1,0x06,0xb7,0x1a,0x15,0x6b,0x41,0xb0,0x36,0xc1,0xe9,0xef,0xd7,0xa8,0x56,0x20,0x4b,0xe4,0x58,0xcd,0xe5,0x07,0xbd,0xab,0xe0,0x57,0x1b,0xda,0x2f,0xe6,0xaf,0xd2,0xe8,0x77,0x42,0xf7,0x2a,0x1a,0x19
db 0x31,0x14,0x3c,0xc5,0x4b,0xf7,0x16,0xce,0xde,0xed,0x72,0x20,0xce,0x25,0x97,0x2b,0xe7,0x3e,0xb2,0xb5,0x6f,0xc3,0xb9,0xb8,0x08,0xc9,0x5c,0x0b,0x45,0x0e,0x2e,0x7e,0xfb,0x0e,0x46,0x4f,0x43,0x2b,0xe6,0x9f,0xd6,0x07,0x36,0xa6,0xd4,0x03,0xd3,0xde,0x24,0xda,0xa0,0xb7,0x0e,0x21,0x52,0xf0,0x93,0x5b,0x54,0x00,0xbe,0x7d,0x7e,0x23,0x30,0xb4,0x01,0x67,0xed,0x75,0x35,0x01,0x10,0xfd,0x0b,0x9f,0xe6,0x94,0x10,0x23,0x22,0x7f,0xe4,0x83,0x15,0x0f,0x32,0x75,0xe3,0x55,0x11,0xb1,0x99,0xa6,0xaf,0x71
db 0x1d,0xb6,0x53,0x39,0x9b,0x6f,0xce,0x65,0xe6,0x41,0xa1,0xaf,0xea,0x39,0x58,0xc6,0xfe,0x59,0xf7,0xa9,0xfd,0x5f,0x43,0x0f,0x8e,0xc2,0xb1,0xc2,0xe9,0x42,0x11,0x02,0xd6,0x50,0x3b,0x47,0x1c,0x3c,0x42,0xea,0x10,0xef,0x38,0x3b,0x1f,0x7a,0xe8,0x51,0x95,0xbe,0xc9,0xb2,0x5f,0xbf,0x84,0x9b,0x1c,0x9a,0xf8,0x78,0xbc,0x1f,0x73,0x00,0x80,0x18,0xf8,0x48,0x18,0xc7,0x30,0xe4,0x19,0xc1,0xce,0x5e,0x22,0x0c,0x96,0xbf,0xe3,0x15,0xba,0x6b,0x83,0xe0,0xda,0xb6,0x08,0x58,0xe1,0x47,0x33,0x6f,0x4d,0x4c
db 0xc9,0x1f,0x7d,0xc1,0xcf,0xec,0xf7,0x18,0x14,0x3c,0x40,0x51,0xa6,0xf5,0x75,0x6c,0xdf,0x0c,0xee,0xf7,0x2b,0x71,0xde,0xdb,0x22,0x7a,0xe4,0xa7,0xaa,0xdd,0x3f,0x19,0x70,0x19,0x8f,0x98,0xfc,0xdd,0x0c,0x2f,0x1b,0xf5,0xb9,0xb0,0x27,0x62,0x91,0x6b,0xbe,0x76,0x91,0x77,0xc4,0xb6,0xc7,0x6e,0xa8,0x9f,0x8f,0xa8,0x00,0x95,0xbf,0x38,0x6f,0x87,0xe8,0x37,0x3c,0xc9,0xd2,0x1f,0x2c,0x46,0xd1,0x18,0x5a,0x1e,0xf6,0xa2,0x76,0x12,0x24,0x39,0x82,0xf5,0x80,0x50,0x69,0x49,0x0d,0xbf,0x9e,0xb9,0x6f,0x6a
db 0xeb,0x55,0x08,0x56,0xbb,0xc1,0x46,0x6a,0x9d,0xf0,0x93,0xf8,0x38,0xbb,0x16,0x24,0xc1,0xac,0x71,0x8f,0x37,0x11,0x1d,0xd7,0xea,0x96,0x18,0xa3,0x14,0x69,0xf7,0x75,0xc6,0x23,0xe4,0xb6,0xb5,0x22,0xb1,0xee,0x8e,0xff,0x86,0xf2,0x10,0x70,0x9d,0x93,0x8c,0x5d,0xcf,0x1d,0x83,0x2a,0xa9,0x90,0x10,0xeb,0xc5,0x42,0x9f,0xda,0x6f,0x13,0xd1,0xbd,0x05,0xa3,0xb1,0xdf,0x4c,0xf9,0x08,0x2c,0xf8,0x9f,0x9d,0x4b,0x36,0x0f,0x8a,0x58,0xbb,0xc3,0xa5,0xd8,0x87,0x2a,0xba,0xdc,0xe8,0x0b,0x51,0x83,0x21,0x02
db 0x14,0x2d,0xad,0x5e,0x38,0x66,0xf7,0x4a,0x30,0x58,0x7c,0xca,0x80,0xd8,0x8e,0xa0,0x3d,0x1e,0x21,0x10,0xe6,0xa6,0x13,0x0d,0x03,0x6c,0x80,0x7b,0xe1,0x1c,0x07,0x6a,0x7f,0x7a,0x30,0x43,0x01,0x71,0x5a,0x9d,0x5f,0xa4,0x7d,0xc4,0x9e,0xde,0x63,0xb0,0xd3,0x7a,0x92,0xbe,0x52,0xfe,0xbb,0x22,0x6c,0x42,0x40,0xfd,0x41,0xc4,0x87,0x13,0xf8,0x8a,0x97,0x87,0xd1,0xc3,0xd3,0xb5,0x13,0x44,0x0e,0x7f,0x3d,0x5a,0x2b,0x72,0xa0,0x7c,0x47,0xbb,0x48,0x48,0x7b,0x0d,0x92,0xdc,0x1e,0xaf,0x6a,0xb2,0x71,0x31
db 0xa8,0x4c,0x56,0x97,0x90,0x31,0x2f,0xa9,0x19,0xe1,0x75,0x22,0x4c,0xb8,0x7b,0xff,0x50,0x51,0x87,0xa4,0x37,0xfe,0x55,0x4f,0x5a,0x83,0xf0,0x3c,0x87,0xd4,0x1f,0x22,0xd1,0x47,0x8a,0xb2,0xd8,0xb7,0x0d,0xa6,0xf1,0xa4,0x70,0x17,0xd6,0x14,0xbf,0xa6,0x58,0xbd,0xdd,0x53,0x93,0xf8,0xa1,0xd4,0xe9,0x43,0x42,0x34,0x63,0x4a,0x51,0x6c,0x41,0x63,0x15,0x3a,0x4f,0x20,0x22,0x23,0x2d,0x03,0x0a,0xba,0xe9,0xe0,0x73,0xfb,0x0e,0x03,0x0f,0x41,0x4c,0xdd,0xe0,0xfc,0xaa,0x4a,0x92,0xfb,0x96,0xa5,0xda,0x48
db 0xc7,0x9c,0xa5,0x5c,0x66,0x8e,0xca,0x6e,0xa0,0xac,0x38,0x2e,0x4b,0x25,0x47,0xa8,0xce,0x17,0x1e,0xd2,0x08,0xc7,0xaf,0x31,0xf7,0x4a,0xd8,0xca,0xfc,0xd6,0x6d,0x67,0x93,0x97,0x4c,0xc8,0x5d,0x1d,0xf6,0x14,0x06,0x82,0x41,0xef,0xe3,0xf9,0x41,0x99,0xac,0x77,0x62,0x34,0x8f,0xb8,0xf5,0xcd,0xa9,0x79,0x8a,0x0e,0xfa,0x37,0xc8,0x58,0x58,0x90,0xfc,0x96,0x85,0x68,0xf9,0x0c,0x1b,0xa0,0x56,0x7b,0xf3,0xbb,0xdc,0x1d,0x6a,0xd6,0x35,0x49,0x7d,0xe7,0xc2,0xdc,0x0a,0x7f,0xa5,0xc6,0xf2,0x73,0x4f,0x1c
db 0xbb,0xa0,0x5f,0x30,0xbd,0x4f,0x7a,0x0e,0xad,0x63,0xc6,0x54,0xe0,0x4c,0x9d,0x82,0x48,0x38,0xe3,0x2f,0x83,0xc3,0x21,0xf4,0x42,0x4c,0xf6,0x1b,0x0d,0xc8,0x5a,0x79,0x84,0x34,0x7c,0xfc,0x6e,0x70,0x6e,0xb3,0x61,0xcf,0xc1,0xc3,0xb4,0xc9,0xdf,0x73,0xe5,0xc7,0x1c,0x78,0xc9,0x79,0x1d,0xeb,0x5c,0x67,0xaf,0x7d,0xdb,0x9a,0x45,0x70,0xb3,0x2b,0xb4,0x91,0x49,0xdb,0x91,0x1b,0xca,0xdc,0x02,0x4b,0x23,0x96,0x26,0x57,0xdc,0x78,0x8c,0x1f,0xe5,0x9e,0xdf,0x9f,0xd3,0x1f,0xe2,0x8c,0x84,0x62,0xe1,0x5f
db 0x1a,0x96,0x94,0xe1,0x4f,0x21,0x59,0x4e,0x4f,0xcd,0x71,0x0d,0xc7,0x7d,0xbe,0x49,0x2d,0xf2,0x50,0x3b,0xd2,0xcf,0x00,0x93,0x32,0x72,0x91,0xfc,0x46,0xd4,0x89,0x47,0x08,0xb2,0x7c,0x5d,0x2d,0x85,0x79,0x28,0xe7,0xf2,0x7d,0x68,0x70,0xdd,0xde,0xb8,0x91,0x78,0x68,0x21,0xab,0xff,0x0b,0xdc,0x35,0xaa,0x7d,0x67,0x43,0xc0,0x44,0x2b,0x8e,0xb7,0x4e,0x07,0xab,0x87,0x1c,0x1a,0x67,0xf4,0xda,0x99,0x8e,0xd1,0xc6,0xfa,0x67,0x90,0x4f,0x48,0xcd,0xbb,0xac,0x3e,0xe4,0xa4,0xb9,0x2b,0xef,0x2e,0xc5,0x60
db 0xf1,0x8b,0xfd,0x3b,0xbc,0x89,0x5d,0x0b,0x1a,0x55,0xf3,0xc9,0x37,0x92,0x6b,0xb0,0xf5,0x28,0x30,0xd5,0xb0,0x16,0x4c,0x0e,0xab,0xca,0xcf,0x2c,0x31,0x9c,0xbc,0x10,0x11,0x6d,0xae,0x7c,0xc2,0xc5,0x2b,0x70,0xab,0x8c,0xa4,0x54,0x9b,0x69,0xc7,0x44,0xb2,0x2e,0x49,0xba,0x56,0x40,0xbc,0xef,0x6d,0x67,0xb6,0xd9,0x48,0x72,0xd7,0x70,0x5b,0xa0,0xc2,0x3e,0x4b,0xe8,0x8a,0xaa,0xe0,0x81,0x17,0xed,0xf4,0x9e,0x69,0x98,0xd1,0x85,0x8e,0x70,0xe4,0x13,0x45,0x79,0x13,0xf4,0x76,0xa9,0xd3,0x5b,0x75,0x63
db 0x53,0x08,0xd1,0x2a,0x3e,0xa0,0x5f,0xb5,0x69,0x35,0xe6,0x9e,0x90,0x75,0x6f,0x35,0x90,0xb8,0x69,0xbe,0xfd,0xf1,0xf9,0x9f,0x84,0x6f,0xc1,0x8b,0xc4,0xc1,0x8c,0x0d,0xb7,0xac,0xf1,0x97,0x18,0x10,0xc7,0x3d,0xd8,0xbb,0x65,0xc1,0x5e,0x7d,0xda,0x5d,0x0f,0x02,0xa1,0x0f,0x9c,0x5b,0x8e,0x50,0x56,0x2a,0xc5,0x37,0x17,0x75,0x63,0x27,0xa9,0x19,0xb4,0x6e,0xd3,0x02,0x94,0x02,0xa5,0x60,0xb4,0x77,0x7e,0x4e,0xb4,0xf0,0x56,0x49,0x3c,0xd4,0x30,0x62,0xa8,0xcf,0xe7,0x66,0xd1,0x7a,0x8a,0xdd,0xc2,0x70
db 0x0e,0xec,0x6f,0x9f,0x50,0x94,0x61,0x65,0x8d,0x51,0xc6,0x46,0xa9,0x7e,0x2e,0xee,0x5c,0x9b,0xe0,0x67,0xf3,0xc1,0x33,0x97,0x95,0x84,0x94,0x63,0x63,0xac,0x0f,0x2e,0x13,0x7e,0xed,0xb8,0x7d,0x96,0xd4,0x91,0x7a,0x81,0x76,0xd7,0x0a,0x2f,0x25,0x74,0x64,0x25,0x85,0x0d,0xe0,0x82,0x09,0xe4,0xe5,0x3c,0xa5,0x16,0x38,0x61,0xb8,0x32,0x64,0xcd,0x48,0xe4,0xbe,0xf7,0xe7,0x79,0xd0,0x86,0x78,0x08,0x67,0x3a,0xc8,0x6a,0x2e,0xdb,0xe4,0xa0,0xd9,0xd4,0x9f,0xf8,0x41,0x4f,0x5a,0x73,0x5c,0x21,0x79,0x41
db 0x2a,0xed,0xdc,0xd7,0xe7,0x94,0x70,0x8c,0x70,0x9c,0xd3,0x47,0xc3,0x8a,0xfb,0x97,0x02,0xd9,0x06,0xa9,0x33,0xe0,0x3b,0xe1,0x76,0x9d,0xd9,0x0c,0xa3,0x44,0x03,0x70,0x34,0xcd,0x6b,0x28,0xb9,0x33,0xae,0xe4,0xdc,0xd6,0x9d,0x55,0xb6,0x7e,0xef,0xb7,0x1f,0x8e,0xd3,0xb3,0x1f,0x14,0x8b,0x27,0x86,0xc2,0x41,0x22,0x66,0x85,0xfa,0x31,0xf4,0x22,0x36,0x2e,0x42,0x6c,0x82,0xaf,0x2d,0x50,0x33,0x98,0x87,0x29,0x20,0xc1,0x23,0x91,0x38,0x2b,0xe1,0xb7,0xc1,0x9b,0x89,0x24,0x95,0xa9,0x12,0x23,0xbb,0x24
db 0xc3,0x67,0xde,0x32,0x17,0xed,0xa8,0xb1,0x48,0x49,0x1b,0x46,0x18,0x94,0xb4,0x3c,0xd2,0xbc,0xcf,0x76,0x43,0x43,0xbd,0x8e,0x08,0x80,0x18,0x1e,0x87,0x3e,0xee,0x0f,0x6b,0x5c,0xf8,0xf5,0x2a,0x0c,0xf8,0x41,0x94,0x67,0xfa,0x04,0xc3,0x84,0x72,0x68,0xad,0x1b,0xba,0xa3,0x99,0xdf,0x45,0x89,0x16,0x5d,0xeb,0xff,0xf9,0x2a,0x1d,0x0d,0xdf,0x1e,0x62,0x32,0xa1,0x8a,0xda,0xa9,0x79,0x65,0x22,0x59,0xa1,0x22,0xb8,0x30,0x93,0xc1,0x9a,0xa7,0x7b,0x19,0x04,0x40,0x76,0x1d,0x53,0x18,0x97,0xd7,0xac,0x16
db 0x3d,0x1d,0x9b,0x2d,0xaf,0x72,0xdf,0x72,0x5a,0x24,0x32,0xa4,0x36,0x2a,0x46,0x63,0x37,0x96,0xb3,0x16,0x79,0xa0,0xce,0x3e,0x09,0x23,0x30,0xb9,0xf6,0x0e,0x3e,0x12,0xad,0xb6,0x87,0x78,0xc5,0xc6,0x59,0xc9,0xba,0xfe,0x90,0x5f,0xad,0x9e,0xe1,0x94,0x04,0xf5,0x42,0xa3,0x62,0x4e,0xe2,0x16,0x00,0x17,0x16,0x18,0x4b,0xd3,0x4e,0x16,0x9a,0xe6,0x2f,0x19,0x4c,0xd9,0x7e,0x48,0x13,0x15,0x91,0x3a,0xea,0x2c,0xae,0x61,0x27,0xde,0xa4,0xb9,0xd3,0xf6,0x7b,0x87,0xeb,0xf3,0x73,0x10,0xc6,0x0f,0xda,0x78
db 0x6a,0xc6,0x2b,0xe5,0x28,0x5d,0xf1,0x5b,0x8e,0x1a,0xf0,0x70,0x18,0xe3,0x47,0x2c,0xdd,0x8b,0xc2,0x06,0xbc,0xaf,0x19,0x24,0x3a,0x17,0x6b,0x25,0xeb,0xde,0x25,0x2d,0x94,0x3a,0x0c,0x68,0xf1,0x80,0x9f,0xa2,0xe6,0xe7,0xe9,0x1a,0x15,0x7e,0xf7,0x71,0x73,0x79,0x01,0x48,0x58,0xf1,0x00,0x11,0xdd,0x8d,0xb3,0x16,0xb3,0xa4,0x4a,0x05,0xb8,0x7c,0x26,0x19,0x8d,0x46,0xc8,0xdf,0xaf,0x4d,0xe5,0x66,0x9c,0x78,0x28,0x0b,0x17,0xec,0x6e,0x66,0x2a,0x1d,0xeb,0x2a,0x60,0xa7,0x7d,0xab,0xa6,0x10,0x46,0x13
db 0xfe,0xb0,0xf6,0x8d,0xc7,0x8e,0x13,0x51,0x1b,0xf5,0x75,0xe5,0x89,0xda,0x97,0x53,0xb9,0xf1,0x7a,0x71,0x1d,0x7a,0x20,0x09,0x50,0xd6,0x20,0x2b,0xba,0xfd,0x02,0x21,0x15,0xf5,0xd1,0x77,0xe7,0x65,0x2a,0xcd,0xf1,0x60,0xaa,0x8f,0x87,0x91,0x89,0x54,0xe5,0x06,0xbc,0xda,0xbc,0x3b,0xb7,0xb1,0xfb,0xc9,0x7c,0xa9,0xcb,0x78,0x48,0x65,0xa1,0xe6,0x5c,0x05,0x05,0xe4,0x9e,0x96,0x29,0xad,0x51,0x12,0x68,0xa7,0xbc,0x36,0x15,0xa4,0x7d,0xaa,0x17,0xf5,0x1a,0x3a,0xba,0xb2,0xec,0x29,0xdb,0x25,0xd7,0x0a
db 0x57,0x24,0x4e,0x83,0xb1,0x67,0x42,0xdc,0xc5,0x1b,0xce,0x70,0xb5,0x44,0x75,0xb6,0xd7,0x5e,0xd1,0xf7,0x0b,0x7a,0xf0,0x1a,0x50,0x36,0xa0,0x71,0xfb,0xcf,0xef,0x4a,0x85,0x6f,0x05,0x9b,0x0c,0xbc,0xc7,0xfe,0xd7,0xff,0xf5,0xe7,0x68,0x52,0x7d,0x53,0xfa,0xae,0x12,0x43,0x62,0xc6,0xaf,0x77,0xd9,0x9f,0x39,0x02,0x53,0x5f,0x67,0x4f,0x1e,0x17,0x15,0x04,0x36,0x36,0x2d,0xc3,0x3b,0x48,0x98,0x89,0x11,0xef,0x2b,0xcd,0x10,0x51,0x94,0xd0,0xad,0x6e,0x0a,0x87,0x61,0x65,0xa8,0xa2,0x72,0xbb,0xcc,0x0b
db 0xc8,0xa9,0xb1,0xea,0x2f,0x96,0x5e,0x18,0xcd,0x7d,0x14,0x65,0x35,0xe6,0xe7,0x86,0xf2,0x6d,0x5b,0xbb,0x31,0xe0,0x92,0xb0,0x3e,0xb7,0xd6,0x59,0xab,0xf0,0x24,0x40,0x96,0x12,0xfe,0x50,0x4c,0x5e,0x6d,0x18,0x7e,0x9f,0xe8,0xfe,0x82,0x7b,0x39,0xe0,0xb0,0x31,0x70,0x50,0xc5,0xf6,0xc7,0x3b,0xc2,0x37,0x8f,0x10,0x69,0xfd,0x78,0x66,0xc2,0x63,0x68,0x63,0x31,0xfa,0x86,0x15,0xf2,0x33,0x2d,0x57,0x48,0x8c,0xf6,0x07,0xfc,0xae,0x9e,0x78,0x9f,0xcc,0x73,0x4f,0x01,0x47,0xad,0x8e,0x10,0xe2,0x42,0x2d
db 0x9b,0xd2,0xdf,0x94,0x15,0x13,0xf5,0x97,0x6a,0x4c,0x3f,0x31,0x5d,0x98,0x55,0x61,0x10,0x50,0x45,0x08,0x07,0x3f,0xa1,0xeb,0x22,0xd3,0xd2,0xb8,0x08,0x26,0x6b,0x67,0x93,0x75,0x53,0x0f,0x0d,0x7b,0x71,0x21,0x4c,0x06,0x1e,0x13,0x0b,0x69,0x4e,0x91,0x9f,0xe0,0x2a,0x75,0xae,0x87,0xb6,0x1b,0x6e,0x3c,0x42,0x9b,0xa7,0xf3,0x0b,0x42,0x47,0x2b,0x5b,0x1c,0x65,0xba,0x38,0x81,0x80,0x1b,0x1b,0x31,0xec,0xb6,0x71,0x86,0xb0,0x35,0x31,0xbc,0xb1,0x0c,0xff,0x7b,0xe0,0xf1,0x0c,0x9c,0xfa,0x2f,0x5d,0x74
db 0xbd,0xc8,0xc9,0x2b,0x1e,0x5a,0x52,0xbf,0x81,0x9d,0x47,0x26,0x08,0x26,0x5b,0xea,0xdb,0x55,0x01,0xdf,0x0e,0xc7,0x11,0xd5,0xd0,0xf5,0x0c,0x96,0xeb,0x3c,0xe2,0x1a,0x6a,0x4e,0xd3,0x21,0x57,0xdf,0x36,0x60,0xd0,0xb3,0x7b,0x99,0x27,0x88,0xdb,0xb1,0xfa,0x6a,0x75,0xc8,0xc3,0x09,0xc2,0xd3,0x39,0xc8,0x1d,0x4c,0xe5,0x5b,0xe1,0x06,0x4a,0x99,0x32,0x19,0x87,0x5d,0x72,0x5b,0xb0,0xda,0xb1,0xce,0xb5,0x1c,0x35,0x32,0x05,0xca,0xb7,0xda,0x49,0x15,0xc4,0x7d,0xf7,0xc1,0x8e,0x27,0x61,0xd8,0xde,0x58
db 0x5c,0xc5,0x66,0xf2,0x93,0x37,0x17,0xd8,0x49,0x4e,0x45,0xcc,0xc5,0x76,0xc9,0xc8,0xa8,0xc3,0x26,0xbc,0xf8,0x82,0xe3,0x5c,0xf9,0xf6,0x85,0x54,0xe8,0x9d,0xf3,0x2f,0xa8,0xc9,0xc2,0xb6,0xa8,0x5b,0xfb,0x2d,0x8c,0x59,0x2c,0xf5,0x8e,0xef,0xee,0x48,0x73,0x15,0x2d,0xf1,0x07,0x91,0x80,0x33,0xd8,0x5b,0x1d,0x53,0x6b,0x69,0xba,0x08,0x7a,0xc5,0xef,0xc3,0xee,0x3e,0xed,0x77,0x11,0x48,0xff,0xd4,0x17,0x55,0xe0,0x04,0xcb,0x71,0xa6,0xf1,0x3f,0x7a,0x3d,0xea,0x54,0xfe,0x7c,0x94,0xb4,0x33,0x06,0x12
db 0x42,0x00,0x61,0x91,0x78,0x98,0x94,0x0b,0xe8,0xfa,0xeb,0xec,0x3c,0xb1,0xe7,0x4e,0xc0,0xa4,0xf0,0x94,0x95,0x73,0xbe,0x70,0x85,0x91,0xd5,0xb4,0x99,0x0a,0xd3,0x35,0x0a,0x10,0x12,0x49,0x47,0x31,0xbd,0x82,0x06,0xbe,0x6f,0x7e,0x6d,0x7b,0x23,0xde,0xc6,0x79,0xea,0x11,0x19,0x76,0x1e,0xe1,0xde,0x3b,0x39,0xcb,0xe3,0x3b,0x43,0x07,0xf4,0x97,0xe9,0x5c,0xc0,0x44,0x79,0xff,0xa3,0x51,0x5c,0xb0,0xe4,0x3d,0x5d,0x57,0x7c,0x84,0x76,0x5a,0xfd,0x81,0x33,0x58,0x9f,0xda,0xf6,0x7a,0xde,0x3e,0x87,0x2d
db 0x09,0x34,0x37,0x43,0x64,0x31,0x7a,0x15,0xd9,0x81,0xaa,0xf4,0xee,0xb7,0xb8,0xfa,0x06,0x48,0xa6,0xf5,0xe6,0xfe,0x93,0xb0,0xb6,0xa7,0x7f,0x70,0x54,0x36,0x77,0x2e,0x81,0xf9,0x5d,0x4e,0xe1,0x02,0x62,0xaa,0xf5,0xe1,0x15,0x50,0x17,0x59,0x0d,0xa2,0x6c,0x1d,0xe2,0xba,0xd3,0x75,0xa2,0x18,0x53,0x02,0x60,0x01,0x8a,0x61,0x43,0x05,0xc1,0x23,0x4c,0x97,0xf4,0xbd,0xea,0x0d,0x93,0x46,0xce,0x9d,0x25,0x0a,0x6f,0xaa,0x2c,0xba,0x9a,0xa2,0xb8,0x2c,0x20,0x04,0x0d,0x96,0x07,0x2d,0x36,0x43,0x14,0x4b
db 0x7a,0x1f,0x6e,0xb6,0xc7,0xb7,0xc4,0xcc,0x7e,0x2f,0x0c,0xf5,0x25,0x7e,0x15,0x44,0x1c,0xaf,0x3e,0x71,0xfc,0x6d,0xf0,0x3e,0xf7,0x63,0xda,0x52,0x67,0x44,0x2f,0x58,0xcb,0x9c,0x52,0x1c,0xe9,0x54,0x7c,0x96,0xfb,0x35,0xc6,0x64,0x92,0x26,0xf6,0x30,0x65,0x19,0x12,0x78,0xf4,0xaf,0x47,0x27,0x5c,0x6f,0xf6,0xea,0x18,0x84,0x03,0x17,0xe4,0x4c,0x32,0x20,0xd3,0x7b,0x31,0xc6,0xc4,0x8b,0x48,0xa4,0xe8,0x42,0x10,0xa8,0x64,0x13,0x5a,0x4e,0x8b,0xf1,0x1e,0xb2,0xc9,0x8d,0xa2,0xcd,0x4b,0x1c,0x2a,0x0c
db 0x47,0x04,0x1f,0x6f,0xd0,0xc7,0x4d,0xd2,0x59,0xc0,0x87,0xdb,0x3e,0x9e,0x26,0xb2,0x8f,0xd2,0xb2,0xfb,0x72,0x02,0x5b,0xd1,0x77,0x48,0xf6,0xc6,0xd1,0x8b,0x55,0x7c,0x45,0x69,0xbd,0x69,0x48,0x81,0xc4,0xed,0x22,0x8d,0x1c,0xbe,0x7d,0x90,0x6d,0x0d,0xab,0xc5,0x5c,0xd5,0x12,0xd2,0x3b,0xc6,0x83,0xdc,0x14,0xa3,0x30,0x9b,0x6a,0x5a,0x3d,0x46,0x96,0xd3,0x24,0x15,0xec,0xd0,0xf0,0x24,0x5a,0xc3,0x8a,0x62,0xbb,0x12,0xa4,0x5f,0xbc,0x1c,0x79,0x3a,0x0c,0xa5,0xc3,0xaf,0xfb,0x0a,0xca,0xa5,0x04,0x04
db 0xd6,0x43,0xa7,0x0a,0x07,0x40,0x1f,0x8c,0xe8,0x5e,0x26,0x5b,0xcb,0xd0,0xba,0xcc,0xde,0xd2,0x8f,0x66,0x6b,0x04,0x4b,0x57,0x33,0x96,0xdd,0xca,0xfd,0x5b,0x39,0x46,0xd1,0x6f,0x41,0x2a,0x1b,0x9e,0xbc,0x62,0x8b,0x59,0x50,0xe3,0x28,0xf7,0xc6,0xb5,0x67,0x69,0x5d,0x3d,0xd8,0x3f,0x34,0x04,0x98,0xee,0xf8,0xe7,0x16,0x75,0x52,0x39,0x9c,0x9a,0x5d,0x1a,0x2d,0xdb,0x7f,0x11,0x2a,0x5c,0x00,0xd1,0xbc,0x45,0x77,0x9c,0xea,0x6f,0xd5,0x54,0xf1,0xbe,0xd4,0xef,0x16,0xd0,0x22,0xe8,0x29,0x9a,0x57,0x76
db 0x17,0x2a,0xc0,0x49,0x7e,0x8e,0xb6,0x45,0x7f,0xa3,0xa9,0xbc,0xa2,0x51,0xcd,0x23,0x1b,0x4c,0x22,0xec,0x11,0x5f,0xd6,0x3e,0xb1,0xbd,0x05,0x9e,0xdc,0x84,0xa3,0x43,0xf2,0x34,0xb4,0x52,0x13,0xb5,0x3c,0x33,0xe1,0x80,0xde,0x93,0x49,0x28,0x32,0xd8,0xce,0x35,0x0d,0x75,0x87,0x28,0x51,0xb5,0xc1,0x77,0x27,0x2a,0xbb,0x14,0xc5,0x02,0x45,0xb6,0xf1,0x8b,0xda,0xd5,0x4b,0x68,0x53,0x4b,0xb5,0xf6,0x7e,0xd3,0x8b,0xfb,0x53,0xd2,0xb0,0xa9,0xd7,0x16,0x39,0x31,0x59,0x80,0x54,0x61,0x09,0x92,0x60,0x11
db 0xaa,0xcf,0xda,0x29,0x69,0x16,0x4d,0xb4,0x8f,0x59,0x13,0x84,0x4c,0x9f,0x52,0xda,0x59,0x55,0x3d,0x45,0xca,0x63,0xef,0xe9,0x0b,0x8e,0x69,0xc5,0x5b,0x12,0x1e,0x35,0xcd,0x4d,0x9b,0x36,0x16,0x56,0x38,0x7a,0x63,0x35,0x5c,0x65,0xa7,0x2c,0xc0,0x75,0x21,0x80,0xf1,0xd4,0xf9,0x1b,0xc2,0x7d,0x42,0xe0,0xe6,0x91,0x74,0x7d,0x63,0x2f,0xbe,0x7b,0xf6,0x1a,0x46,0x9b,0xb4,0xd4,0x61,0x89,0xab,0xc8,0x7a,0x03,0x03,0xd6,0xfb,0x99,0xa6,0xf9,0x9f,0xe1,0xde,0x71,0x9a,0x2a,0xce,0xe7,0x06,0x2d,0x18,0x7f
db 0xec,0x68,0x01,0xab,0x64,0x8e,0x7c,0x7a,0x43,0xc5,0xed,0x15,0x55,0x4a,0x5a,0xcb,0xda,0x0e,0xcd,0x47,0xd3,0x19,0x55,0x09,0xb0,0x93,0x3e,0x34,0x8c,0xac,0xd4,0x67,0x22,0x75,0x21,0x8e,0x72,0x4b,0x45,0x09,0xd8,0xb8,0x84,0xd4,0xf4,0xe8,0x58,0xaa,0x3c,0x90,0x46,0x7f,0x4d,0x25,0x58,0xd3,0x17,0x52,0x1c,0x24,0x43,0xc0,0xac,0x44,0x77,0x57,0x7a,0x4f,0xbb,0x6b,0x7d,0x1c,0xe1,0x13,0x83,0x91,0xd4,0xfe,0x35,0x8b,0x84,0x46,0x6b,0xc9,0xc6,0xa1,0xdc,0x4a,0xbd,0x71,0xad,0x12,0x83,0x1c,0x6d,0x55
db 0x82,0x39,0x8d,0x0c,0xe3,0x40,0xef,0x17,0x34,0xfa,0xa3,0x15,0x3e,0x07,0xf7,0x31,0x6e,0x64,0x73,0x07,0xcb,0xf3,0x21,0x4f,0xff,0x4e,0x82,0x1d,0x6d,0x6c,0x6c,0x74,0x21,0xe8,0x1b,0xb1,0x56,0x67,0xf0,0x81,0xdd,0xf3,0xa3,0x10,0x23,0xf8,0xaf,0x0f,0x5d,0x46,0x99,0x6a,0x55,0xd0,0xb2,0xf8,0x05,0x7f,0x8c,0xcc,0x38,0xbe,0x7a,0x09,0xa4,0x2d,0xa5,0x7e,0x87,0xc9,0x49,0x0c,0x43,0x1d,0xdc,0x9b,0x55,0x69,0x43,0x4c,0xd2,0xeb,0xcc,0xf7,0x09,0x38,0x2c,0x02,0xbd,0x84,0xee,0x4b,0xa3,0x14,0x7e,0x57
db 0x0a,0x3b,0xa7,0x61,0xac,0x68,0xe2,0xf0,0xf5,0xa5,0x91,0x37,0x10,0xfa,0xfa,0xf2,0xe9,0x00,0x6d,0x6b,0x82,0x3e,0xe1,0xc1,0x42,0x8f,0xd7,0x6f,0xe9,0x7e,0xfa,0x60,0x2b,0xd7,0x4d,0xbd,0xbe,0xce,0xfe,0x94,0x11,0x22,0x0f,0x06,0xda,0x4f,0x6a,0xf4,0xff,0xd1,0xc8,0xc0,0x77,0x59,0x4a,0x12,0x95,0x92,0x00,0xfb,0xb8,0x04,0x53,0x70,0xc6,0x6e,0x29,0x4d,0x35,0x1d,0x3d,0xb6,0xd8,0x31,0xad,0x5f,0x3e,0x05,0xc3,0xf3,0xec,0x42,0xbd,0xb4,0x8c,0x95,0x0b,0x67,0xfd,0x53,0x63,0xa1,0x0c,0x8e,0x39,0x21
db 0xf3,0x33,0x2b,0x38,0x8a,0x05,0xf5,0x89,0xb4,0xc0,0x48,0xad,0x0b,0xba,0xe2,0x5a,0x6e,0xb3,0x3d,0xa5,0x03,0xb5,0x93,0x8f,0xe6,0x32,0xa2,0x95,0x9d,0xed,0xa3,0x5a,0x01,0x56,0xb7,0xb4,0xf9,0xaa,0x98,0x27,0x72,0xad,0x8d,0x5c,0x13,0x72,0xac,0x5e,0x23,0xa0,0xb7,0x61,0x61,0xaa,0xce,0xd2,0x4e,0x7d,0x8f,0xe9,0x84,0xb2,0xbf,0x1b,0x61,0x65,0xd9,0xc7,0xe9,0x77,0x67,0x65,0x36,0x80,0xc7,0x72,0x54,0x12,0x2b,0xcb,0xee,0x6e,0x50,0xd9,0x99,0x32,0x05,0x65,0xcc,0x57,0x89,0x5e,0x4e,0xe1,0x07,0x4a
db 0x99,0xf9,0x0d,0x98,0xcb,0x12,0xe4,0x4e,0x71,0xc7,0x6e,0x3c,0x6f,0xd7,0x15,0xa3,0xfd,0x77,0x5c,0x92,0xde,0xed,0xa5,0xbb,0x02,0x34,0x31,0x1d,0x39,0xac,0x0b,0x3f,0x9b,0xa4,0x77,0xc4,0xcd,0x58,0x0b,0x24,0x17,0xf0,0x47,0x64,0xde,0xda,0x38,0xfd,0xad,0x6a,0xc8,0xa7,0x32,0x8d,0x92,0x19,0x81,0xa0,0xaf,0x84,0xed,0x7a,0xaf,0x50,0xe5,0x5b,0xf6,0x15,0x01,0xde,0x4f,0x6e,0xb2,0x09,0x61,0x21,0x21,0x26,0x98,0x29,0xd9,0xd6,0xad,0x0b,0x81,0x05,0x02,0x78,0x06,0xd0,0xeb,0xba,0x16,0xa3,0x21,0x19
db 0xfc,0x70,0xb8,0xdf,0x7e,0x2f,0x42,0x89,0xbd,0xb3,0x76,0x4f,0xeb,0x6b,0x29,0x2c,0xf7,0x4d,0xc2,0x36,0xd4,0xf1,0x38,0x07,0xb0,0xae,0x73,0xe2,0x41,0xdf,0x58,0x64,0x8b,0xc1,0xf3,0xd9,0x9a,0xad,0x5a,0xd7,0x9c,0xc1,0xb1,0x60,0xef,0x0e,0x6a,0x56,0xd9,0x0e,0x5c,0x25,0xac,0x0b,0x9a,0x3e,0xf5,0xc7,0x62,0xa0,0xec,0x9d,0x04,0x7b,0x83,0x44,0x44,0x35,0x7a,0xe3,0xcb,0xdc,0x93,0xbe,0xed,0x0f,0x33,0x79,0x88,0x75,0x87,0xdd,0xc5,0x12,0xc3,0x04,0x60,0x78,0x64,0x0e,0x95,0xc2,0xcb,0xdc,0x93,0x60
db 0x6d,0x70,0xe0,0x85,0x85,0x9a,0xf3,0x1f,0x33,0x39,0xe7,0xb3,0xd8,0xa5,0xd0,0x36,0x3b,0x45,0x8f,0x71,0xe1,0xf2,0xb9,0x43,0x7c,0xa9,0x27,0x48,0x08,0xea,0xd1,0x57,0x4b,0x03,0x84,0x60,0xbe,0xee,0xde,0x6b,0x54,0xb8,0x0f,0x78,0xb6,0xc2,0x99,0x31,0x95,0x06,0x2d,0xb6,0xab,0x76,0x33,0x97,0x90,0x7d,0x64,0x8b,0xc9,0x80,0x31,0x6e,0x71,0xb0,0x28,0xa1,0xe7,0xb6,0x7a,0xee,0xaa,0x8b,0xa8,0x93,0x6d,0x59,0xc1,0xa4,0x30,0x61,0x21,0xb2,0x82,0xde,0xb4,0xf7,0x18,0xbd,0x97,0xdd,0x9d,0x99,0x3e,0x36
db 0xc4,0x1f,0xee,0x35,0xc1,0x43,0xa8,0x96,0xcf,0xc8,0xe4,0x08,0x55,0xb3,0x6e,0x97,0x30,0xd3,0x8c,0xb5,0x01,0x68,0x2f,0xb4,0x2b,0x05,0x3a,0x69,0x78,0x9b,0xee,0x48,0xc6,0xae,0x4b,0xe2,0xdc,0x48,0x18,0x2f,0x60,0xaf,0xbc,0xba,0x55,0x72,0x9b,0x76,0x31,0xe9,0xef,0x3c,0x6e,0x3c,0xcb,0x90,0x55,0xb3,0xf9,0xc6,0x9b,0x97,0x1f,0x23,0xc6,0xf3,0x2a,0xcc,0x4b,0xde,0x31,0x5c,0x1f,0x8d,0x20,0xfe,0x30,0xb0,0x4b,0xb0,0x66,0xb4,0x4f,0xc1,0x09,0x70,0x8d,0xb7,0x13,0x24,0x79,0x08,0x9b,0xfa,0x9b,0x07
db 0xf4,0x0d,0x30,0xda,0x51,0x3a,0x90,0xe3,0xb0,0x5a,0xa9,0x3d,0x23,0x64,0x39,0x84,0x80,0x64,0x35,0x0b,0x2d,0xf1,0x3c,0xed,0x94,0x71,0x81,0x84,0xf6,0x77,0x8c,0x03,0x45,0x42,0xd5,0xa2,0x80,0xed,0xc9,0xf3,0x52,0x39,0xf6,0x77,0x78,0x8b,0xa0,0x0a,0x75,0x54,0x08,0xd1,0x63,0xac,0x6d,0xd7,0x6b,0x63,0x70,0x94,0x15,0xfb,0xf4,0x1e,0xec,0x7b,0x16,0x5b,0xe6,0x5e,0x4e,0x85,0xc2,0xcd,0xd0,0x96,0x42,0x0a,0x59,0x59,0x99,0x21,0x10,0x98,0x34,0xdf,0xb2,0x72,0x56,0xff,0x0b,0x4a,0x2a,0xe9,0x5e,0x57
db 0xcf,0x2f,0x18,0x8a,0x90,0x80,0xc0,0xd4,0xbd,0x9d,0x48,0x99,0xc2,0x70,0xe1,0x30,0xde,0x33,0xf7,0x52,0x57,0xbd,0xba,0x05,0x00,0xfd,0xd3,0x2c,0x11,0xe7,0xd4,0x43,0x01,0xd8,0xa4,0x0a,0x45,0xbc,0x46,0x5d,0xd8,0xb9,0x33,0xa5,0x27,0x12,0xaf,0xc3,0xc2,0x06,0x89,0x2b,0x26,0x3b,0x9e,0x38,0x1b,0x58,0x2f,0x38,0x7e,0x1e,0x0a,0x20,0xc5,0x3a,0xf9,0xea,0x67,0xb9,0x8d,0x51,0xc0,0x52,0x66,0x05,0x9b,0x98,0xbc,0x71,0xf5,0x97,0x71,0x56,0xd9,0x85,0x2b,0xfe,0x38,0x4e,0x1e,0x65,0x52,0xca,0x0e,0x05
db 0x9c,0x0c,0x3f,0x45,0xde,0x1a,0x43,0xc3,0x9b,0x3b,0x70,0xff,0x5e,0x04,0xf5,0xe9,0x3d,0x7b,0x84,0xed,0xc9,0x7a,0xd9,0xfc,0xc6,0xf4,0x58,0x1c,0xc2,0xe6,0x0e,0x4b,0xea,0x68,0xe6,0x60,0x76,0x39,0xac,0x97,0x97,0xb4,0x3a,0x15,0xfe,0xbb,0x19,0x9b,0x9f,0xa7,0xec,0x34,0xb5,0x79,0xb1,0x4c,0x57,0xae,0x31,0xa1,0x9f,0xc0,0x51,0x61,0x96,0x5d,0xf0,0xfd,0x0d,0x5c,0xf5,0x3a,0x7a,0xee,0xb4,0x2a,0xe0,0x2e,0x26,0xdd,0x09,0x17,0x17,0x12,0x87,0xbb,0xb2,0x11,0x0b,0x03,0x0f,0x80,0xfa,0x24,0xef,0x1f
db 0x96,0x31,0xa7,0x1a,0xfb,0x53,0xd6,0x37,0x18,0x64,0xd7,0x3f,0x30,0x95,0x94,0x0f,0xb2,0x17,0x3a,0xfb,0x09,0x0b,0x20,0xad,0x3e,0x61,0xc8,0x2f,0x29,0x49,0x4d,0x54,0x86,0x6b,0x97,0x30,0xf5,0xaf,0xd2,0x22,0x04,0x46,0xd2,0xc2,0x06,0xb8,0x90,0x8d,0xe5,0xba,0xe5,0x4d,0x6c,0x89,0xa1,0xdc,0x17,0x0c,0x34,0xc8,0xe6,0x5f,0x00,0x28,0x88,0x86,0x52,0x34,0x9f,0xba,0xef,0x6a,0xa1,0x7d,0x10,0x25,0x94,0xff,0x1b,0x5c,0x36,0x4b,0xd9,0x66,0xcd,0xbb,0x5b,0xf7,0xfa,0x6d,0x31,0x0f,0x93,0x72,0xe4,0x72
db 0x4f,0x08,0x81,0x97,0x8c,0x20,0x95,0x26,0xe1,0x0e,0x45,0x23,0x0b,0x2a,0x50,0xb1,0x02,0xde,0xef,0x03,0xa6,0xae,0x9d,0xfd,0x4c,0xa3,0x33,0x27,0x8c,0x2e,0x9d,0x5a,0x27,0x76,0x2a,0xd3,0x35,0xf6,0xf3,0x07,0xf0,0x66,0x65,0x5f,0x86,0x4d,0xaa,0x7a,0x50,0x44,0xd0,0x28,0x97,0xe7,0x85,0x3c,0x38,0x64,0xe0,0x0f,0x00,0x7f,0xee,0x1f,0xe5,0xf7,0xdb,0x03,0xda,0x05,0x53,0x76,0xbd,0xcd,0x34,0x14,0x49,0xf2,0xda,0xa4,0xec,0x88,0x4a,0xd2,0xcd,0xd5,0x4a,0x7b,0x43,0x05,0x04,0xee,0x51,0x40,0xf9,0x00
db 0xb2,0x30,0xd3,0xc3,0x23,0x6b,0x35,0x8d,0x06,0x1b,0x47,0xb0,0x9b,0x8b,0x1c,0xf2,0x3c,0xb8,0x42,0x6e,0x6c,0x31,0x6c,0xb3,0x0d,0xb1,0xea,0x8b,0x7e,0x9c,0xd7,0x07,0x53,0x97,0xaf,0x07,0xbb,0x93,0xef,0xd7,0xa7,0x66,0xb7,0x3d,0xcf,0xd0,0x3e,0x58,0xc5,0x1e,0x0b,0x6e,0xbf,0x98,0x69,0xce,0x52,0x04,0xd4,0x5d,0xd2,0xff,0xb7,0x47,0x12,0xdd,0x08,0xbc,0x9c,0xfb,0xfb,0x87,0x9b,0xc2,0xee,0xe1,0x3a,0x6b,0x06,0x8a,0xbf,0xc1,0x1f,0xdb,0x2b,0x24,0x57,0x0d,0xb6,0x4b,0xa6,0x5e,0xa3,0x20,0x35,0x1c
db 0x4a,0xa3,0xcb,0xbc,0xa6,0x53,0xd2,0x80,0x9b,0x21,0x38,0x38,0xa1,0xc3,0x61,0x3e,0x96,0xe3,0x82,0x98,0x01,0xb6,0xc3,0x90,0x6f,0xe6,0x0e,0x5d,0x77,0x05,0x3d,0x1c,0x59,0xc0,0x6b,0x21,0x40,0x6f,0xa8,0xcd,0x7e,0xd8,0xbc,0x12,0x1d,0x23,0xbb,0x1f,0x90,0x09,0xc7,0x17,0x9e,0x6a,0x95,0xb4,0x55,0x2e,0xd1,0x66,0x3b,0x0c,0x75,0x38,0x1a,0xe5,0x22,0x94,0x40,0xf1,0x2e,0x69,0x71,0xf6,0x5d,0x2b,0x3c,0xc7,0xc0,0xcb,0x29,0xe0,0x4c,0x74,0xe7,0x4f,0x01,0x21,0x7c,0x48,0x30,0xd3,0xc7,0xe2,0x21,0x06
db 0x8d,0x83,0x59,0x82,0xcc,0x60,0x98,0xaf,0xdc,0x9a,0x9f,0xc6,0xc1,0x48,0xea,0x90,0x30,0x1e,0x58,0x65,0x37,0x48,0x26,0x65,0xbc,0xa5,0xd3,0x7b,0x09,0xd6,0x07,0x00,0xf3,0xf0,0xdb,0xb0,0x96,0x17,0xae,0xb7,0x96,0xe1,0x7c,0xe1,0xb9,0xaf,0xdf,0x54,0xb4,0xa3,0xaa,0xe9,0x71,0x30,0x92,0x25,0x9d,0x2e,0x00,0xa1,0x9c,0x58,0x8e,0x5d,0x4b,0xa9,0x42,0x08,0x95,0x1d,0xbf,0xc0,0x3e,0x2e,0x8f,0x58,0x63,0xc3,0xd3,0xb2,0xef,0xe2,0x51,0xbb,0x38,0x14,0x96,0x0a,0x86,0xbf,0x1c,0x3c,0x78,0xd7,0x83,0x15
db 0xe1,0x7a,0xa2,0x5d,0xef,0xa2,0xee,0xec,0x74,0x01,0x67,0x55,0x14,0x3a,0x7c,0x59,0x7a,0x16,0x09,0x66,0x12,0x2a,0xa6,0xc9,0x70,0x8f,0xed,0x81,0x2e,0x5f,0x2a,0x25,0xc7,0x28,0x9d,0xcc,0x04,0x47,0x03,0x90,0x8f,0xc5,0x2c,0xf7,0x9e,0x67,0x1b,0x1d,0x26,0x87,0x5b,0xbe,0x5f,0x2b,0xe1,0x16,0x0a,0x58,0xc5,0x83,0x4e,0x06,0x58,0x49,0x0d,0xe8,0x66,0x50,0x26,0x94,0x28,0x0d,0x6b,0x8c,0x7c,0x30,0x85,0xf7,0xc3,0xfc,0xfd,0x12,0x11,0x0c,0x78,0xda,0x53,0x1b,0x88,0xb3,0x43,0xd8,0x0b,0x17,0x9c,0x07
db 0xff,0x6f,0xfa,0x64,0xe4,0xec,0x06,0x05,0x23,0xe5,0x05,0x62,0x1e,0x43,0xe3,0xbe,0x42,0xea,0xb8,0x51,0x24,0x42,0x79,0x35,0x00,0xfb,0xc9,0x4a,0xe3,0x05,0xec,0x6d,0x56,0xd0,0xd5,0xc0,0x50,0xcd,0xd6,0xcd,0x3b,0x57,0x03,0xbb,0x6d,0x68,0xf7,0x9a,0x48,0xef,0xc3,0xf3,0x3f,0x72,0xa6,0x3c,0xcc,0x8a,0x7b,0x31,0xd7,0xc0,0x68,0x67,0xb3,0xc1,0x55,0xf1,0xe5,0x25,0xb6,0x94,0x91,0x7b,0x7b,0x99,0xa7,0xf3,0x7b,0x41,0x00,0x26,0x6b,0x6d,0xdc,0xbd,0x2c,0xc2,0xf4,0x52,0xcd,0xdd,0x14,0x5e,0x44,0x51
db 0x51,0x49,0x14,0x3b,0x4b,0x2b,0x50,0x57,0xb3,0xbc,0x4b,0x44,0x6b,0xff,0x67,0x8e,0xdb,0x85,0x63,0x16,0x27,0x69,0xbd,0xb8,0xc8,0x95,0x92,0xe3,0x31,0x6f,0x18,0x13,0x55,0xa4,0xbe,0x2b,0xab,0x47,0x31,0x89,0x29,0x91,0x07,0x92,0x4f,0xa2,0x53,0x8c,0xa7,0xf7,0x30,0xbe,0x48,0xf9,0x49,0x4b,0x3d,0xd4,0x4f,0x6e,0x08,0x90,0xe9,0x12,0x2e,0xbb,0xdf,0x7f,0xb3,0x96,0x0c,0xf1,0xf9,0xea,0x1c,0x12,0x5e,0x93,0x9a,0x9f,0x3f,0x98,0x5b,0x3a,0xc4,0x36,0x11,0xdf,0xaf,0x99,0x3e,0x5d,0xf0,0xe3,0xb2,0x77
db 0xde,0xc4,0x2e,0x9c,0xc5,0xa9,0x6f,0x29,0xcb,0xf3,0x84,0x4f,0xbf,0x61,0x8b,0xbc,0x08,0xf9,0xa8,0x17,0xd9,0x06,0x77,0x1c,0x5d,0x25,0xd3,0x7a,0xfc,0x95,0xb7,0x63,0xa4,0xb0,0xdd,0x12,0x9c,0x63,0x98,0xd5,0x6b,0x86,0x24,0xc0,0x30,0x9f,0xd1,0xa5,0x60,0xe4,0xfc,0x58,0x03,0x2f,0x7c,0xd1,0x8a,0x5e,0x09,0x2e,0x15,0x95,0xa1,0x07,0xc8,0x5f,0x9e,0x38,0x02,0x8f,0x36,0xa8,0x3b,0xe4,0x8d,0xcf,0x02,0x3b,0x43,0x90,0x43,0x26,0x41,0xc5,0x5d,0xfd,0xa1,0xaf,0x37,0x01,0x2f,0x03,0x3d,0xe8,0x8f,0x3e
db 0x94,0xa2,0x70,0x05,0xb9,0x15,0x8b,0x2f,0x49,0x45,0x08,0x67,0x70,0x42,0xf2,0x94,0x84,0xfd,0xbb,0x61,0xe1,0x5a,0x1c,0xde,0x07,0x40,0xac,0x7f,0x79,0x3b,0xba,0x75,0x3c,0xd1,0xef,0xe8,0x8d,0x4c,0x70,0x08,0x31,0x37,0xe0,0x33,0x8e,0x1a,0xc5,0xdf,0xe3,0xcd,0x60,0x12,0xa5,0x5d,0x9d,0xa5,0x86,0x8c,0x25,0xa6,0x99,0x08,0xd6,0x22,0x96,0xd1,0xcd,0x70,0xc0,0xdb,0x39,0x62,0x9a,0x8a,0x7d,0x6c,0x8b,0x8a,0xfe,0x60,0x60,0x12,0x40,0xeb,0xbc,0x47,0x88,0xb3,0x5e,0x9e,0x77,0x87,0x7b,0xd0,0x04,0x09
db 0x9c,0x91,0xba,0xdd,0xd4,0x1f,0xce,0xb4,0xaa,0x8d,0x4c,0xc7,0x3e,0xdb,0x31,0xcf,0x51,0xcc,0x86,0xad,0x63,0xcc,0x63,0x2c,0x07,0xde,0x1d,0xbc,0x3f,0x14,0xe2,0x43,0xb9,0x40,0xf9,0x48,0x66,0x2d,0x32,0xf4,0x39,0x0c,0x2d,0xbd,0x0c,0x2f,0x95,0x06,0x31,0xf9,0x81,0xa0,0xad,0x97,0x76,0x16,0x6c,0x2a,0xf7,0xba,0xce,0xaa,0x40,0x62,0xa0,0x95,0xa2,0x5b,0x9c,0x74,0x34,0xf8,0x5a,0xd2,0x37,0xca,0x5b,0x7c,0x94,0xd6,0x6a,0x31,0xc9,0xe7,0xa7,0x3b,0xf1,0x66,0xac,0x0c,0xb4,0x8d,0x23,0xaf,0xbd,0x56
db 0xeb,0x33,0x35,0xf5,0xe3,0xb9,0x2a,0x36,0x40,0x3d,0xb9,0x6e,0xd5,0x68,0x85,0x33,0x72,0x55,0x5a,0x1d,0x52,0x14,0x0e,0x9e,0x18,0x13,0x74,0x83,0x6d,0xa8,0x24,0x1d,0xb2,0x3b,0x9d,0xc1,0x6c,0xd3,0x10,0x13,0xb9,0x86,0x23,0x62,0xb7,0x6b,0x2a,0x06,0x5c,0x4f,0xa1,0xd7,0x91,0x85,0x9b,0x7c,0x54,0x57,0x1e,0x7e,0x50,0x31,0xaa,0x03,0x1f,0xce,0xd4,0xff,0x48,0x76,0xec,0xf4,0x1c,0x8c,0xac,0x54,0xf0,0xea,0x45,0xe0,0x7c,0x35,0x09,0x1d,0x82,0x25,0xd2,0x88,0x59,0x48,0xeb,0x9a,0xdc,0x61,0xb2,0x43
db 0xbb,0x79,0xbb,0x88,0x19,0x1e,0x5b,0xe5,0x9d,0x35,0x7a,0xc1,0x7d,0xd0,0x9e,0xa0,0x33,0xea,0x3d,0x60,0xe2,0x2e,0x2c,0xb0,0xc2,0x6b,0x27,0x5b,0xcf,0x55,0x60,0x32,0x64,0x13,0x95,0x6c,0x8b,0x3d,0x51,0x19,0x7b,0xf4,0x0b,0x00,0x26,0x71,0xfe,0x94,0x67,0x95,0x4f,0xd5,0xdd,0x10,0x8d,0x02,0x64,0x09,0x94,0x42,0xe2,0xd5,0xb4,0x02,0xf2,0x8d,0xd1,0x28,0xcb,0x55,0xa1,0xb4,0x08,0xe5,0x6c,0x18,0x46,0x46,0xcc,0xea,0x89,0x43,0x82,0x6c,0x93,0xf4,0x9c,0xc4,0x10,0x34,0x5d,0xae,0x09,0xc8,0xa6,0x27
db 0x88,0xb1,0x0d,0x1f,0xcd,0xeb,0xa6,0x8b,0xe8,0x5b,0x5a,0x67,0x3a,0xd7,0xd3,0x37,0x5a,0x58,0xf5,0x15,0xa3,0xdf,0x2e,0xf2,0x7e,0xa1,0x60,0xff,0x74,0x71,0xb6,0x2c,0x54,0x69,0x3d,0xc4,0x0a,0x27,0x2c,0xcd,0xb2,0xca,0x66,0x6a,0x57,0x3e,0x4a,0xdd,0x6c,0x03,0xd7,0x69,0x24,0x59,0xfa,0x79,0x99,0x25,0x8c,0x3d,0x60,0x03,0x15,0x22,0xd0,0xe1,0x0b,0x39,0xf9,0xcd,0xee,0x59,0xf1,0xe3,0x8c,0x72,0x44,0x20,0x42,0xa9,0xf4,0xf0,0x94,0x7a,0x66,0x1c,0x89,0x82,0x36,0xf4,0x90,0x38,0xb7,0xf4,0x1d,0x7b
db 0x24,0xa2,0xb2,0xb3,0xe0,0xf2,0x92,0xe4,0x60,0x11,0x55,0x2b,0x06,0x9e,0x6c,0x7c,0x0e,0x7b,0x7f,0x0d,0xe2,0x8f,0xeb,0x15,0x92,0x59,0xfc,0x58,0x26,0xef,0xfc,0x61,0x8c,0xf5,0xf8,0x07,0x18,0x22,0x2e,0x5f,0xd4,0x09,0x94,0xd4,0x9f,0x5c,0x55,0xe3,0x30,0xa6,0xb6,0x1f,0x8d,0xa8,0xaa,0xb2,0x3d,0xe0,0x52,0xd3,0x45,0x82,0x69,0x68,0x7a,0x18,0x18,0x2a,0x85,0x5d,0xb1,0xdb,0xd7,0xac,0xdd,0x86,0xd3,0xaa,0xe4,0xf3,0x82,0xc4,0xf6,0x0f,0x81,0xe2,0xba,0x44,0xcf,0x01,0xaf,0x3d,0x47,0x4c,0xcf,0x46
db 0xf9,0xe5,0xc4,0x9e,0xed,0x25,0x65,0x42,0x03,0x33,0x90,0x16,0x01,0xda,0x5e,0x0e,0xdc,0xca,0xe5,0xcb,0xf2,0xa7,0xb1,0x72,0x40,0x5f,0xeb,0x14,0xcd,0x7b,0x38,0x29,0x40,0x81,0x49,0xf1,0xa7,0x6e,0x3c,0x21,0x54,0x48,0x2b,0x39,0xf8,0x7e,0x1e,0x7c,0xba,0xce,0x29,0x56,0x8c,0xc3,0x88,0x24,0xbb,0xc5,0x8c,0x0d,0xe5,0xaa,0x65,0x10,0x57,0x0d,0x20,0xdf,0x25,0x45,0x2c,0x1c,0x4a,0x67,0xca,0xbf,0xd6,0x2d,0x3b,0x5c,0x30,0x40,0x83,0xe1,0xb1,0xe7,0x07,0x0a,0x16,0xe7,0x1c,0x4f,0xe6,0x98,0xa1,0x69
db 0xbc,0x78,0x1a,0xd9,0xe0,0xb2,0x62,0x90,0x67,0x96,0x50,0xc8,0x9c,0x88,0xc9,0x47,0xb8,0x70,0x50,0x40,0x66,0x4a,0xf5,0x9d,0xbf,0xa1,0x93,0x24,0xa9,0xe6,0x69,0x73,0xed,0xca,0xc5,0xdc,0x34,0x44,0x01,0xe1,0x33,0xfb,0x84,0x3c,0x96,0x5d,0xed,0x47,0xe7,0xa0,0x86,0xed,0x76,0x95,0x01,0x70,0xe4,0xf9,0x67,0xd2,0x7b,0x69,0xb2,0x25,0x64,0x68,0x98,0x13,0xfb,0x3f,0x67,0x9d,0xb8,0xc7,0x5d,0x41,0xd9,0xfb,0xa5,0x3c,0x5e,0x3b,0x27,0xdf,0x3b,0xcc,0x4e,0xe0,0xd2,0x4c,0x4e,0xb5,0x3d,0x68,0x20,0x14
db 0x97,0xd1,0x9d,0x24,0x1e,0xbd,0x78,0xb4,0x02,0xc1,0x58,0x5e,0x00,0x35,0x0c,0x62,0x5c,0xac,0xba,0xcc,0x2f,0xd3,0x02,0xfb,0x2d,0xa7,0x08,0xf5,0xeb,0x3b,0xb6,0x60,0xd0,0x5a,0xcc,0xc1,0x6f,0xbb,0xee,0x34,0x8b,0xac,0x46,0x96,0xe9,0x0c,0x1b,0x6a,0x53,0xde,0x6b,0xa6,0x49,0xda,0xb0,0xd3,0xc1,0x81,0xd0,0x61,0x41,0x3b,0xe8,0x31,0x4f,0x2b,0x06,0x9e,0x12,0xc7,0xe8,0x97,0xd8,0x0a,0x32,0x29,0x4f,0x8f,0xe4,0x49,0x3f,0x68,0x18,0x6f,0x4b,0xe1,0xec,0x5b,0x17,0x03,0x55,0x2d,0xb6,0x1e,0xcf,0x55
db 0x58,0x3d,0xc2,0x65,0x10,0x10,0x79,0x58,0x9c,0x81,0x94,0x50,0x6d,0x08,0x9d,0x8b,0xa7,0x5f,0xc5,0x12,0xa9,0x2f,0x40,0xe2,0xd4,0x91,0x08,0x57,0x64,0x65,0x9a,0x66,0x52,0x8c,0xf5,0x7d,0xe3,0xb5,0x76,0x30,0x36,0xcc,0x99,0xe7,0xdd,0xb9,0x3a,0xd7,0x20,0xee,0x13,0x49,0xe3,0x1c,0x83,0xbd,0x33,0x01,0xba,0x62,0xaa,0xfb,0x56,0x1a,0xec,0xc9,0x9d,0x5c,0x50,0x6b,0x3e,0x94,0x1a,0x37,0x7c,0xa7,0xbb,0x57,0x25,0x30,0x51,0x76,0x34,0x41,0x56,0xae,0x73,0x98,0x5c,0x8a,0xc5,0x99,0x67,0x83,0xc4,0x13
db 0xb9,0xe1,0xb3,0x5a,0x46,0x5d,0x3a,0x42,0x61,0x3f,0xf1,0xc7,0x87,0xc1,0x13,0xfc,0xb6,0xb9,0xb5,0xec,0x64,0x36,0xf8,0x19,0x07,0xb6,0x37,0xa6,0x93,0x0c,0xf8,0x66,0x80,0xd0,0x8b,0x5d,0x6a,0xfb,0xdc,0xc4,0x42,0x48,0x1a,0x57,0xec,0xc4,0xeb,0xde,0x65,0x53,0xe5,0xb8,0x83,0xe8,0xb2,0xd4,0x27,0xb8,0xe5,0xc8,0x7d,0xc8,0xbd,0x50,0x11,0xe1,0xdf,0x6e,0x83,0x37,0x6d,0x60,0xd9,0xab,0x11,0xf0,0x15,0x3e,0x35,0x32,0x96,0x3b,0xb7,0x25,0xc3,0x3a,0xb0,0x64,0xae,0xd5,0x5f,0x72,0x44,0x64,0xd5,0x1d
db 0x7d,0x12,0x62,0x33,0xf8,0x7f,0xa4,0x8f,0x15,0x7c,0xcd,0x71,0xc4,0x6a,0x9f,0xbc,0x8b,0x0c,0x22,0x49,0x43,0x45,0x71,0x6e,0x2e,0x73,0x9f,0x21,0x12,0x59,0x64,0x0e,0x9a,0xc8,0xba,0x08,0x00,0xe6,0x97,0xc2,0xe0,0xc3,0xe1,0xea,0x11,0xea,0x4c,0x7d,0x7c,0x97,0xe7,0x9f,0xe1,0x8b,0xe3,0xf3,0xcd,0x05,0xa3,0x63,0x0f,0x45,0x3a,0x3a,0x27,0x46,0x39,0xd8,0x31,0x2f,0x8f,0x07,0x10,0xa5,0x94,0xde,0x83,0x31,0x9d,0x38,0x80,0x6f,0x99,0x17,0x6d,0x6c,0xe3,0xd1,0x7b,0xa8,0xa9,0x93,0x93,0x8d,0x8c,0x31
db 0x19,0xfe,0xff,0x2a,0x03,0x5d,0x74,0xf2,0x66,0xdb,0x24,0x7f,0x49,0x3c,0x9f,0x0c,0xef,0x98,0x85,0xba,0xe3,0xd3,0x98,0xbc,0x14,0x53,0x1d,0x9a,0x67,0x7c,0x4c,0x22,0x98,0xd3,0x1d,0xab,0x29,0x9e,0x66,0x5d,0x3b,0x9e,0x2d,0x34,0x58,0x16,0x92,0xfc,0xcd,0x73,0x59,0xf3,0xfd,0x1d,0x85,0x55,0xf6,0x0a,0x95,0x25,0xc3,0x41,0x9a,0x50,0xe9,0x25,0xf9,0xa6,0xdc,0x6e,0xc0,0xbd,0x33,0x1f,0x1b,0x64,0xf4,0xf3,0x3e,0x79,0x89,0x3e,0x83,0x9d,0x80,0x12,0xec,0x82,0x89,0x13,0xa1,0x28,0x23,0xf0,0xbf,0x05
db 0x0b,0xe0,0xca,0x23,0x70,0x13,0x32,0x36,0x59,0xcf,0xac,0xd1,0x0a,0xcf,0x4a,0x54,0x88,0x1c,0x1a,0xd2,0x49,0x10,0x74,0x96,0xa7,0x44,0x2a,0xfa,0xc3,0x8c,0x0b,0x78,0xe4,0x12,0xc5,0x0d,0xdd,0xa0,0x81,0x68,0xfe,0xfa,0xa5,0x44,0xc8,0x0d,0xe7,0x4f,0x40,0x52,0x4a,0x8f,0x6b,0x8e,0x74,0x1f,0xea,0xa3,0x01,0xee,0xcd,0x77,0x62,0x57,0x5f,0x30,0x4f,0x23,0xbc,0x8a,0xf3,0x1e,0x08,0xde,0x05,0x14,0xbd,0x7f,0x57,0x9a,0x0d,0x2a,0xe6,0x34,0x14,0xa5,0x82,0x5e,0xa1,0xb7,0x71,0x62,0x72,0x18,0xf4,0x5f
db 0x9d,0xdb,0x89,0x17,0x0c,0x08,0x8e,0x39,0xf5,0x78,0xe7,0xf3,0x25,0x20,0x60,0xa7,0x5d,0x03,0xbd,0x06,0x4c,0x89,0x98,0xfa,0xbe,0x66,0xa9,0x25,0xdc,0x03,0x6a,0x10,0x40,0x95,0xb6,0x13,0xe8,0x47,0xdb,0xe5,0xe1,0x10,0x26,0x43,0x3b,0x2a,0x5d,0xf3,0x76,0x12,0x78,0x38,0xe9,0x26,0x1f,0xac,0x69,0xcb,0xa0,0xa0,0x8c,0xdb,0xd4,0x29,0xd0,0x53,0x33,0x33,0xaf,0x0a,0xad,0xd9,0xe5,0x09,0xd3,0xac,0xa5,0x9d,0x66,0x38,0xf0,0xf7,0x88,0xc8,0x8a,0x65,0x57,0x3c,0xfa,0xbe,0x2c,0x05,0x51,0x8a,0xb3,0x4a
db 0x93,0xd5,0x68,0x67,0x25,0x2b,0x7c,0xda,0x13,0xca,0x22,0x44,0x57,0xc0,0xc1,0x98,0x1d,0xce,0x0a,0xca,0xd5,0x0b,0xa8,0xf1,0x90,0xa6,0x88,0xc0,0xad,0xd1,0xcd,0x29,0x9c,0xc0,0xdd,0x5f,0xef,0xd1,0xcf,0xd6,0xce,0x5d,0x57,0xf7,0xfd,0x3e,0x2b,0xe8,0xc2,0x34,0x16,0x20,0x5d,0x6b,0xd5,0x25,0x9b,0x2b,0xed,0x04,0xbb,0xc6,0x41,0x30,0x48,0xe1,0x56,0xd9,0xf9,0xf2,0xf2,0x0f,0x2e,0x6b,0x35,0x9f,0x75,0x97,0xe7,0xad,0x5c,0x02,0x6c,0x5f,0xbb,0x98,0x46,0x1a,0x7b,0x9a,0x04,0x14,0x68,0xbd,0x4b,0x10
db 0x67,0xed,0xf1,0x68,0x31,0xfd,0xf0,0x51,0xc2,0x3b,0x6f,0xd8,0xcd,0x1d,0x81,0x2c,0xde,0xf2,0xd2,0x04,0x43,0x5c,0xdc,0x44,0x49,0x71,0x2a,0x09,0x57,0xcc,0xe8,0x5b,0x63,0xf1,0x7f,0xd6,0x5f,0x9a,0x5d,0xa9,0x81,0x56,0xc7,0x4c,0x9d,0xe6,0x2b,0xe9,0x57,0xf2,0x20,0xde,0x4c,0x02,0xf8,0xb7,0xf5,0x2d,0x07,0xfb,0x20,0x2a,0x4f,0x20,0x79,0xb0,0xeb,0x30,0x3d,0x3b,0x14,0xc8,0x30,0x2e,0x65,0xbd,0x5a,0x15,0x89,0x75,0x31,0x5c,0x6d,0x8f,0x31,0x3c,0x3c,0x65,0x1f,0x16,0x79,0xc2,0x17,0xfb,0x70,0x25
db 0x75,0x15,0xb6,0x2c,0x7f,0x36,0xfa,0x3e,0x6c,0x02,0xd6,0x1c,0x76,0x6f,0xf9,0xf5,0x62,0x25,0xb5,0x65,0x2a,0x14,0xc7,0xe8,0xcd,0x0a,0x03,0x53,0xea,0x65,0xcb,0x3d,0x5a,0x24,0xb8,0x0b,0x55,0xa9,0x2e,0x19,0xd1,0x50,0x90,0x8f,0xa8,0xfb,0xe6,0xc8,0x35,0xc9,0xa4,0x88,0x2d,0xea,0x86,0x79,0x68,0x86,0x01,0xde,0x91,0x5f,0x1c,0x24,0xaa,0x6c,0xde,0x40,0x29,0x17,0xd8,0x28,0x3a,0x73,0xd9,0x22,0xf0,0x2c,0xbf,0x8f,0xd1,0x01,0x5b,0x23,0xdd,0xfc,0xd7,0x16,0xe5,0xf0,0xcd,0x5f,0xdd,0x0e,0x42,0x08
db 0x4a,0xfa,0x62,0x83,0xab,0x20,0xff,0xcd,0x6e,0x3e,0x1a,0xe2,0xd4,0x18,0xe1,0x57,0x2b,0xe6,0x39,0xfc,0x17,0x96,0x17,0xe3,0xfd,0x69,0x17,0xbc,0xef,0x53,0x9a,0x0d,0xce,0x10,0xf4,0x04,0x4e,0xc3,0x58,0x03,0x85,0x06,0x6e,0x27,0x5a,0x5b,0x13,0xb6,0x21,0x15,0xb9,0xeb,0xc7,0x70,0x96,0x5d,0x9c,0x88,0xdb,0x21,0xf3,0x54,0xd6,0x04,0xd5,0xb5,0xbd,0xdd,0x16,0xc1,0x7d,0x5e,0x2d,0xdd,0xa5,0x8d,0xb6,0xde,0x54,0x29,0x92,0xa2,0x34,0x33,0x17,0x08,0xb6,0x1c,0xd7,0x1a,0x99,0x18,0x26,0x4f,0x7a,0x4a
db 0x95,0x5f,0xb1,0x5f,0x02,0x18,0xa7,0xf4,0x8f,0x1b,0x5c,0x6b,0x34,0x5f,0xf6,0x3d,0x12,0x11,0xe0,0x00,0x85,0xf0,0xfc,0xcd,0x48,0x18,0xd3,0xdd,0x4c,0x0c,0xb5,0x11,0x4b,0x2a,0x37,0xaf,0x91,0xb2,0xc3,0x24,0xf2,0x47,0x81,0x71,0x70,0x82,0xda,0x93,0xf2,0x9e,0x89,0x86,0x64,0x85,0x84,0xdd,0x33,0xee,0xe0,0x23,0x42,0x31,0x96,0x4a,0xd6,0xff,0xa4,0x08,0x44,0x27,0xe8,0xa6,0xd9,0x76,0x15,0x9c,0x7e,0x17,0x8e,0x73,0xf2,0xb3,0x02,0x3d,0xb6,0x48,0x33,0x77,0x51,0xcc,0x6b,0xce,0x4d,0xce,0x4b,0x4f
db 0x84,0x25,0x24,0xe2,0x5a,0xce,0x1f,0xa7,0x9e,0x8a,0xf5,0x92,0x56,0x72,0xea,0x26,0xf4,0x3c,0xea,0x1c,0xd7,0x09,0x1a,0xd2,0xe6,0x01,0x1c,0xb7,0x14,0xdd,0xfc,0x73,0x6f,0x0b,0x9d,0xc4,0x6e,0x61,0xe2,0x30,0x17,0x23,0xec,0xca,0x8f,0x71,0x56,0xe4,0xa6,0x4f,0x6b,0xf2,0x9b,0x40,0xeb,0x48,0x37,0x5f,0x59,0x61,0xe5,0xce,0x42,0x30,0x41,0xac,0x9b,0x44,0x79,0x70,0x7e,0x42,0x0a,0x31,0xe2,0xbc,0x6d,0xe3,0x5a,0x85,0x7c,0x1a,0x84,0x5f,0x21,0x76,0xae,0x4c,0xd6,0xe1,0x9c,0x9a,0x0c,0x74,0x9e,0x38
db 0xce,0xb9,0xdc,0x34,0xae,0xb3,0xfc,0x64,0xad,0xd0,0x48,0xe3,0x23,0x03,0x50,0x97,0x1b,0x38,0xc6,0x62,0x7d,0xf0,0xb3,0x45,0x88,0x67,0x5a,0x46,0x79,0x53,0x54,0x61,0x28,0xac,0x0e,0x57,0xf6,0x78,0xbd,0xc9,0xe1,0x9c,0x91,0x27,0x32,0x0b,0x5b,0xe5,0xed,0x91,0x9b,0xa1,0xab,0x3e,0xfc,0x65,0x90,0x36,0x26,0xd6,0xe5,0x25,0xc4,0x25,0x6e,0xde,0xd7,0xf1,0xa6,0x06,0x3e,0x3f,0x08,0x23,0x06,0x8e,0x27,0x76,0xf9,0x3e,0x77,0x6c,0x8a,0x4e,0x26,0xf6,0x14,0x8c,0x59,0x47,0x48,0x15,0x89,0xa0,0x39,0x65
db 0x73,0xf7,0xd2,0xc3,0x74,0x1f,0xd2,0xe9,0x45,0x68,0xc4,0x25,0x41,0x54,0x50,0xc1,0x33,0x9e,0xb9,0xf9,0xe8,0x5c,0x4e,0x62,0x6c,0x18,0xcd,0xc5,0xaa,0xe4,0xc5,0x11,0x19,0x4a,0xbb,0x14,0xd4,0xdb,0xc4,0xdd,0x8e,0x4f,0x42,0x98,0x3c,0xbc,0xb2,0x19,0x69,0x71,0xca,0x36,0xd7,0x9f,0xa8,0x48,0x90,0xbd,0x19,0xf0,0x0e,0x32,0x65,0x0f,0xc6,0xe0,0xfd,0xca,0xb1,0xd1,0x86,0xd4,0x81,0x51,0x3b,0x16,0xe3,0xe6,0x3f,0x4f,0x9a,0x93,0xf2,0xfa,0x0d,0xaf,0xa8,0x59,0x2a,0x07,0x33,0xec,0xbd,0xc7,0xab,0x4c
db 0x2e,0x0a,0x9c,0x08,0x24,0x96,0x9e,0x23,0x38,0x47,0xfe,0x3a,0xc0,0xc4,0x48,0xc7,0x2a,0xa1,0x4f,0x76,0x2a,0xed,0xdb,0x17,0x82,0x85,0x1c,0x32,0xf0,0x93,0x9b,0x63,0x89,0xd2,0x78,0x3f,0x8f,0x78,0x8f,0xc0,0x9f,0x4d,0x40,0xa1,0x2c,0xa7,0x30,0xfe,0x9d,0xcc,0x65,0xcf,0xfc,0x8b,0x77,0xf2,0x21,0x20,0xcb,0x5a,0x16,0x98,0xe4,0x7e,0xc3,0xa1,0x11,0x91,0xe3,0x08,0xd5,0x7b,0x89,0x74,0x90,0x80,0xd4,0x90,0x2b,0x2b,0x19,0xfd,0x72,0xae,0xc2,0xae,0xd2,0xe7,0xa6,0x02,0xb6,0x85,0x3c,0x49,0xdf,0x0e
db 0x68,0x5a,0x9b,0x59,0x58,0x81,0xcc,0xae,0x0e,0xe2,0xad,0xeb,0x0f,0x4f,0x57,0xea,0x07,0x7f,0xb6,0x22,0x74,0x1d,0xe4,0x4f,0xb4,0x4f,0x9d,0x01,0xe3,0x92,0x3b,0x40,0x13,0x41,0x76,0x84,0xd2,0xc4,0x67,0x67,0x35,0xf8,0xf5,0xf7,0x3f,0x40,0x90,0xa0,0xde,0xbe,0xe6,0xca,0xfa,0xcf,0x8f,0x1c,0x69,0xa3,0xdf,0xd1,0x54,0x0c,0xc0,0x04,0xf8,0x5c,0x46,0x8b,0x81,0x2f,0xc2,0x4d,0xf8,0xef,0x80,0x14,0x5a,0xf3,0xa0,0x71,0x57,0xd6,0xc7,0x04,0xad,0xbf,0xe8,0xae,0xf4,0x76,0x61,0xb2,0x2a,0xb1,0x5b,0x35
db 0xf4,0xbb,0x93,0x74,0xcc,0x64,0x1e,0xa7,0xc3,0xb0,0xa3,0xec,0xd9,0x84,0xbd,0xe5,0x85,0xe7,0x05,0xfa,0x0c,0xc5,0x6b,0x0a,0x12,0xc3,0x2e,0x18,0x32,0x81,0x9b,0x0f,0x18,0x73,0x8c,0x5a,0xc7,0xda,0x01,0xa3,0x11,0xaa,0xce,0xb3,0x9d,0x03,0x90,0xed,0x2d,0x3f,0xae,0x3b,0xbf,0x7c,0x07,0x6f,0x8e,0xad,0x52,0xe0,0xf8,0xea,0x18,0x75,0x32,0x6c,0x7f,0x1b,0xc4,0x59,0x88,0xa4,0x98,0x32,0x38,0xf4,0xbc,0x60,0x2d,0x0f,0xd9,0xd1,0xb1,0xc9,0x29,0xa9,0x15,0x18,0xc4,0x55,0x17,0xbb,0x1b,0x87,0xc3,0x47
db 0x48,0x4f,0xec,0x71,0x97,0x53,0x44,0x51,0x6e,0x5d,0x8c,0xc9,0x7d,0xb1,0x05,0xf8,0x6b,0xc6,0xc3,0x47,0x1a,0xc1,0x62,0xf7,0xdc,0x99,0x46,0x76,0x85,0x9b,0xb8,0x00,0xb0,0x66,0x50,0xc8,0x50,0x5d,0xe6,0xfb,0xb0,0x99,0xa2,0xb3,0xb0,0xc4,0xec,0x62,0xe0,0xe8,0x1a,0x44,0xea,0x54,0x37,0xe5,0x5f,0x8d,0xd4,0xe8,0x2c,0xa0,0xfe,0x08,0xd0,0xea,0xde,0x68,0x76,0xdd,0x4d,0x82,0x23,0x5d,0x68,0x4b,0x20,0x45,0x64,0xc8,0x65,0xd6,0x89,0x5d,0xcd,0xcf,0x14,0xb5,0x37,0xd5,0x75,0x4f,0xa7,0x29,0x38,0x47
db 0x18,0xc4,0x79,0x46,0x75,0xda,0xd2,0x82,0xf0,0x8d,0x61,0xb2,0xd8,0xd7,0x3b,0xe6,0x0a,0xeb,0x47,0xac,0x24,0xef,0x5e,0x35,0xb4,0xc6,0x33,0x48,0x4c,0x68,0x78,0x20,0xc9,0x02,0x39,0xad,0x3a,0x53,0xd9,0x23,0x8f,0x58,0x03,0xef,0xce,0xdd,0xc2,0x64,0xb4,0x2f,0xe1,0xcf,0x90,0x73,0x25,0x15,0x90,0xd3,0xe4,0x44,0x4d,0x8b,0x66,0x6c,0x0c,0x82,0x78,0x7a,0x21,0xcf,0x48,0x3b,0x97,0x3e,0x27,0x81,0xb2,0x0a,0x6a,0xf7,0x7b,0xed,0x8e,0x8c,0xa7,0x65,0x6c,0xa9,0x3f,0x43,0x8a,0x4f,0x05,0xa6,0x11,0x74
db 0x6d,0xc8,0x9d,0xb9,0x32,0x9d,0x65,0x4d,0x15,0xf1,0x3a,0x60,0x75,0xdc,0x4c,0x04,0x88,0xe4,0xc2,0xdc,0x2c,0x71,0x4c,0xb3,0xff,0x34,0x81,0xfb,0x74,0x65,0x13,0x7c,0xb4,0x75,0xb1,0x18,0x3d,0xe5,0x9a,0x57,0x02,0xa1,0x92,0xf3,0x59,0x31,0x71,0x68,0xf5,0x35,0xef,0x1e,0xba,0xec,0x55,0x84,0x8f,0x39,0x8c,0x45,0x72,0xa8,0xc9,0x1e,0x9b,0x50,0xa2,0x00,0xd4,0xa4,0xe6,0xb8,0xb4,0x82,0xc8,0x0b,0x02,0xd7,0x81,0x9b,0x61,0x75,0x95,0xf1,0x9b,0xcc,0xe7,0x57,0x60,0x64,0xcd,0xc7,0xa5,0x88,0xdd,0x3a
db 0xf2,0xdc,0x35,0xb6,0x70,0x57,0x89,0xab,0xbc,0x1f,0x6c,0xf6,0x6c,0xef,0xdf,0x02,0x87,0xd1,0xb6,0xbe,0x68,0x02,0x53,0x85,0x74,0x9e,0x87,0xcc,0xfc,0x29,0x99,0x24,0x46,0x30,0x39,0x59,0xd4,0x98,0xc2,0x85,0xec,0x59,0xf6,0x5f,0x98,0x35,0x7e,0x8f,0x3a,0x6e,0xf6,0xf2,0x2a,0xa2,0x2c,0x1d,0x20,0xa7,0x06,0xa4,0x31,0x11,0xba,0x61,0x29,0x90,0x95,0x16,0xf1,0xa0,0xd0,0xa3,0x89,0xbd,0x7e,0xba,0x6c,0x6b,0x3b,0x02,0x07,0x33,0x78,0x26,0x3e,0x5a,0xf1,0x7b,0xe7,0xec,0xd8,0xbb,0x0c,0x31,0x20,0x56
db 0x43,0xd6,0x34,0x49,0x43,0x93,0x89,0x52,0xf5,0x22,0x12,0xa5,0x06,0xf8,0xdb,0xb9,0x22,0x1c,0xf4,0xc3,0x8f,0x87,0x6d,0x8f,0x30,0x97,0x9d,0x4d,0x2a,0x6a,0x67,0x37,0xd6,0x85,0xe2,0x77,0xf4,0xb5,0x46,0x66,0x93,0x61,0x8f,0x6c,0x67,0xff,0xe8,0x40,0xdd,0x94,0xb5,0xab,0x11,0x73,0xec,0xa6,0x4d,0xec,0x8c,0x65,0xf3,0x46,0xc8,0x7e,0xc7,0x2e,0xa2,0x1d,0x3f,0x8f,0x5e,0x9b,0x13,0xcd,0x01,0x6c,0x77,0x1d,0x0f,0x13,0xb8,0x9f,0x98,0xa2,0xcf,0x8f,0x4c,0x21,0xd5,0x9d,0x9b,0x39,0x23,0xf7,0xaa,0x6d
db 0x47,0xbe,0x3d,0xeb,0x62,0x75,0x3a,0x5f,0xb8,0xa0,0xbd,0x8e,0x54,0x38,0xea,0xf7,0x99,0x72,0x74,0x45,0x31,0xe5,0xc3,0x00,0x51,0xd5,0x27,0x16,0xe7,0xe9,0x04,0x13,0xa2,0x8e,0xad,0xac,0xbf,0x04,0x3b,0x58,0x84,0xe8,0x8b,0x14,0xe8,0x43,0xb7,0x29,0xdb,0xc5,0x10,0x08,0x3b,0x58,0x1e,0x2b,0xaa,0xbb,0xb3,0x8e,0xe5,0x49,0x54,0x2b,0xfe,0x9c,0xdc,0x6a,0xd2,0x14,0x98,0x78,0x0b,0xdd,0x48,0x8b,0x3f,0xab,0x1b,0x3c,0x0a,0xc6,0x79,0xf9,0xff,0xe1,0x0f,0xda,0x93,0xd6,0x2d,0x7c,0x2d,0xde,0x68,0x44
db 0x9e,0x46,0x19,0x94,0x5e,0x35,0xbb,0x51,0x54,0xc7,0xdd,0x23,0x4c,0xdc,0xe6,0x33,0x62,0x99,0x7f,0x44,0xd6,0xb6,0xa5,0x93,0x63,0xbd,0x44,0xfb,0x6f,0x7c,0xce,0x6c,0xce,0x07,0x63,0xf8,0xc6,0xd8,0x9a,0x4b,0x28,0x0c,0x5d,0x43,0x31,0x35,0x11,0x21,0x2c,0x77,0x7a,0x65,0xc5,0x66,0xa8,0xd4,0x52,0x73,0x24,0x63,0x7e,0x42,0xa6,0x5d,0xca,0x22,0xac,0xde,0x88,0xc6,0x94,0x1a,0xf8,0x1f,0xae,0xbb,0xf7,0x6e,0x06,0xb9,0x0f,0x58,0x59,0x8d,0x38,0x8c,0xad,0x88,0xa8,0x2c,0x9f,0xe7,0xbf,0x9a,0xf2,0x58
db 0x68,0x3e,0xe7,0x8d,0xab,0xcf,0x0e,0xe9,0xa5,0x76,0x7e,0x37,0x9f,0x6f,0x03,0x54,0x82,0x59,0x01,0xbe,0x0b,0x5b,0x49,0xf0,0x36,0x1e,0xf4,0xa7,0xc4,0x29,0x76,0x57,0xf6,0xcd,0x0e,0x71,0xbf,0x64,0x5a,0x4b,0x3c,0x29,0x2c,0x46,0x38,0xe5,0x4c,0xb1,0xb9,0x3a,0x0b,0xd5,0x56,0xd0,0x43,0x36,0x70,0x48,0x5b,0x18,0x24,0x37,0xf9,0x6a,0x88,0xa8,0xc6,0x09,0x45,0x02,0x20,0x32,0x73,0x89,0x55,0x4b,0x13,0x36,0xe0,0xd2,0x9f,0x28,0x33,0x3c,0x23,0x36,0xe2,0x83,0x8f,0xc1,0xae,0x0c,0xbb,0x25,0x1f,0x70
db 0xed,0x6c,0x61,0xe4,0xf8,0xb0,0xa8,0xc3,0x7d,0xa8,0x25,0x9e,0x0e,0x66,0x00,0xf7,0x9c,0xa5,0xbc,0xf4,0x1f,0x06,0xe3,0x61,0xe9,0x0b,0xc4,0xbd,0xbf,0x92,0x0c,0x2e,0x13,0xc1,0xbe,0x7c,0xd9,0xf6,0x18,0x9d,0xe4,0xdb,0xbf,0x74,0xe6,0x06,0x4a,0x84,0xd6,0x60,0x4e,0xac,0x22,0xb5,0xf5,0x20,0x51,0x5e,0x95,0x50,0xc0,0x5b,0x0a,0x72,0x35,0x5a,0x80,0x9b,0x43,0x09,0x3f,0x0c,0xfc,0xab,0x42,0x62,0x37,0x8b,0x4e,0xe8,0x46,0x93,0x22,0x5c,0xf3,0x17,0x14,0x69,0xec,0xf0,0x4e,0x14,0xbb,0x9c,0x9b,0x0e
db 0xad,0x20,0x57,0xfb,0x8f,0xd4,0xba,0xfb,0x0e,0x0d,0xf9,0xdb,0x6b,0x91,0x81,0xee,0xbf,0x43,0x55,0x63,0x52,0x31,0x81,0xd4,0xd8,0x7b,0x33,0x3f,0xeb,0x04,0x11,0x22,0xee,0xbe,0xb1,0x5d,0xd5,0x9b,0xee,0x8d,0xb9,0x3f,0x72,0x0a,0x37,0xab,0xc3,0xc9,0x91,0xd7,0x68,0x1c,0xbf,0xf1,0xa8,0x44,0xde,0x3c,0xfd,0x1c,0x19,0x44,0x6d,0x36,0x14,0x8c,0xbc,0xf2,0x43,0x17,0x3c,0x9e,0x3b,0x6c,0x85,0xb5,0xfc,0x26,0xda,0x2e,0x97,0xfb,0xa7,0x68,0x0e,0x2f,0xb8,0xcc,0x44,0x32,0x59,0xbc,0xe6,0xa4,0x67,0x41
db 0x00,0x27,0xf6,0x76,0x28,0x9d,0x3b,0x64,0xeb,0x68,0x76,0x0e,0x40,0x9d,0x1d,0x5d,0x84,0x06,0xfc,0x21,0x03,0x43,0x4b,0x1b,0x6a,0x24,0x55,0x22,0x7e,0xbb,0x38,0x79,0xee,0x8f,0xce,0xf8,0x65,0x26,0xbe,0xc2,0x2c,0xd6,0x80,0xe8,0x14,0xff,0x67,0xe9,0xee,0x4e,0x36,0x2f,0x7e,0x6e,0x2e,0xf1,0xf6,0xd2,0x7e,0xcb,0x70,0x33,0xb3,0x34,0xcc,0xd6,0x81,0x86,0xee,0x91,0xc5,0xcd,0x53,0xa7,0x85,0xed,0x9c,0x10,0x02,0xce,0x83,0x88,0x80,0x58,0xc1,0x85,0x74,0xed,0xe4,0x65,0xfe,0x2d,0x6e,0xfc,0x76,0x11
db 0x9b,0x61,0x9c,0x5b,0xd0,0x6c,0xaf,0xb4,0x80,0x84,0xa5,0xb2,0xf4,0xc9,0xdf,0x2d,0xc4,0x4d,0xe9,0xeb,0x02,0xa5,0x4f,0x3d,0x34,0x5f,0x7d,0x67,0x4c,0x3a,0xfc,0x08,0xb8,0x0e,0x77,0x49,0x89,0xe2,0x90,0xdb,0xa3,0x40,0xf4,0xac,0x2a,0xcc,0xfb,0x98,0x9b,0x87,0xd7,0xde,0xfe,0x4f,0x35,0x21,0xb6,0x06,0x69,0xf2,0x54,0x3e,0x6a,0x1f,0xea,0x34,0x07,0xd3,0x99,0xc1,0xa4,0x60,0xd6,0x5c,0x16,0x31,0xb6,0x85,0xc0,0x40,0x95,0x82,0x59,0xf7,0x23,0x3e,0x33,0xe2,0xd1,0x00,0xb9,0x16,0x01,0xad,0x2f,0x4f
db 0x54,0x4e,0xae,0x94,0x41,0xb2,0xbe,0x44,0x6c,0xef,0x57,0x18,0x51,0x1c,0x54,0x5f,0x98,0x04,0x8d,0x36,0x2d,0x6b,0x1e,0xa6,0xab,0xf7,0x2e,0x97,0xa4,0x84,0x54,0x44,0x38,0xb6,0x3b,0xb7,0x1d,0xd9,0x2c,0x96,0x08,0x9c,0x12,0xfc,0xaa,0x77,0x05,0xe6,0x89,0x16,0xb6,0xf3,0x39,0x9b,0x61,0x6f,0x81,0xee,0x44,0x29,0x5f,0x99,0x51,0x34,0x7c,0x7d,0xea,0x9f,0xd0,0xfc,0x52,0x91,0xf6,0x5c,0x93,0xb0,0x94,0x6c,0x81,0x4a,0x40,0x5c,0x28,0x47,0xaa,0x9a,0x8e,0x25,0xb7,0x93,0x28,0x04,0xa6,0x9c,0xb8,0x10
db 0x9c,0x28,0x18,0x97,0x49,0x47,0x59,0x3d,0x26,0x3f,0x53,0x24,0xc5,0xf8,0xeb,0x12,0x15,0xef,0xc3,0x14,0xcb,0xbf,0x62,0x02,0x8e,0x51,0xb7,0x77,0xd5,0x78,0xb8,0x20,0x6e,0xf0,0x45,0x5a,0xbe,0x41,0x39,0x75,0x65,0x5f,0x9c,0x6d,0xed,0xae,0x7c,0xd0,0xb6,0x51,0xff,0x72,0x9c,0x6b,0x77,0x11,0xa9,0x4d,0x0d,0xef,0xd9,0xd1,0xd2,0x17,0x6a,0x3e,0x3f,0x07,0x18,0xaf,0xf2,0x27,0x69,0x10,0x52,0xd7,0x19,0xe5,0x3f,0xfd,0x22,0x00,0xa6,0x3c,0x2c,0xb7,0xe3,0x22,0xa7,0xc6,0x65,0xcc,0x63,0x4f,0x21,0x72
db 0x93,0xa6,0x07,0x53,0x40,0x7f,0xe3,0xb4,0x95,0x67,0x33,0x2f,0xd7,0x14,0xa7,0xab,0x99,0x10,0x76,0x73,0xa7,0xd0,0xfb,0xd6,0xc9,0xcb,0x71,0x81,0xc5,0x48,0xdf,0x5f,0xc9,0x29,0x3b,0xf4,0xb9,0xb7,0x9d,0x1d,0x75,0x8f,0x51,0x4f,0x4a,0x82,0x05,0xd6,0xc4,0x9d,0x2f,0x31,0xbd,0x72,0xc0,0xf2,0xb0,0x45,0x15,0x5a,0x85,0xac,0x24,0x1f,0xaa,0x05,0x95,0x8e,0x32,0x08,0xd6,0x24,0xee,0x20,0x14,0x0c,0xd1,0xc1,0x48,0x47,0xa2,0x25,0xfb,0x06,0x5c,0xe4,0xff,0xc7,0xe6,0x95,0xe3,0x2a,0x9e,0x73,0xba,0x00
db 0xd6,0x90,0x87,0x5c,0xde,0x98,0x2e,0x59,0xdf,0xa2,0xc2,0x45,0xd3,0xb7,0xbf,0xe5,0x22,0x99,0xb4,0xf9,0x60,0x3b,0x5a,0x11,0xf3,0x78,0xad,0x67,0x3e,0x3a,0x28,0x03,0x26,0xbb,0x88,0xea,0xf5,0x26,0x44,0xae,0xfb,0x3b,0x97,0x84,0xd9,0x79,0x06,0x36,0x50,0x4e,0x69,0x26,0x0c,0x03,0x9f,0x5c,0x26,0xd2,0x18,0xd5,0xe7,0x7d,0x29,0x72,0x39,0xb9,0x0c,0xbe,0xc7,0x1d,0x24,0x48,0x80,0x30,0x63,0x8b,0x4d,0x9b,0xf1,0x32,0x08,0x93,0x28,0x02,0x0d,0xc9,0xdf,0xd3,0x45,0x19,0x27,0x46,0x68,0x29,0xe1,0x05
db 0x5a,0x49,0x9c,0x2d,0xb3,0xee,0x82,0xba,0x7c,0xb9,0x2b,0xf1,0xfc,0xc8,0xef,0xce,0xe0,0xd1,0xb5,0x93,0xae,0xab,0x2d,0xb0,0x9b,0x8d,0x69,0x13,0x9c,0x0c,0xc0,0x39,0x50,0x45,0x2c,0x24,0xc8,0xbb,0xbf,0xad,0xd9,0x81,0x30,0xd0,0xec,0x0c,0xc8,0xbc,0x92,0xdf,0xc8,0xf5,0xa6,0x66,0x35,0x84,0x4c,0xce,0x58,0x82,0xd3,0x25,0xcf,0x78,0x68,0x9d,0x48,0x31,0x8e,0x6b,0xae,0x15,0x87,0xf0,0x2b,0x9c,0xab,0x1c,0x85,0xaa,0x05,0xfa,0x4e,0xf0,0x97,0x5a,0xa7,0xc9,0x32,0xf8,0x3f,0x6b,0x07,0x52,0x6b,0x00
db 0x1c,0x78,0x95,0x9d,0xe1,0xcf,0xe0,0x29,0xe2,0x10,0x63,0x96,0x18,0xdf,0x81,0xb6,0x39,0x6b,0x51,0x70,0xd3,0x39,0xdf,0x57,0x22,0x61,0xc7,0x3b,0x44,0xe3,0x57,0x4d,0x2d,0x08,0xce,0xb9,0x16,0x7e,0xcb,0xf5,0x29,0xbc,0x7a,0x41,0x4c,0xf1,0x07,0x34,0xab,0xa7,0xf4,0x2b,0xce,0x6b,0xb3,0xd4,0xce,0x75,0x9f,0x1a,0x56,0xe9,0xe2,0x7d,0xcb,0x5e,0xa5,0xb6,0xf4,0xd4,0x70,0xde,0x99,0xdb,0x85,0x5d,0x7f,0x52,0x01,0x48,0x81,0x9a,0xee,0xd3,0x40,0xc4,0xc9,0xdb,0xed,0x29,0x60,0x1a,0xaf,0x90,0x2a,0x6b
db 0x97,0x1e,0xe6,0x9a,0xfc,0xf4,0x23,0x69,0xd1,0x5f,0x3f,0xe0,0x1d,0x28,0x35,0x57,0x2d,0xd1,0xed,0xe6,0x43,0xae,0x64,0xa7,0x4a,0x3e,0x2d,0xd1,0xe9,0xf4,0xd8,0x5f,0x0a,0xd8,0xb2,0x5b,0x24,0xf3,0xeb,0x77,0x9b,0x07,0xb9,0x2f,0x47,0x1b,0x30,0xd8,0x33,0x73,0xee,0x4c,0xf2,0xe6,0x47,0xc6,0x09,0x21,0x6c,0x27,0xc8,0x12,0x58,0x46,0xd9,0x62,0x10,0x2a,0xb2,0xbe,0x43,0x4d,0x16,0xdc,0x31,0x38,0x75,0xfb,0x65,0x70,0xd7,0x68,0x29,0xde,0x7b,0x4a,0x0d,0x18,0x90,0x67,0xb1,0x1c,0x2b,0x2c,0xb3,0x05
db 0xfd,0xa8,0x4d,0xd2,0xcc,0x5e,0xc0,0xc8,0x83,0xef,0xdf,0x05,0xac,0x1a,0xcf,0xa1,0x61,0xcd,0xf9,0x7d,0xf2,0xef,0xbe,0xdb,0x99,0x1e,0x47,0x7b,0xa3,0x56,0x55,0x3b,0x95,0x81,0xd5,0x7a,0x2c,0xa4,0xfc,0xf7,0xcc,0xf3,0x33,0x43,0x6e,0x28,0x14,0x32,0x9d,0x97,0x0b,0x34,0x0d,0x9d,0xc2,0xb6,0xe1,0x07,0x73,0x56,0x48,0x1a,0x77,0x31,0x82,0xd4,0x4d,0xe1,0x24,0xc5,0xb0,0x32,0xb6,0xa4,0x2b,0x1a,0x54,0x51,0xb3,0xed,0xf3,0x5a,0x2b,0x28,0x48,0x60,0xd1,0xa3,0xeb,0x36,0x73,0x7a,0xd2,0x79,0xc0,0x4f
db 0x7f,0x2f,0xbf,0x89,0xb0,0x38,0xc9,0x51,0xa7,0xe9,0xdf,0x02,0x65,0xbd,0x97,0x24,0x53,0xe4,0x80,0x78,0x9c,0xc0,0xff,0xff,0x92,0x8e,0xf9,0xca,0xce,0x67,0x45,0x12,0x0d,0xc5,0x86,0x0c,0x44,0x8b,0x34,0xdc,0x51,0xe6,0x94,0xcc,0xc9,0xcb,0x37,0x13,0xb9,0x3c,0x3e,0x64,0x4d,0xf7,0x22,0x64,0x08,0xcd,0xe3,0xba,0xc2,0x70,0x11,0x24,0xb4,0x73,0xc4,0x0a,0x86,0xab,0xf9,0x3f,0x35,0xe4,0x13,0x01,0xee,0x1d,0x91,0xf0,0xaf,0xc4,0xc6,0xeb,0x60,0x50,0xe7,0x4a,0x0d,0x00,0x87,0x6c,0x96,0x12,0x86,0x3f
db 0xde,0x0d,0x2a,0x78,0xc9,0x0c,0x9a,0x55,0x85,0x83,0x71,0xea,0xb2,0xcd,0x1d,0x55,0x8c,0x23,0xef,0x31,0x5b,0x86,0x62,0x7f,0x3d,0x61,0x73,0x79,0x76,0xa7,0x4a,0x50,0x13,0x8d,0x04,0x36,0xfa,0xfc,0x18,0x9c,0xdd,0x9d,0x89,0x73,0xb3,0x9d,0x15,0x29,0xaa,0xd0,0x92,0x9f,0x0b,0x35,0x9f,0xdc,0xd4,0x19,0x8a,0x87,0xee,0x7e,0xf5,0x26,0xb1,0xef,0x87,0x56,0xd5,0x2c,0xab,0x0c,0x7b,0xf1,0x7a,0x24,0x62,0xd1,0x80,0x51,0x67,0x24,0x5a,0x4f,0x34,0x5a,0xc1,0x85,0x69,0x30,0xba,0x9d,0x3d,0x94,0x41,0x40
db 0x96,0xcc,0xeb,0x43,0xba,0xee,0xc0,0xc3,0xaf,0x9c,0xea,0x26,0x9c,0x9c,0x74,0x8d,0xc6,0xcc,0x77,0x1c,0xee,0x95,0xfa,0xd9,0x0f,0x34,0x84,0x76,0xd9,0xa1,0x20,0x14,0xdd,0xaa,0x6c,0xa2,0x43,0x77,0x21,0x4b,0xce,0xb7,0x8a,0x64,0x24,0xb4,0xa6,0x47,0xe3,0xc9,0xfb,0x03,0x7a,0x4f,0x1d,0xcb,0x19,0xd0,0x00,0x98,0x42,0x31,0xd9,0x12,0x4f,0x59,0x37,0xd3,0x99,0x77,0xc6,0x00,0x7b,0xa4,0x3a,0xb2,0x40,0x51,0x3c,0x5e,0x95,0xf3,0x5f,0xe3,0x54,0x28,0x18,0x44,0x12,0xa0,0x59,0x43,0x31,0x92,0x4f,0x1b
db 0x51,0x09,0x15,0x89,0x9d,0x10,0x5c,0x3e,0x6a,0x69,0xe9,0x2d,0x91,0xfa,0xce,0x39,0x20,0x30,0x5f,0x97,0x3f,0xe4,0xea,0x20,0xae,0x2d,0x13,0x7f,0x2a,0x57,0x9b,0x23,0xb1,0x66,0x98,0xa4,0x30,0x30,0xcf,0x33,0x59,0x48,0x5f,0x21,0xd2,0x73,0x1f,0x25,0xf6,0xf4,0xde,0x51,0x40,0xaa,0x82,0xab,0xf6,0x23,0x9a,0x6f,0xd5,0x91,0xf1,0x5f,0x68,0x90,0x2d,0xac,0x33,0xd4,0x9e,0x81,0x23,0x85,0xc9,0x5f,0x79,0xab,0x83,0x28,0x3d,0xeb,0x93,0x55,0x80,0x72,0x45,0xef,0xcb,0x36,0x8f,0x75,0x6a,0x52,0x0c,0x02
db 0xbc,0xdb,0xd8,0x9e,0xf8,0x34,0x98,0x77,0x6c,0xa4,0x7c,0xdc,0xf9,0xaa,0xf2,0xc8,0x74,0xb0,0xe1,0xa3,0xdc,0x4c,0x52,0xa9,0x77,0x38,0x31,0x15,0x46,0xcc,0xaa,0x02,0x89,0xcc,0x42,0xf0,0x59,0xef,0x31,0xe9,0xb6,0x4b,0x12,0x8e,0x9d,0x9c,0x58,0x2c,0x97,0x59,0xc7,0xae,0x8a,0xe1,0xc8,0xad,0x0c,0xc5,0x02,0x56,0x0a,0xfe,0x2c,0x45,0xdf,0x77,0x78,0x64,0xa0,0xf7,0xa0,0x86,0x9f,0x7c,0x60,0x0e,0x27,0x64,0xc4,0xbb,0xc9,0x11,0xfb,0xf1,0x25,0xea,0x17,0xab,0x7b,0x87,0x4b,0x30,0x7b,0x7d,0xfb,0x4c
db 0xfe,0x75,0x9b,0xb8,0x6c,0x3d,0xb4,0x72,0x80,0xdc,0x6a,0x9c,0xd9,0x94,0xc6,0x54,0x9f,0x4c,0xe3,0x3e,0x37,0xaa,0xc3,0xb8,0x64,0x53,0x07,0x39,0x2b,0x62,0xb4,0x14,0x12,0xef,0x89,0x97,0xc2,0x99,0x86,0xe2,0x0d,0x19,0x57,0xdf,0x71,0xcd,0x6e,0x2b,0xd0,0x70,0xc9,0xec,0x57,0xc8,0x43,0xc3,0xc5,0x3a,0x4d,0x43,0xbc,0x4c,0x1d,0x5b,0x26,0x9f,0x0a,0xcc,0x15,0x26,0xfb,0xb6,0xe5,0xcc,0x8d,0xb8,0x2b,0x0e,0x4f,0x3a,0x05,0xa7,0x69,0x33,0x8b,0x49,0x01,0x13,0xd1,0x2d,0x59,0x58,0x12,0xf7,0x98,0x2f
db 0x56,0x9e,0x0f,0xb5,0x4c,0xa7,0x94,0x0c,0x20,0x13,0x8e,0x8e,0xa9,0xf4,0x1f,0x5b,0x67,0x0f,0x30,0x82,0x21,0xcc,0x2a,0x9a,0xf9,0xaa,0x06,0xd8,0x49,0xe2,0x6a,0x3a,0x01,0xa7,0x54,0x4f,0x44,0xae,0x12,0x2e,0xde,0xd7,0xcb,0xa9,0xf0,0x3e,0xfe,0xfc,0xe0,0x5d,0x83,0x75,0x0d,0x89,0xbf,0xce,0x54,0x45,0x61,0xe7,0xe9,0x62,0x80,0x1d,0x5a,0x7c,0x90,0xa9,0x85,0xda,0x7a,0x65,0x62,0x0f,0xb9,0x91,0xb5,0xa8,0x0e,0x1a,0xe9,0xb4,0x34,0xdf,0xfb,0x1d,0x0e,0x8d,0xf3,0x5f,0xf2,0xae,0xe8,0x8c,0x8b,0x29
db 0xb2,0x0c,0xf7,0xef,0x53,0x79,0x92,0x2a,0x76,0x70,0x15,0x79,0x2a,0xc9,0x89,0x4b,0x6a,0xcf,0xa7,0x30,0x7a,0x45,0x18,0x94,0x85,0xe4,0x5c,0x4d,0x40,0xa8,0xb8,0x34,0xde,0x65,0x21,0x0a,0xea,0x72,0x7a,0x83,0xf6,0x79,0xcf,0x0b,0xb4,0x07,0xab,0x3f,0x70,0xae,0x38,0x77,0xc7,0x36,0x16,0x52,0xdc,0xd7,0xa7,0x03,0x18,0x27,0xa6,0x6b,0x35,0x33,0x69,0x83,0xb5,0xec,0x6e,0xc2,0xfd,0xfe,0xb5,0x63,0xdf,0x13,0xa8,0xd5,0x73,0x25,0xb2,0xa4,0x9a,0xaa,0x93,0xa2,0x6a,0x1c,0x5e,0x46,0xdd,0x2b,0xd6,0x71
db 0x80,0xdf,0x78,0xd3,0x28,0xcc,0x33,0x65,0xb4,0xa4,0x0f,0x0a,0x79,0x43,0xdb,0xf6,0x5a,0xda,0x01,0xf7,0xf9,0x5f,0x64,0xe3,0xa4,0x2b,0x17,0xf3,0x17,0xf3,0xd5,0x74,0xf5,0x5e,0xf7,0xb1,0xda,0xb5,0x2d,0xcd,0xf5,0x65,0xb0,0x16,0xcf,0x95,0x7f,0xd7,0x85,0xf0,0x49,0x3f,0xea,0x1f,0x57,0x14,0x3d,0x2b,0x2b,0x26,0x21,0x36,0x33,0x1c,0x81,0xca,0xd9,0x67,0x54,0xe5,0x6f,0xa8,0x37,0x8c,0x29,0x2b,0x75,0x7c,0x8b,0x39,0x3b,0x62,0xac,0xe3,0x92,0x08,0x6d,0xda,0x8c,0xd9,0xe9,0x47,0x45,0xcc,0xeb,0x4a
db 0xc9,0x01,0x6d,0x27,0x1b,0x07,0xf0,0x12,0x70,0x8c,0xc4,0x86,0xc5,0xba,0xb8,0xe7,0xa9,0xfb,0xd6,0x71,0x9b,0x12,0x08,0x53,0x92,0xb7,0x3d,0x5a,0xf9,0xfb,0x88,0x5d,0x10,0xb6,0x54,0x73,0x9e,0x8d,0x40,0x0b,0x6e,0x5b,0xa8,0x5b,0x53,0x32,0x6b,0x80,0x07,0xa2,0x58,0x4a,0x03,0x3a,0xe6,0xdb,0x2c,0xdf,0xa1,0xc9,0xdd,0xd9,0x3b,0x17,0xdf,0x72,0x58,0xfe,0x1e,0x0f,0x50,0x2b,0xc1,0x18,0x39,0xd4,0x2e,0x58,0xd6,0x58,0xe0,0x3a,0x67,0xc9,0x8e,0x27,0xed,0xe6,0x19,0xa3,0x9e,0xb1,0x13,0xcd,0xe1,0x06
db 0x23,0x6f,0x16,0x6f,0x51,0xad,0xd0,0x40,0xbe,0x6a,0xab,0x1f,0x93,0x32,0x8e,0x11,0x8e,0x08,0x4d,0xa0,0x14,0x5e,0xe3,0x3f,0x66,0x62,0xe1,0x26,0x35,0x60,0x80,0x30,0x53,0x03,0x5b,0x9e,0x62,0xaf,0x2b,0x47,0x47,0x04,0x8d,0x27,0x90,0x0b,0xaa,0x3b,0x27,0xbf,0x43,0x96,0x46,0x5f,0x78,0x0c,0x13,0x7b,0x83,0x8d,0x1a,0x6a,0x3a,0x7f,0x0b,0x80,0x3d,0x5d,0x39,0x44,0xe6,0xf7,0xf6,0xed,0x01,0xc9,0x55,0xd5,0xa8,0x95,0x39,0x63,0x2c,0x59,0x30,0x78,0xcd,0x68,0x7e,0x30,0x51,0x2e,0xed,0xfd,0xd0,0x30
db 0xb3,0x33,0x12,0xf2,0x1a,0x4d,0x59,0xe0,0x9c,0x4d,0xcc,0xf0,0x8e,0xe7,0xdb,0x1b,0x77,0x9a,0x49,0x8f,0x7f,0x18,0x65,0x69,0x68,0x98,0x09,0x2c,0x20,0x14,0x92,0x0a,0x50,0x47,0xb8,0x68,0x1e,0x97,0xb4,0x9c,0xcf,0xbb,0x64,0x66,0x29,0x72,0x95,0xa0,0x2b,0x41,0xfa,0x72,0x26,0xe7,0x8d,0x5c,0xd9,0x89,0xc5,0x51,0x43,0x08,0x15,0x46,0x2e,0xa0,0xb9,0xae,0xc0,0x19,0x90,0xbc,0xae,0x4c,0x03,0x16,0x0d,0x11,0xc7,0x55,0xec,0x32,0x99,0x65,0x01,0xf5,0x6d,0x0e,0xfe,0x5d,0xca,0x95,0x28,0x0d,0xca,0x3b
db 0xa4,0x62,0x5d,0x3c,0xbc,0x31,0xf0,0x40,0x60,0x7a,0xf0,0xcf,0x3e,0x8b,0xfc,0x19,0x45,0xb5,0x0f,0x13,0xa2,0x3d,0x18,0x98,0xcd,0x13,0x8f,0xae,0xdd,0xde,0x31,0x56,0xbf,0x01,0xcc,0x9e,0xb6,0x8e,0x68,0x9c,0x6f,0x89,0x44,0xa6,0xad,0x83,0xbc,0xf0,0xe2,0x9f,0x7a,0x5f,0x5f,0x95,0x2d,0xca,0x41,0x82,0xf2,0x8d,0x03,0xb4,0xa8,0x4e,0x02,0xd2,0xca,0xf1,0x0a,0x46,0xed,0x2a,0x83,0xee,0x8c,0xa4,0x05,0x53,0x30,0x46,0x5f,0x1a,0xf1,0x49,0x45,0x77,0x21,0x91,0x63,0xa4,0x2c,0x54,0x30,0x09,0xce,0x24
db 0x06,0xc1,0x06,0xfd,0xf5,0x90,0xe8,0x1f,0xf2,0x10,0x88,0x5d,0x35,0x68,0xc4,0xb5,0x3e,0xaf,0x8c,0x6e,0xfe,0x08,0x78,0x82,0x4b,0xd7,0x06,0x8a,0xc2,0xe3,0xd4,0x41,0x85,0x0b,0xf3,0xfd,0x55,0xa1,0xcf,0x3f,0xa4,0x2e,0x37,0x36,0x8e,0x16,0xf7,0xd2,0x44,0xf8,0x92,0x64,0xde,0x64,0xe0,0xb2,0x80,0x42,0x4f,0x32,0xa7,0x28,0x99,0x54,0x2e,0x1a,0xee,0x63,0xa7,0x32,0x6e,0xf2,0xea,0xfd,0x5f,0xd2,0xb7,0xe4,0x91,0xae,0x69,0x4d,0x7f,0xd1,0x3b,0xd3,0x3b,0xbc,0x6a,0xff,0xdc,0xc0,0xde,0x66,0x1b,0x49
db 0xa7,0x32,0xea,0xc7,0x3d,0xb1,0xf5,0x98,0x98,0xdb,0x16,0x7e,0xcc,0xf8,0xd5,0xe3,0x47,0xd9,0xf8,0xcb,0x52,0xbf,0x0a,0xac,0xac,0xe4,0x5e,0xc8,0xd0,0x38,0xf3,0x08,0xa1,0x64,0xda,0xd0,0x8e,0x4a,0xf0,0x75,0x4b,0x28,0xe2,0x67,0xaf,0x2c,0x22,0xed,0xa4,0x7b,0x7b,0x1f,0x79,0xa3,0x34,0x82,0x67,0x8b,0x01,0xb7,0xb0,0xb8,0xf6,0x4c,0xbd,0x73,0x1a,0x99,0x21,0xa8,0x83,0xc3,0x7a,0x0c,0x32,0xdf,0x01,0xbc,0x27,0xab,0x63,0x70,0x77,0x84,0x1b,0x33,0x3d,0xc1,0x99,0x8a,0x07,0xeb,0x82,0x4a,0x0d,0x53
db 0x25,0x48,0xf9,0xe1,0x30,0x36,0x4c,0x00,0x5a,0x53,0xab,0x8c,0x26,0x78,0x2d,0x7e,0x8b,0xff,0x84,0xcc,0x23,0x23,0x48,0xc7,0xb9,0x70,0x17,0x10,0x3f,0x75,0xea,0x65,0x9e,0xbf,0x9a,0x6c,0x45,0x73,0x69,0x6d,0x80,0xa8,0x00,0x49,0xfc,0xb2,0x7f,0x25,0x50,0xb8,0xcf,0xc8,0x12,0xf4,0xac,0x2b,0x5b,0xbd,0xbf,0x0c,0xe0,0xe7,0xb3,0x0d,0x63,0x63,0x09,0xe2,0x3e,0xfc,0x66,0x3d,0x6b,0xcb,0xb5,0x61,0x7f,0x2c,0xd6,0x81,0x1a,0x3b,0x44,0x13,0x42,0x04,0xbe,0x0f,0xdb,0xa1,0xe1,0x21,0x19,0xec,0xa4,0x02
db 0xa2,0xb8,0x24,0x3b,0x9a,0x25,0xe6,0x5c,0xb8,0xa0,0xaf,0x45,0xcc,0x7a,0x57,0xb8,0x37,0x70,0xa0,0x8b,0xe8,0xe6,0xcb,0xcc,0xbf,0x09,0x78,0x12,0x51,0x3c,0x14,0x3d,0x5f,0x79,0xcf,0xf1,0x62,0x61,0xc8,0xf5,0xf2,0x57,0xee,0x26,0x19,0x86,0x8c,0x11,0x78,0x35,0x06,0x1c,0x85,0x24,0x21,0x17,0xcf,0x7f,0x06,0xec,0x5d,0x2b,0xd1,0x36,0x57,0x45,0x15,0x79,0x91,0x27,0x6d,0x12,0x0a,0x3a,0x78,0xfc,0x5c,0x8f,0xe4,0xd5,0xac,0x9b,0x17,0xdf,0xe8,0xb6,0xbd,0x36,0x59,0x28,0xa8,0x5b,0x88,0x17,0xf5,0x2e
db 0xdc,0xae,0x58,0x8c,0x4e,0x97,0x37,0x46,0xa4,0x41,0xf0,0xab,0xfb,0x22,0xef,0xb9,0x8a,0x71,0x80,0xe9,0x56,0xd9,0x85,0xe1,0xa6,0xa8,0x43,0xb1,0xfa,0x78,0x1b,0x2f,0x51,0x2f,0x5b,0x30,0xfb,0xbf,0xee,0x96,0xb8,0x96,0x95,0x88,0xad,0x38,0xf9,0xd3,0x25,0xdd,0xd5,0x46,0xc7,0x2d,0xf5,0xf0,0x95,0x00,0x3a,0xbb,0x90,0x82,0x96,0x57,0x01,0xe1,0x20,0x0a,0x43,0xb8,0x1a,0xf7,0x47,0xec,0xf0,0x24,0x8d,0x65,0x93,0xf3,0xd1,0xee,0xe2,0x6e,0xa8,0x09,0x75,0xcf,0xe1,0xa3,0x2a,0xdc,0x35,0x3e,0xc4,0x7d
db 0xc3,0xd9,0x7d,0x88,0x65,0x66,0x96,0x85,0x55,0x53,0xb0,0x4b,0x31,0x9b,0x0f,0xc9,0xb1,0x79,0x20,0xef,0xf8,0x8d,0xe0,0xc6,0x2f,0xc1,0x8c,0x75,0x16,0x20,0xf7,0x7e,0x18,0x97,0x3e,0x27,0x5c,0x2a,0x78,0x5a,0x94,0xfd,0x4e,0x5e,0x99,0xc6,0x76,0x35,0x3e,0x7d,0x23,0x1f,0x05,0xd8,0x2e,0x0f,0x99,0x0a,0xd5,0x82,0x1d,0xb8,0x4f,0x04,0xd9,0xe3,0x07,0xa9,0xc5,0x18,0xdf,0xc1,0x59,0x63,0x4c,0xce,0x1d,0x37,0xb3,0x57,0x49,0xbb,0x01,0xb2,0x34,0x45,0x70,0xca,0x2e,0xdd,0x30,0x9c,0x3f,0x82,0x79,0x7f
db 0xe8,0x13,0xb5,0xa3,0x39,0xd2,0x34,0x83,0xd8,0xa8,0x1f,0xb9,0xd4,0x70,0x36,0xc1,0x33,0xbd,0x90,0xf5,0x36,0x41,0xb5,0x12,0xb4,0xd9,0x84,0xd7,0x73,0x03,0x4e,0x0a,0xba,0x87,0xf5,0x68,0xf0,0x1f,0x9c,0x6a,0xde,0xc8,0x50,0x00,0x4e,0x89,0x27,0x08,0xe7,0x5b,0xed,0x7d,0x55,0x99,0xbf,0x3c,0xf0,0xd6,0x06,0x1c,0x43,0xb0,0xa9,0x64,0x19,0x29,0x7d,0x5b,0xa1,0xd6,0xb3,0x2e,0x35,0x82,0x3a,0xd5,0xa0,0xf6,0xb4,0xb0,0x47,0x5d,0xa4,0x89,0x43,0xce,0x56,0x71,0x6c,0x34,0x18,0xce,0x0a,0x7d,0x1a,0x07
db 0x0b,0xba,0x87,0xc8,0xaa,0x2d,0x07,0xd3,0xee,0x62,0xa5,0xbf,0x05,0x29,0x26,0x01,0x8b,0x76,0xef,0xc0,0x02,0x30,0x54,0xcf,0x9c,0x7e,0xea,0x46,0x71,0xcc,0x3b,0x2c,0x31,0x44,0xe1,0x20,0x52,0x35,0x0c,0xcc,0x41,0x51,0xb1,0x09,0x07,0x95,0x65,0x0d,0x36,0x5f,0x9d,0x20,0x1b,0x62,0xf5,0x9a,0xd3,0x55,0x77,0x61,0xf7,0xbc,0x69,0x7c,0x5f,0x29,0xe8,0x04,0xeb,0xd7,0xf0,0x07,0x7d,0xf3,0x50,0x2f,0x25,0x18,0xdb,0x10,0xd7,0x98,0x17,0x17,0xa3,0xa9,0x51,0xe9,0x1d,0xa5,0xac,0x22,0x73,0x9a,0x5a,0x6f
db 0xc5,0xc6,0x41,0x2f,0x0c,0x00,0xa1,0x8b,0x9b,0xfb,0xfe,0x0c,0xc1,0x79,0x9f,0xc4,0x9f,0x1c,0xc5,0x3c,0x70,0x47,0xfa,0x4e,0xca,0xaf,0x47,0xe1,0xa2,0x21,0x4e,0x49,0xbe,0x44,0xd9,0xa3,0xeb,0xd4,0x29,0xe7,0x9e,0xaf,0x78,0x80,0x40,0x09,0x9e,0x8d,0x03,0x9c,0x86,0x47,0x7a,0x56,0x25,0x45,0x24,0x3b,0x8d,0xee,0x80,0x96,0xab,0x02,0x9a,0x0d,0xe5,0xdd,0x85,0x8a,0xa4,0xef,0x49,0xa2,0xb9,0x0f,0x4e,0x22,0x9a,0x21,0xd9,0xf6,0x1e,0xd9,0x1d,0x1f,0x09,0xfa,0x34,0xbb,0x46,0xea,0xcb,0x76,0x5d,0x6b
db 0x94,0xd9,0x0c,0xec,0x6c,0x55,0x57,0x88,0xba,0x1d,0xd0,0x5c,0x6f,0xdc,0x72,0x64,0x77,0xb4,0x42,0x8f,0x14,0x69,0x01,0xaf,0x54,0x73,0x27,0x85,0xf6,0x33,0xe3,0x0a,0x22,0x25,0x78,0x1e,0x17,0x41,0xf9,0xe0,0xd3,0x36,0x69,0x03,0x74,0xae,0xe6,0xf1,0x46,0xc7,0xfc,0xd0,0xa2,0x3e,0x8b,0x40,0x3e,0x31,0xdd,0x03,0x9c,0x86,0xfb,0x16,0x62,0x09,0xb6,0x33,0x97,0x19,0x8e,0x28,0x33,0xe1,0xab,0xd8,0xb4,0x72,0xfc,0x24,0x3e,0xd0,0x91,0x09,0xed,0xf7,0x11,0x48,0x75,0xd0,0x70,0x8f,0x8b,0xe3,0x81,0x3f
db 0xfe,0xaf,0xd9,0x7e,0xcc,0x0f,0x91,0x7f,0x4b,0x87,0x65,0x24,0xa1,0xb8,0x5c,0x54,0x04,0x47,0x0c,0x4b,0xd2,0x7e,0x39,0xa8,0x93,0x09,0xf5,0x04,0xc1,0x0f,0x51,0x50,0x24,0xc8,0x17,0x5f,0x35,0x7f,0xdb,0x0a,0xa4,0x99,0x42,0xd7,0xc3,0x23,0xb9,0x74,0xf7,0xea,0xf8,0xcb,0x8b,0x3e,0x7c,0xd5,0x3d,0xdc,0xde,0x4c,0xd3,0xe2,0xd3,0x0a,0x9d,0x24,0x6e,0x33,0xc5,0x0f,0x0c,0x6f,0xd9,0xcf,0x31,0xc3,0x19,0xde,0x5e,0x74,0x1c,0xfe,0xee,0x09,0x00,0xfd,0xd6,0xf2,0xbe,0x1e,0xfa,0xf0,0x8b,0x15,0x7c,0x12
db 0xa2,0x79,0x98,0x2e,0x42,0x7c,0x19,0xf6,0x47,0x36,0xca,0x52,0xd4,0xdd,0x4a,0xa4,0xcb,0xac,0x4e,0x4b,0xc1,0x3f,0x41,0x9b,0x68,0x4f,0xef,0x07,0x7d,0xf8,0x4e,0x35,0x74,0xb9,0x51,0xae,0xc4,0x8f,0xa2,0xde,0x96,0xfe,0x4d,0x74,0xd3,0x73,0x99,0x1d,0xa8,0x48,0x38,0x87,0x0b,0x68,0x40,0x62,0x95,0xdf,0x67,0xd1,0x79,0x24,0xd8,0x4e,0x75,0xd9,0xc5,0x60,0x22,0xb5,0xe3,0xfe,0xb8,0xb0,0x41,0xeb,0xfc,0x2e,0x35,0x50,0x3c,0x65,0xf6,0xa9,0x30,0xac,0x08,0x88,0x6d,0x23,0x39,0x05,0xd2,0x92,0x2d,0x30
db 0x3d,0x28,0xa4,0xbc,0xa2,0xc1,0x13,0x78,0xd9,0x3d,0x86,0xa1,0x91,0xf0,0x62,0xed,0x86,0xfa,0x68,0xc2,0xb8,0xbc,0xc7,0xae,0x4c,0xae,0x1c,0x6f,0xb7,0xd3,0xe5,0x10,0x77,0xf1,0xe0,0xe4,0xb6,0x6f,0xbc,0x2d,0x93,0x6a,0xbd,0xa4,0x29,0xbf,0xe1,0x04,0xe8,0xf6,0x7a,0x78,0xd4,0x66,0x19,0x5e,0x60,0xd0,0x26,0xb4,0x5e,0x5f,0xdc,0x0e,0x67,0x8e,0xda,0x53,0xd6,0xbf,0x53,0x54,0x41,0xf6,0xa9,0x24,0xec,0x1e,0xdc,0xe9,0x23,0x8a,0x57,0x03,0x3b,0x26,0x87,0xbf,0x72,0xba,0x1c,0x36,0x51,0x6c,0xb4,0x45
db 0xa1,0x7f,0x4f,0x31,0xbf,0x2a,0x40,0xa9,0x50,0xf4,0x8c,0x8e,0xdc,0xf1,0x57,0xe2,0x84,0xbe,0xa8,0x23,0x4b,0xd5,0xbb,0x1d,0x3b,0x71,0xcb,0x6d,0xa3,0xbf,0x77,0x21,0xe4,0xe3,0x7f,0x8a,0xdd,0x4d,0x9d,0xce,0x30,0x0e,0x62,0x76,0x56,0x64,0x13,0xab,0x58,0x99,0x0e,0xb3,0x7b,0x4f,0x59,0x4b,0xdf,0x29,0x12,0x32,0xef,0x0a,0x1c,0x5c,0x8f,0xdb,0x79,0xfa,0xbc,0x1b,0x08,0x37,0xb3,0x59,0x5f,0xc2,0x1e,0x81,0x48,0x60,0x87,0x24,0x83,0x9c,0x65,0x76,0x7a,0x08,0xbb,0xb5,0x8a,0x7d,0x38,0x19,0xe6,0x4a
db 0x2e,0xa3,0x44,0x53,0xaa,0xf6,0xdb,0x8d,0x78,0x40,0x1b,0xb4,0xb4,0xea,0x88,0x7d,0x60,0x0d,0x13,0x4a,0x97,0xeb,0xb0,0x5e,0x03,0x3e,0xbf,0x17,0x1b,0xd9,0x00,0x1a,0x83,0xfb,0x5b,0x98,0x44,0x7e,0x11,0x61,0x36,0x31,0x96,0x71,0x2a,0x46,0xe0,0xfc,0x4b,0x90,0x25,0xd4,0x48,0x34,0xac,0x83,0x64,0x3d,0xa4,0x5b,0xbe,0x5a,0x68,0x75,0xb2,0xf2,0x61,0xeb,0x33,0x09,0x96,0x6e,0x52,0x49,0xff,0xc9,0xa8,0x0f,0x3d,0x54,0x69,0x65,0xf6,0x7a,0x10,0x75,0x72,0xdf,0xaa,0xe6,0xb0,0x23,0xb6,0x29,0x55,0x13
db 0x18,0xd5,0xd1,0xad,0xd7,0xdb,0xf0,0x18,0x11,0x1f,0xc1,0xcf,0x88,0x78,0x9f,0x97,0x9b,0x75,0x14,0x71,0xf0,0xe1,0x32,0x87,0x01,0x3a,0xca,0x65,0x1a,0xb8,0xb5,0x79,0xfe,0x83,0x2e,0xe2,0xbc,0x16,0xc7,0xf5,0xc1,0x85,0x09,0xe8,0x19,0xeb,0x2b,0xb4,0xae,0x4a,0x25,0x14,0x37,0xa6,0x9d,0xec,0x13,0xa6,0x90,0x15,0x05,0xea,0x72,0x59,0x11,0x78,0x8f,0xdc,0x20,0xac,0xd4,0x0f,0xa8,0x4f,0x4d,0xac,0x94,0xd2,0x9a,0x9a,0x34,0x04,0x36,0xb3,0x64,0x2d,0x1b,0xc0,0xdb,0x3b,0x5f,0x90,0x95,0x9c,0x7e,0x4f
db 0x2e,0x30,0x81,0x57,0xbc,0x4b,0x67,0x62,0x0f,0xdc,0xad,0x89,0x39,0x0f,0x52,0xd8,0xc6,0xd9,0xfb,0x53,0xae,0x99,0x29,0x8c,0x4c,0x8e,0x63,0x2e,0xd9,0x3a,0x99,0x31,0xfe,0x99,0x52,0x35,0x3d,0x44,0xc8,0x71,0xd7,0xea,0xeb,0xdb,0x1c,0x3b,0xcd,0x8b,0x66,0x94,0xa4,0xf1,0x9e,0x49,0x92,0x80,0xc8,0xad,0x44,0xa1,0xc4,0xee,0x42,0x19,0x92,0x49,0x23,0xae,0x19,0x53,0xac,0x7d,0x92,0x3e,0xea,0x0c,0x91,0x3d,0x1b,0x2c,0x22,0x11,0x3c,0x25,0x94,0xe4,0x3c,0x55,0x75,0xca,0xf9,0x4e,0x31,0x65,0x0a,0x2a
db 0xc2,0x27,0xf9,0xf7,0x7f,0x93,0xb7,0x2d,0x35,0xa6,0xd0,0x17,0x06,0x1f,0x74,0xdb,0x76,0xaf,0x55,0x11,0xa2,0xf3,0x82,0x59,0xed,0x2d,0x7c,0x64,0x18,0xe2,0xf6,0x4c,0x3a,0x79,0x1c,0x3c,0xcd,0x1a,0x36,0xcf,0x3b,0xbc,0x35,0x5a,0xac,0xbc,0x9e,0x2f,0xab,0xa6,0xcd,0xa8,0xe9,0x60,0xe8,0x60,0x13,0x1a,0xea,0x6d,0x9b,0xc3,0x5d,0x05,0xb6,0x5b,0x8d,0xc2,0x7c,0x22,0x19,0xb1,0xab,0xff,0x4d,0x77,0xbc,0x4e,0xe2,0x07,0x89,0x2c,0xa3,0xe4,0xce,0x78,0x3c,0xa8,0xb6,0x24,0xaa,0x10,0x77,0x30,0x1a,0x12
db 0x97,0x4a,0x03,0x9f,0x5e,0x5d,0xdb,0xe4,0x2d,0xbc,0x34,0x30,0x09,0xfc,0x53,0xe1,0xb1,0xd3,0x51,0x95,0x91,0x46,0x05,0x46,0x2d,0xe5,0x40,0x7a,0x6c,0xc7,0x3f,0x33,0xc9,0x83,0x74,0xc7,0x3e,0x71,0x59,0xd6,0xaf,0x96,0x2b,0xb8,0x77,0xe0,0xbf,0x88,0xd3,0xbc,0x97,0x10,0x23,0x28,0x9e,0x28,0x9b,0x3a,0xed,0x6c,0x4a,0xb9,0x7b,0x52,0x2e,0x48,0x5b,0x99,0x2a,0x99,0x3d,0x56,0x01,0x38,0x38,0x6e,0x7c,0xd0,0x05,0x34,0xe5,0xd8,0x64,0x2f,0xde,0x35,0x50,0x48,0xf7,0xa9,0xa7,0x20,0x9b,0x06,0x89,0x6b
db 0x0d,0x22,0x70,0x62,0x41,0xa0,0x2a,0x81,0x4e,0x5b,0x24,0xf9,0xfa,0x89,0x5a,0x99,0x05,0xef,0x72,0x50,0xce,0xc4,0xad,0xff,0x73,0xeb,0x73,0xaa,0x03,0x21,0xbc,0x23,0x77,0xdb,0xc7,0xb5,0x8c,0xfa,0x82,0x40,0x55,0xc1,0x34,0xc7,0xf8,0x86,0x86,0x06,0x7e,0xa5,0xe7,0xf6,0xd9,0xc8,0xe6,0x29,0xcf,0x9b,0x63,0xa7,0x08,0xd3,0x73,0x04,0x05,0x9e,0x58,0x03,0x26,0x79,0xee,0xca,0x92,0xc4,0xdc,0x46,0x12,0x42,0x4b,0x2b,0x4f,0xa9,0x01,0xe6,0x74,0xef,0xa1,0x02,0x1a,0x34,0x04,0xde,0xbf,0x73,0x2f,0x10
db 0xc6,0x45,0x57,0x7f,0xab,0xb9,0x18,0xeb,0x90,0xc6,0x87,0x57,0xee,0x8a,0x3a,0x02,0xa9,0xaf,0xf7,0x2d,0xda,0x12,0x27,0xb7,0x3d,0x01,0x5c,0xea,0x25,0x7d,0x59,0x36,0x9a,0x1c,0x51,0xb5,0xe0,0xda,0xb4,0xa2,0x06,0xff,0xff,0x2b,0x29,0x60,0xc8,0x7a,0x34,0x42,0x50,0xf5,0x5d,0x37,0x1f,0x98,0x2d,0xa1,0x4e,0xda,0x25,0xd7,0x6b,0x3f,0xac,0x58,0x60,0x10,0x7b,0x8d,0x4d,0x73,0x5f,0x90,0xc6,0x6f,0x9e,0x57,0x40,0xd9,0x2d,0x93,0x02,0x92,0xf9,0xf8,0x66,0x64,0xd0,0xd6,0x60,0xda,0x19,0xcc,0x7e,0x7b
db 0x0d,0x69,0x5c,0x69,0x3c,0x37,0xc2,0x78,0x6e,0x90,0x42,0x06,0x66,0x2e,0x25,0xdd,0xd2,0x2b,0xe1,0x4a,0x44,0x44,0x1d,0x95,0x56,0x39,0x74,0x01,0x76,0xad,0x35,0x42,0x9b,0xfa,0x7c,0xa7,0x51,0x4a,0xae,0x6d,0x50,0x86,0xa3,0xe7,0x54,0x36,0x26,0x82,0xdb,0x82,0x2d,0x8f,0xcd,0xff,0xbb,0x09,0xba,0xca,0xf5,0x1b,0x66,0xdc,0xbe,0x03,0xf5,0x75,0x89,0x07,0x0d,0xcb,0x58,0x62,0x98,0xf2,0x89,0x91,0x54,0x42,0x29,0x49,0xe4,0x6e,0xe3,0xe2,0x23,0xb4,0xca,0xa0,0xa1,0x66,0xf0,0xcd,0xb0,0xe2,0x7c,0x0e
db 0xa3,0x85,0x8c,0xc4,0x3a,0x64,0x94,0xc4,0xad,0x39,0x61,0x3c,0xf4,0x1d,0x36,0xfd,0x48,0x4d,0xe9,0x3a,0xdd,0x17,0xdb,0x09,0x4a,0x67,0xb4,0x8f,0x5d,0x0a,0x6e,0x66,0xf9,0x70,0x4b,0xd9,0xdf,0xfe,0xa6,0xfe,0x2d,0xba,0xfc,0xc1,0x51,0xc0,0x30,0xf1,0x89,0xab,0x2f,0x7f,0x7e,0xd4,0x82,0x48,0xb5,0xee,0xec,0x8a,0x13,0x56,0x52,0x61,0x0d,0xcb,0x70,0x48,0x4e,0xf6,0xbb,0x2a,0x6b,0x8b,0x45,0xaa,0xf0,0xbc,0x65,0xcd,0x5d,0x98,0xe8,0x75,0xba,0x4e,0xbe,0x9a,0xe4,0xde,0x14,0xd5,0x10,0xc8,0x0b,0x7f
db 0x6f,0x13,0xf4,0x26,0xa4,0x6b,0x00,0xb9,0x35,0x30,0xe0,0x57,0x9e,0x36,0x67,0x8d,0x28,0x3c,0x46,0x4f,0xd9,0xdf,0xc8,0xcb,0xf5,0xdb,0xee,0xf8,0xbc,0x8d,0x1f,0x0d,0xa0,0x13,0x72,0x73,0xad,0x9d,0xac,0x83,0x98,0x2e,0xf7,0x2e,0xba,0xf8,0xf6,0x9f,0x57,0x69,0xec,0x43,0xdd,0x2e,0x1e,0x31,0x75,0xab,0xc5,0xde,0x7d,0x90,0x3a,0x1d,0xdc,0x81,0xd0,0x3e,0x31,0x93,0x16,0xba,0x80,0x34,0x1b,0x85,0xad,0x9f,0x32,0x29,0xcb,0x21,0x03,0x03,0x3c,0x01,0x28,0x01,0xe3,0xfd,0x1b,0xa3,0x44,0x1b,0x01,0x00
db 0x0c,0x6c,0xc6,0x3f,0x6c,0xa0,0xdf,0x3f,0xd2,0x0d,0xd6,0x4d,0x8e,0xe3,0x40,0x5d,0x71,0x4d,0x8e,0x26,0x38,0x8b,0xe3,0x7a,0xe1,0x57,0x83,0x6e,0x91,0x8d,0xc4,0x3a,0x5c,0xa7,0x0a,0x6a,0x69,0x1f,0x56,0x16,0x6a,0xbd,0x52,0x58,0x5c,0x72,0xbf,0xc1,0xad,0x66,0x79,0x9a,0x7f,0xdd,0xa8,0x11,0x26,0x10,0x85,0xd2,0xa2,0x88,0xd9,0x63,0x2e,0x23,0xbd,0xaf,0x53,0x07,0x12,0x00,0x83,0xf6,0xd8,0xfd,0xb8,0xce,0x2b,0xe9,0x91,0x2b,0xe7,0x84,0xb3,0x69,0x16,0xf8,0x66,0xa0,0x68,0x23,0x2b,0xd5,0xfa,0x33
db 0x16,0x1e,0xe4,0xc5,0xc6,0x49,0x06,0x54,0x35,0x77,0x3f,0x33,0x30,0x64,0xf8,0x0a,0x46,0xe7,0x05,0xf3,0xd2,0xfc,0xac,0xb2,0xa7,0xdc,0x56,0xa2,0x29,0xf4,0xc0,0x16,0xe8,0xcf,0x22,0xc4,0xd0,0xc8,0x2c,0x8d,0xcb,0x3a,0xa1,0x05,0x7b,0x4f,0x2b,0x07,0x6f,0xa5,0xf6,0xec,0xe6,0xb6,0xfe,0xa3,0xe2,0x71,0x0a,0xb9,0xcc,0x55,0xc3,0x3c,0x31,0x91,0x3e,0x90,0x43,0x94,0xb6,0xe9,0xce,0x37,0x56,0x7a,0xcb,0x94,0xa4,0xb8,0x44,0x92,0xba,0xba,0xa4,0xd1,0x7c,0xc8,0x68,0x75,0xae,0x6b,0x42,0xaf,0x1e,0x63
db 0x9f,0xfe,0x66,0xda,0x10,0x04,0xe9,0xb3,0xa6,0xe5,0x16,0x6c,0x52,0x4b,0xdd,0x85,0x83,0xbf,0xf9,0x1e,0x61,0x97,0x3d,0xbc,0xb5,0x19,0xa9,0x1e,0x8b,0x64,0x99,0x55,0xe8,0x0d,0x70,0xa3,0xb9,0x75,0xd9,0x47,0x52,0x05,0xf8,0xe2,0xfb,0xc5,0x80,0x72,0xe1,0x5d,0xe4,0x32,0x27,0x8f,0x65,0x53,0xb5,0x80,0x5f,0x66,0x7f,0x2c,0x1f,0x43,0x19,0x7b,0x8f,0x85,0x44,0x63,0x02,0xd6,0x4a,0x51,0xea,0xa1,0x2f,0x35,0xab,0x14,0xd7,0xa9,0x90,0x20,0x1a,0x44,0x00,0x89,0x26,0x3b,0x25,0x91,0x5f,0x71,0x04,0x7b
db 0x43,0xae,0xf6,0xac,0x28,0xbd,0xed,0x83,0xb4,0x7a,0x5c,0x7d,0x8b,0x7c,0x35,0x86,0x44,0x2c,0xeb,0xb7,0x69,0x47,0x40,0xc0,0x3f,0x58,0xf6,0xc2,0xf5,0x7b,0xb3,0x59,0xc6,0xba,0xe6,0xc4,0x80,0xc2,0x76,0xb3,0x0b,0x9b,0x1d,0x6d,0xdd,0xd3,0x0e,0x97,0x44,0xf9,0x0b,0x45,0x58,0x95,0x9a,0xb0,0x23,0xe2,0xcd,0x57,0xfa,0xac,0xd0,0x48,0x71,0xe6,0xab,0x7d,0xe4,0x26,0x0f,0xb6,0x37,0x3a,0x2f,0x62,0x97,0xa1,0xd1,0xf1,0x94,0x03,0x96,0xe9,0x7e,0xce,0x08,0x42,0xdb,0x3b,0x6d,0x33,0x91,0x41,0x23,0x16
db 0xf6,0x7f,0x26,0xf6,0xde,0x99,0xe4,0xb9,0x43,0x08,0x2c,0x74,0x7b,0xca,0x72,0x77,0xb1,0xf2,0xa4,0xe9,0x3f,0x15,0xa0,0x23,0x06,0x50,0xd0,0xd5,0xec,0xdf,0xdf,0x2c,0x40,0x86,0xf3,0x1f,0xd6,0x9c,0x49,0xdd,0xa0,0x25,0x36,0x06,0xc3,0x9b,0xcd,0x29,0xc3,0x3d,0xd7,0x3d,0x02,0xd8,0xe2,0x51,0x31,0x92,0x3b,0x20,0x7a,0x70,0x25,0x4a,0x6a,0xed,0xf6,0x53,0x8a,0x66,0xb7,0x2a,0xa1,0x70,0xd1,0x1d,0x58,0x42,0x42,0x30,0x61,0x01,0xe2,0x3a,0x4c,0x14,0x00,0x40,0xfc,0x49,0x8e,0x24,0x6d,0x89,0x21,0x57
db 0xae,0x1b,0x18,0xfd,0x17,0x55,0x6e,0x0b,0xb4,0x63,0xb9,0x2b,0x9f,0x62,0x22,0x90,0x25,0x46,0x06,0x32,0xe9,0xbc,0x09,0x55,0xda,0x13,0x3c,0xf6,0x74,0xdd,0x8e,0x57,0x4e,0xda,0xd0,0xa1,0x91,0x50,0x5d,0x28,0x08,0x3e,0xfe,0xb5,0xa7,0x6f,0xaa,0x4b,0xb3,0x93,0x93,0xe1,0x7c,0x17,0xe5,0x63,0xfd,0x30,0xb0,0xc4,0xaf,0x35,0xc9,0x03,0x3d,0x0c,0x2b,0x49,0xc6,0x76,0x72,0x99,0xfc,0x05,0xe2,0xdf,0xc4,0xc2,0xcc,0x47,0x3c,0x3a,0x62,0xdd,0x84,0x9b,0xd2,0xdc,0xa2,0xc7,0x88,0x02,0x59,0xab,0xc2,0x3e
db 0xb9,0x7b,0xd8,0xe4,0x7b,0xd2,0xa0,0xa1,0xed,0x1a,0x39,0x61,0xeb,0x4d,0x8b,0xa9,0x83,0x9b,0xcb,0x73,0xd0,0xdd,0xa0,0x99,0xce,0xca,0x0f,0x20,0x5a,0xc2,0xd5,0x2d,0xcb,0xd1,0x32,0xae,0x09,0x3a,0x21,0xa7,0xd5,0xc2,0xf5,0x40,0xdf,0x87,0x2b,0x0f,0x29,0xab,0x1e,0xe8,0xc6,0xa4,0xae,0x0b,0x5e,0xac,0xdb,0x6a,0x6c,0xf6,0x1b,0x0e,0x7e,0x88,0x2c,0x79,0xe9,0xd5,0xab,0xe2,0x5d,0x6d,0x92,0xcb,0x18,0x00,0x02,0x1a,0x1e,0x5f,0xae,0xba,0xcd,0x69,0xba,0xbf,0x5f,0x8f,0xe8,0x5a,0xb3,0x48,0x05,0x73
db 0xee,0xb8,0xa8,0xcb,0xa3,0x51,0x35,0xc4,0x16,0x5f,0x11,0xb2,0x1d,0x6f,0xa2,0x65,0x50,0x38,0x8c,0xab,0x52,0x4f,0x0f,0x76,0xca,0xb8,0x1d,0x41,0x3b,0x44,0x43,0x30,0x34,0xe3,0xd6,0xa1,0x4b,0x09,0x5b,0x80,0x19,0x3f,0x35,0x09,0x77,0xf1,0x3e,0xbf,0x2b,0x70,0x22,0x06,0xcb,0x06,0x3f,0x42,0xdd,0x45,0x78,0xd8,0x77,0x22,0x5a,0x58,0x62,0x89,0xd4,0x33,0x82,0x5f,0x8a,0xa1,0x7f,0x25,0x78,0xec,0xb5,0xc4,0x98,0x66,0xff,0x41,0x3e,0x37,0xa5,0x6f,0x8e,0xa7,0x1f,0x98,0xef,0x50,0x89,0x27,0x56,0x76
db 0xc0,0xc8,0x1f,0xd5,0x59,0xcf,0xc3,0x38,0xf2,0xb6,0x06,0x05,0xfd,0xd2,0xed,0x9b,0x8f,0x0e,0x57,0xab,0x9f,0x10,0xbf,0x26,0xa6,0x46,0xb8,0xc1,0xa8,0x60,0x41,0x3f,0x9d,0xcf,0x86,0xea,0xa3,0x73,0x70,0xe1,0xdc,0x5f,0x15,0x07,0xb7,0xfb,0x8c,0x3a,0x8e,0x8a,0x83,0x31,0xfc,0xe7,0x53,0x48,0x16,0xf6,0x13,0xb6,0x84,0xf4,0xbb,0x28,0x7c,0x6c,0x13,0x6f,0x5c,0x2f,0x61,0xf2,0xbe,0x11,0xdd,0xf6,0x07,0xd1,0xea,0xaf,0x33,0x6f,0xde,0x13,0xd2,0x9a,0x7e,0x52,0x5d,0xf7,0x88,0x81,0x35,0xcb,0x79,0x1e
db 0xf1,0xe3,0xf7,0xee,0xc3,0x36,0x34,0x01,0xf8,0x10,0x9e,0xfe,0x7f,0x6a,0x8b,0x82,0xfc,0xde,0xf9,0xbc,0xe5,0x08,0xf9,0x7f,0x31,0x38,0x3b,0x3a,0x1b,0x95,0xd7,0x65,0x81,0x81,0xe0,0xf5,0xd8,0x53,0xe9,0x77,0xd9,0xde,0x9d,0x29,0x44,0x0c,0xa5,0x84,0xe5,0x25,0x45,0x86,0x0c,0x2d,0x6c,0xdc,0xf4,0xf2,0xd1,0x39,0x2d,0xb5,0x8a,0x47,0x59,0xd1,0x52,0x92,0xd3,0xa4,0xa6,0x66,0x07,0xc8,0x1a,0x87,0xbc,0xe1,0xdd,0xe5,0x6f,0xc9,0xc1,0xa6,0x40,0x6b,0x2c,0xb8,0x14,0x22,0x21,0x1a,0x41,0x7a,0xd8,0x16
db 0x15,0x62,0x06,0x42,0x5a,0x7e,0xbd,0xb3,0xc1,0x24,0x5a,0x0c,0xcd,0xe3,0x9b,0x87,0xb7,0x94,0xf9,0xd6,0xb1,0x5d,0xc0,0x57,0xa6,0x8c,0xf3,0x65,0x81,0x7c,0xf8,0x28,0x83,0x05,0x4e,0xd5,0xe2,0xd5,0xa4,0xfb,0xfa,0x99,0xbd,0x2e,0xd7,0xaf,0x1f,0xe2,0x8f,0x77,0xe9,0x6e,0x73,0xc2,0x7a,0x49,0xde,0x6d,0x5a,0x7a,0x57,0x0b,0x99,0x1f,0xd6,0xf7,0xe8,0x1b,0xad,0x4e,0x34,0xa3,0x8f,0x79,0xea,0xac,0xeb,0x50,0x1e,0x7d,0x52,0xe0,0x0d,0x52,0x9e,0x56,0xc6,0x77,0x3e,0x6d,0x4d,0x53,0xe1,0x2f,0x88,0x45
db 0xd6,0x83,0x79,0x75,0x5d,0x34,0x69,0x66,0xa6,0x11,0xaa,0x17,0x11,0xed,0xb6,0x62,0x8f,0x12,0x5e,0x98,0x57,0x18,0xdd,0x7d,0xdd,0xf6,0x26,0xf6,0xb8,0xe5,0x8f,0x68,0xe4,0x6f,0x3c,0x94,0x29,0x99,0xac,0xd8,0xa2,0x92,0x83,0xa3,0x61,0xf1,0xf9,0xb5,0xf3,0x9a,0xc8,0xbe,0x13,0xdb,0x99,0x26,0x74,0xf0,0x05,0xe4,0x3c,0x84,0xcf,0x7d,0xc0,0x32,0x47,0x4a,0x48,0xd6,0x90,0x6c,0x99,0x32,0x56,0xca,0xfd,0x43,0x21,0xd5,0xe1,0xc6,0x5d,0x91,0xc3,0x28,0xbe,0xb3,0x1b,0x19,0x27,0x73,0x7e,0x68,0x39,0x67
db 0xa6,0x75,0x56,0x38,0x14,0x20,0x78,0xef,0xe8,0xa9,0xfd,0xaa,0x30,0x9f,0x64,0xa2,0xcb,0xa8,0xdf,0x5c,0x50,0xeb,0xd1,0x4c,0xb3,0xc0,0x4d,0x1d,0xba,0x5a,0x11,0x46,0xc0,0x1a,0x0c,0xc8,0x9d,0xcc,0x6d,0xa6,0x36,0xa4,0x38,0x1b,0xf4,0x5c,0xa0,0x97,0xc6,0xd7,0xdb,0x95,0xbe,0xf3,0xeb,0xa7,0xab,0x7d,0x7e,0x8d,0xf6,0xb8,0xa0,0x7d,0x76,0xda,0xb5,0xc3,0x53,0x19,0x0f,0xd4,0x9b,0x9e,0x11,0x21,0x73,0x6f,0xac,0x1d,0x60,0x59,0xb2,0xfe,0x21,0x60,0xcc,0x03,0x4b,0x4b,0x67,0x83,0x7e,0x88,0x5f,0x5a
db 0x11,0x3d,0xa1,0x70,0xcf,0x01,0x63,0x8f,0xc4,0xd0,0x0d,0x35,0x15,0xb8,0xce,0xcf,0x7e,0xa4,0xbc,0xa4,0xd4,0x97,0x02,0xf7,0x34,0x14,0x4d,0xe4,0x56,0xb6,0x69,0x36,0xb9,0x43,0xa6,0xa0,0xd3,0x28,0x96,0x9e,0x64,0x20,0xc3,0xe6,0x00,0xcb,0xc3,0xb5,0x32,0xec,0x2d,0x7c,0x89,0x02,0x53,0x9b,0x0c,0xc7,0xd1,0xd5,0xe2,0x7a,0xe3,0x43,0x33,0xe1,0xa6,0xed,0x06,0x3f,0x7e,0x38,0xc0,0x3a,0xa1,0x99,0x51,0x1d,0x30,0x67,0x11,0x38,0x26,0x36,0xf8,0xd8,0x5a,0xbd,0xbe,0xe9,0xd5,0x4f,0xcd,0xe6,0x21,0x6a
db 0x5f,0xe6,0x46,0x30,0x0a,0x17,0xc6,0xf1,0x24,0x35,0xd2,0x00,0x2a,0x2a,0x71,0x58,0x55,0xb7,0x82,0x8c,0x3c,0xbd,0xdb,0x69,0x57,0xff,0x95,0xa1,0xf1,0xf9,0x6b,0x58,0xe3,0xb2,0x99,0x66,0x12,0x29,0x41,0xef,0x01,0x13,0x8d,0x70,0x47,0x08,0xd3,0x71,0xbd,0xb0,0x82,0x11,0xd0,0x32,0x54,0x32,0x36,0x8b,0x1e,0x00,0x07,0x1b,0x37,0x45,0x0b,0x79,0xf8,0x5e,0x8d,0x08,0xdb,0xa6,0xe5,0x37,0x09,0x61,0xdc,0xf0,0x78,0x52,0xb8,0x6e,0xa1,0x61,0xd2,0x49,0x03,0xac,0x79,0x21,0xe5,0x90,0x37,0xb0,0xaf,0x0e
db 0x2f,0x04,0x48,0x37,0xc1,0x55,0x05,0x96,0x11,0xaa,0x0b,0x82,0xe6,0x41,0x9a,0x21,0x0c,0x6d,0x48,0x73,0x38,0xf7,0x81,0x1c,0x61,0xc6,0x02,0x5a,0x67,0xcc,0x9a,0x30,0x1d,0xae,0x75,0x0f,0x5e,0x80,0x40,0x51,0x30,0xcc,0x62,0x26,0xe3,0xfb,0x02,0xec,0x6d,0x39,0x92,0xea,0x1e,0xdf,0xeb,0x2c,0xb3,0x5b,0x43,0xc5,0x44,0x33,0xae,0x44,0xee,0x43,0xa5,0xbb,0xb9,0x89,0xf2,0x9c,0x42,0x71,0xc9,0x5a,0x9d,0x0e,0x76,0xf3,0xaa,0x60,0x93,0x4f,0xc6,0xe5,0x82,0x1d,0x8f,0x67,0x94,0x7f,0x1b,0x22,0xd5,0x62
db 0x6d,0x93,0xd0,0x18,0x9c,0x29,0x4c,0x52,0x0c,0x1a,0x0c,0x8a,0x6c,0xb5,0x6b,0xc8,0x31,0x86,0x4a,0xdb,0x2e,0x05,0x75,0xa3,0x62,0x45,0x75,0xbc,0xe4,0xfd,0x0e,0x5c,0x3c,0x7a,0xf7,0x3a,0x26,0xd4,0x85,0x75,0x4d,0x14,0xe9,0xfe,0x11,0x7b,0xae,0xdf,0x3d,0x19,0xf7,0x59,0x80,0x70,0x06,0xa5,0x37,0x20,0x92,0x83,0x53,0x9a,0xf2,0x14,0xf5,0xd7,0xb2,0x25,0xdc,0x7e,0x71,0xdf,0x40,0x30,0xb5,0x99,0xdb,0x70,0xf9,0x21,0x62,0x4c,0xed,0xc3,0xb7,0x34,0x92,0xda,0x3e,0x09,0xee,0x7b,0x5c,0x36,0x72,0x5e
db 0x7f,0x21,0x71,0x45,0x07,0xfc,0x5b,0x57,0x5b,0xd9,0x94,0x06,0x5d,0x67,0x79,0x37,0x33,0x1e,0x19,0xf4,0xbb,0x37,0x0a,0x9a,0xbc,0xea,0xb4,0x47,0x4c,0x10,0xf1,0x77,0x3e,0xb3,0x08,0x2f,0x06,0x39,0x93,0x7d,0xbe,0x32,0x9f,0xdf,0xe5,0x59,0x96,0x5b,0xfd,0xbd,0x9e,0x1f,0xad,0x3d,0xff,0xac,0xb7,0x49,0x73,0xcb,0x55,0x05,0xb2,0x70,0x4c,0x2c,0x11,0x55,0xc5,0x13,0x51,0xbe,0xcd,0x1f,0x88,0x9a,0x3a,0x42,0x88,0x66,0x47,0x3b,0x50,0x5e,0x85,0x77,0x66,0x44,0x4a,0x40,0x06,0x4a,0x8f,0x39,0x34,0x0e
db 0xe8,0xbd,0xce,0x3e,0xd9,0x22,0x7d,0xb6,0x07,0x2f,0x82,0x27,0x41,0xe8,0xb3,0x09,0x8d,0x6d,0x5b,0xb0,0x1f,0xa6,0x3f,0x74,0x72,0x23,0x36,0x8a,0x36,0x05,0x54,0x5e,0x28,0x19,0x4b,0x3e,0x09,0x0b,0x93,0x18,0x40,0xf6,0xf3,0x73,0x0e,0xe1,0xe3,0x7d,0x6f,0x5d,0x39,0x73,0xda,0x17,0x32,0xf4,0x3e,0x9c,0x37,0xca,0xd6,0xde,0x8a,0x6f,0x9a,0xb2,0xb7,0xfd,0x3d,0x12,0x40,0xe3,0x91,0xb2,0x1a,0xa2,0xe1,0x97,0x7b,0x48,0x9e,0x94,0xe6,0xfd,0x02,0x7d,0x96,0xf9,0x97,0xde,0xd3,0xc8,0x2e,0xe7,0x0d,0x78
db 0xbc,0xe7,0x9a,0x08,0x45,0x85,0xe2,0x0a,0x06,0x4d,0x7f,0x1c,0xcf,0xde,0x8d,0x38,0xb8,0x11,0x48,0x0a,0x51,0x15,0xac,0x38,0xe4,0x8c,0x92,0x71,0xf6,0x8b,0xb2,0x0e,0x72,0x27,0xf4,0x00,0xf3,0xea,0x1f,0x67,0xaa,0x41,0x8c,0x2a,0x2a,0xeb,0x72,0x8f,0x92,0x32,0x37,0x97,0xd7,0x7f,0xa1,0x29,0xa6,0x87,0xb5,0x32,0xad,0xc6,0xef,0x1d,0xa7,0x95,0x51,0xef,0x1a,0xbe,0x5b,0xaf,0xed,0x15,0x7b,0x91,0x77,0x12,0x8c,0x14,0x2e,0xda,0xe5,0x7a,0xfb,0xf7,0x91,0x29,0x67,0x28,0xdd,0xf8,0x1b,0x20,0x7d,0x46
db 0xad,0x4f,0xef,0x74,0x9a,0x91,0xfe,0x95,0xa2,0x08,0xa3,0xf6,0xec,0x7b,0x82,0x3a,0x01,0x7b,0xa4,0x09,0xd3,0x01,0x4e,0x96,0x97,0xc7,0xa3,0x5b,0x4f,0x3c,0xc4,0x71,0xa9,0xe7,0x7a,0x56,0xbd,0xf4,0x1e,0xbc,0xbd,0x98,0x44,0xd6,0xb2,0x4c,0x62,0x3f,0xc8,0x4e,0x1f,0x2c,0xd2,0x64,0x10,0xe4,0x01,0x40,0x38,0xba,0xa5,0xc5,0xf9,0x2e,0xcd,0x74,0x9e,0xfa,0xf6,0x6d,0xfd,0xb6,0x7a,0x26,0xaf,0xe4,0xbc,0x78,0x82,0xf1,0x0e,0x99,0xef,0xf1,0xd0,0xb3,0x55,0x82,0x93,0xf2,0xc5,0x90,0xa3,0x8c,0x75,0x5a
db 0x95,0x24,0x46,0xd9,0x10,0x27,0xb7,0xa2,0x03,0x50,0x7d,0xd5,0xd2,0xc6,0xa8,0x3a,0xca,0x87,0xb4,0xa0,0xbf,0x00,0xd4,0xe3,0xec,0x72,0xeb,0xb3,0x44,0xe2,0xba,0x2d,0x94,0xdc,0x61,0x1d,0x8b,0x91,0xe0,0x8c,0x66,0x30,0x81,0x9a,0x46,0x36,0xed,0x8d,0xd3,0xaa,0xe8,0xaf,0x29,0xa8,0xe6,0xd4,0x3f,0xd4,0x39,0xf6,0x27,0x80,0x73,0x0a,0xcc,0xe1,0xff,0x57,0x2f,0x4a,0x0f,0x98,0x43,0x98,0x83,0xe1,0x0d,0x0d,0x67,0x00,0xfd,0x15,0xfb,0x49,0x4a,0x3f,0x5c,0x10,0x9c,0xa6,0x26,0x51,0x63,0xca,0x98,0x26
db 0x78,0xba,0xb0,0x32,0x88,0x31,0x65,0xe7,0x8b,0xff,0x5c,0x92,0xf7,0x31,0x18,0x38,0xcc,0x1f,0x29,0xa0,0x91,0x1b,0xa8,0x08,0x07,0xeb,0xca,0x49,0xcc,0x3d,0xb4,0x1f,0x0e,0xd9,0x3d,0x5e,0x2f,0x70,0x3d,0x2e,0x86,0x53,0xd2,0xe4,0x18,0x09,0x3f,0x9e,0x6a,0xa9,0x4d,0x02,0xf6,0x3e,0x77,0x5e,0x32,0x33,0xfa,0x4a,0x0c,0x4b,0x00,0x3c,0x2b,0xb8,0xf4,0x06,0xac,0x46,0xa9,0x9a,0xf3,0xc4,0x06,0xa8,0xa5,0x84,0xa2,0x1c,0x87,0x47,0xcd,0xc6,0x5f,0x26,0xd3,0x3e,0x17,0xd2,0x1f,0xcd,0x01,0xfd,0x43,0x6b
db 0x44,0xc5,0x97,0x46,0x4b,0x5d,0xa7,0xc7,0xbf,0xff,0x0f,0xdf,0x48,0xf8,0xfd,0x15,0x5a,0x78,0x46,0xaa,0xeb,0xb9,0x68,0x28,0x14,0xf7,0x52,0x5b,0x10,0xd7,0x68,0x5a,0xf3,0x0e,0x76,0x3e,0x58,0x42,0xc7,0xb5,0x90,0xb9,0x0a,0xee,0xb9,0x52,0xdc,0x75,0x3f,0x92,0x2b,0x07,0xc2,0x27,0x14,0xbf,0xf0,0xd9,0xf0,0x6f,0x2d,0x0b,0x42,0x73,0x06,0x1e,0x85,0x9e,0xcb,0xf6,0x2c,0xaf,0xc4,0x38,0x22,0xc6,0x13,0x39,0x59,0x8f,0x73,0xf3,0xfb,0x99,0x96,0xb8,0x8a,0xda,0x9e,0xbc,0x34,0xea,0x2f,0x63,0xb5,0x3d
db 0xd8,0xd9,0x5d,0xf7,0x2b,0xee,0x6e,0xf4,0xa5,0x59,0x67,0x39,0xf6,0xb1,0x17,0x0d,0x73,0x72,0x9e,0x49,0x31,0xd1,0xf2,0x1b,0x13,0x5f,0xd7,0x49,0xdf,0x1a,0x32,0x04,0xd5,0x25,0x98,0x82,0xb1,0x90,0x49,0x2e,0x91,0x89,0x9a,0x3e,0x87,0xeb,0xea,0xed,0xf8,0x4a,0x70,0x4c,0x39,0x3d,0xf0,0xee,0x0e,0x2b,0xdf,0x95,0xa4,0x7e,0x19,0x59,0xae,0x5a,0xe5,0xe4,0x19,0x60,0xe1,0x04,0xe9,0x92,0x2f,0x7e,0x7a,0x43,0x7b,0xe7,0xa4,0x9a,0x15,0x6f,0xc1,0x2d,0xce,0xc7,0xc0,0x0c,0xd7,0xf4,0xc1,0xfd,0xea,0x45
db 0x2b,0xd7,0x45,0x80,0x85,0x01,0x84,0x69,0x51,0x06,0x2f,0xcf,0xa2,0xfa,0x22,0x4c,0xc6,0x2d,0x22,0x6b,0x65,0x36,0x1a,0x94,0xde,0xda,0x62,0x03,0xc8,0xeb,0x5e,0x5a,0xed,0xb1,0xcc,0xcf,0x24,0x46,0x0e,0xb6,0x95,0x03,0x5c,0xbd,0x92,0xc2,0xdb,0x59,0xc9,0x81,0x04,0xdc,0x1d,0x9d,0xa0,0x31,0x40,0xd9,0x56,0x5d,0xea,0xce,0x73,0x3f,0xc6,0x8d,0x4e,0x0a,0xd1,0xbf,0xa7,0xb7,0x39,0xb3,0xc9,0x44,0x7e,0x00,0x57,0xbe,0xfa,0xae,0x57,0x15,0x7f,0x20,0xc1,0x60,0xdb,0x18,0x62,0x26,0x91,0x88,0x05,0x26
db 0x04,0xff,0x60,0x83,0xa6,0x04,0xf7,0x59,0xf4,0xe6,0x61,0x76,0xde,0x3f,0xd9,0xc3,0x51,0x35,0x87,0x12,0x73,0x2a,0x1b,0x83,0x57,0x5d,0x61,0x4e,0x2e,0x0c,0xad,0x54,0x42,0xe5,0x76,0xc6,0x3c,0x8e,0x81,0x4c,0xad,0xcc,0xce,0x03,0x93,0x2c,0x42,0x5e,0x08,0x9f,0x12,0xb4,0xca,0xcc,0x07,0xec,0xb8,0x43,0x44,0xb2,0x10,0xfa,0xed,0x0d,0x2a,0x52,0x2b,0xb8,0xd5,0x67,0x3b,0xee,0xeb,0xc1,0xa5,0x9f,0x46,0x63,0xf1,0x36,0xd3,0x9f,0xc1,0x6e,0xf2,0xd2,0xb4,0xa5,0x08,0x94,0x7a,0xa7,0xba,0xb2,0xec,0x62
db 0x3d,0x2b,0x15,0x61,0x52,0x79,0xed,0xe5,0xd1,0xd7,0xdd,0x0e,0x7d,0x35,0x62,0x49,0x71,0x4c,0x6b,0xb9,0xd0,0xc8,0x82,0x74,0xbe,0xd8,0x66,0xa9,0x19,0xf9,0x59,0x2e,0x74,0x28,0xb6,0xaf,0x36,0x28,0x07,0x92,0xa5,0x04,0xe1,0x79,0x85,0x5e,0xcd,0x5f,0x4a,0xa1,0x30,0xc6,0xad,0x01,0xad,0x5a,0x98,0x3f,0x66,0x75,0x50,0x3d,0x91,0x61,0xda,0x31,0x32,0x1a,0x36,0x2d,0xc6,0x0d,0x70,0x02,0x20,0x94,0x32,0x58,0x47,0xfa,0xce,0x94,0x95,0x3f,0x51,0x01,0xd8,0x02,0x5c,0x5d,0xc0,0x31,0xa1,0xc2,0xdb,0x3d
db 0x4b,0xc5,0x5e,0xce,0xf9,0x0f,0xdc,0x9a,0x0d,0x13,0x2f,0x8c,0x6b,0x2a,0x9c,0x03,0x15,0x95,0xf8,0xf0,0xc7,0x07,0x80,0x02,0x6b,0xb3,0x04,0xac,0x14,0x83,0x96,0x78,0x14,0xbb,0x96,0x27,0xa2,0x57,0xaa,0xf3,0x21,0xda,0x07,0x9b,0xb7,0xba,0x3a,0x88,0x1c,0x39,0xa0,0x31,0x18,0xe2,0x4b,0xe5,0xf9,0x05,0x32,0xd8,0x38,0xfb,0xe7,0x5e,0x8e,0x6a,0x44,0x41,0xcb,0xfd,0x8d,0x53,0xf9,0x37,0x49,0x43,0xa9,0xfd,0xac,0xa5,0x78,0x8c,0x3c,0x26,0x8d,0x90,0xaf,0x46,0x09,0x0d,0xca,0x9b,0x3c,0x63,0xd0,0x61
db 0x66,0x25,0xdb,0xff,0x35,0x49,0x74,0x63,0xbb,0x68,0x0b,0x78,0x89,0x6b,0xbd,0xc5,0x03,0xec,0x3e,0x55,0x80,0x32,0x1b,0x6f,0xf5,0xd7,0xae,0x47,0xd8,0x5f,0x96,0x6e,0xdf,0x73,0xfc,0xf8,0xbc,0x28,0xa3,0xad,0xfc,0x37,0xf0,0xa6,0x5d,0x69,0x84,0xee,0x09,0xa9,0xc2,0x38,0xdb,0xb4,0x7f,0x63,0xdc,0x7b,0x06,0xf8,0x2d,0xac,0x23,0x5b,0x7b,0x52,0x80,0xee,0x53,0xb9,0xd2,0x9a,0x8d,0x6d,0xde,0xfa,0xaa,0x19,0x8f,0xe8,0xcf,0x82,0x0e,0x15,0x04,0x17,0x71,0x0e,0xdc,0xde,0x95,0xdd,0xb9,0xbb,0xb9,0x79
db 0xc2,0x26,0x31,0x6a,0x40,0x55,0xb3,0xeb,0x93,0xc3,0xc8,0x68,0xa8,0x83,0x63,0xd2,0x82,0x7a,0xb9,0xe5,0x29,0x64,0x0c,0x6c,0x47,0x21,0xfd,0xc9,0x58,0xf1,0x65,0x50,0x74,0x73,0x9f,0x8e,0xae,0x7d,0x99,0xd1,0x16,0x08,0xbb,0xcf,0xf8,0xa2,0x32,0xa0,0x0a,0x5f,0x44,0x6d,0x12,0xba,0x6c,0xcd,0x34,0xb8,0xcc,0x0a,0x46,0x11,0xa8,0x1b,0x54,0x99,0x42,0x0c,0xfb,0x69,0x81,0x70,0x67,0xcf,0x6e,0xd7,0xac,0x00,0x46,0xe1,0xba,0x45,0xe6,0x70,0x8a,0xb9,0xaa,0x2e,0xf2,0xfa,0xa4,0x58,0x9e,0xf3,0x81,0x39
db 0x93,0x0a,0x23,0x59,0x75,0x8a,0xfb,0x18,0x5d,0xf4,0xe6,0x60,0x69,0x8f,0x16,0x1d,0xb5,0x3c,0xa9,0x14,0x45,0xa9,0x85,0x3a,0xfd,0xd0,0xac,0x05,0x37,0x08,0xdc,0x38,0xde,0x6f,0xe6,0x6d,0xa5,0xdf,0x45,0xc8,0x3a,0x48,0x40,0x2c,0x00,0xa5,0x52,0xe1,0x32,0xf6,0xb4,0xc7,0x63,0xe1,0xd2,0xe9,0x65,0x1b,0xbc,0xdc,0x2e,0x45,0xf4,0x30,0x40,0x97,0x75,0xc5,0x82,0x27,0x6d,0x85,0xcc,0xbe,0x9c,0xf9,0x69,0x45,0x13,0xfa,0x71,0x4e,0xea,0xc0,0x73,0xfc,0x44,0x88,0x69,0x24,0x3f,0x59,0x1a,0x9a,0x2d,0x63
db 0xa6,0xcb,0x07,0xb8,0x15,0x6b,0xbb,0xf6,0xd7,0xf0,0x54,0xbc,0xdf,0xc7,0x23,0x18,0x0b,0x67,0x29,0x6e,0x03,0x97,0x1d,0xbb,0x57,0x4a,0xed,0x47,0x88,0xf4,0x24,0x0b,0xa7,0x84,0x0c,0xed,0x11,0xfd,0x09,0xbf,0x3a,0x69,0x9f,0x0d,0x81,0x71,0xf0,0x63,0x79,0x87,0xcf,0x57,0x2d,0x8c,0x90,0x21,0xa2,0x4b,0xf6,0x8a,0xf2,0x7d,0x5a,0x3a,0xc7,0xea,0x1b,0x51,0xbe,0xd4,0xda,0xdc,0xf2,0xcc,0x26,0xed,0x75,0x80,0x53,0xa4,0x65,0x9a,0x5f,0x00,0x9f,0xff,0x9c,0xe1,0x63,0x1f,0x48,0x75,0x44,0xf7,0xfc,0x34
db 0xca,0x67,0x97,0x78,0x4c,0xe0,0x97,0xc1,0x7d,0x46,0xd9,0x38,0xcb,0x4d,0x71,0xb8,0xa8,0x5f,0xf9,0x83,0x82,0x88,0xde,0x55,0xf7,0x63,0xfa,0x4d,0x16,0xdc,0x3b,0x3d,0x98,0xaa,0xcf,0x78,0xab,0x1d,0xbb,0xa5,0xf2,0x72,0x0b,0x19,0x67,0xa2,0xed,0x5c,0x8e,0x60,0x92,0x0a,0x11,0xc9,0x09,0x93,0xb0,0x74,0xb3,0x2f,0x04,0xa3,0x19,0x01,0x7d,0x17,0xc2,0xe8,0x9c,0xd8,0xa2,0x67,0xc1,0xd0,0x95,0x68,0xf6,0xa5,0x9d,0x66,0xb0,0xa2,0x82,0xb2,0xe5,0x98,0x65,0xf5,0x73,0x0a,0xe2,0xed,0xf1,0x88,0xc0,0x56
db 0x17,0x6e,0xa8,0x10,0x11,0x3d,0x6d,0x33,0xfa,0xb2,0x75,0x0b,0x32,0x88,0xf3,0xd7,0x88,0x29,0x07,0x25,0x76,0x33,0x15,0xf9,0x87,0x8b,0x10,0x99,0x6b,0x4c,0x67,0x09,0x02,0x8f,0xf3,0x24,0xac,0x5f,0x1b,0x58,0xbd,0x0c,0xe3,0xba,0xfe,0xe9,0x0b,0xa9,0xf0,0x92,0xcf,0x8a,0x02,0x69,0x21,0x9a,0x8f,0x03,0x59,0x83,0xa4,0x7e,0x8b,0x03,0xf8,0x6f,0x31,0x99,0x21,0xf8,0x4e,0x9f,0x4f,0x8d,0xa7,0xea,0x82,0xd2,0x49,0x2f,0x74,0x31,0xef,0x5a,0xab,0xa5,0x71,0x09,0x65,0xeb,0x69,0x59,0x02,0x31,0x5e,0x6e
db 0xfb,0x93,0xe5,0x87,0xf5,0x62,0x6c,0xb1,0x71,0x3e,0x5d,0xca,0xde,0xed,0x99,0x49,0x6d,0x3e,0xcc,0x14,0xe0,0xc1,0x91,0xb4,0xa8,0xdb,0xa8,0x89,0x47,0x11,0xf5,0x08,0x22,0x62,0x06,0x63,0x0e,0xfb,0x04,0x33,0x3f,0xba,0xac,0x87,0x89,0x06,0x35,0xfb,0xa3,0x61,0x10,0x8c,0x77,0x24,0x19,0xbd,0x20,0x86,0x83,0xd1,0x43,0xad,0x58,0x30,0xd0,0x63,0x76,0xe5,0xfd,0x0f,0x3c,0x32,0x10,0xa6,0x2e,0xa2,0x38,0xdf,0xc3,0x05,0x9a,0x4f,0x99,0xac,0xbd,0x8a,0xc7,0xbd,0x99,0xdc,0xe3,0xef,0xa4,0x9f,0x54,0x26
db 0xd6,0xf9,0x6b,0x1e,0x46,0x5a,0x1d,0x74,0x81,0xa5,0x77,0x77,0xfc,0xb3,0x05,0x23,0xd9,0xd3,0x74,0x64,0xa2,0x74,0x55,0xd4,0xff,0xe0,0x01,0x64,0xdc,0xe1,0x26,0x19,0x6e,0x66,0x3f,0xaf,0x49,0x85,0x46,0xdb,0xa5,0x0e,0x4a,0xf1,0x04,0xcf,0x7f,0xd7,0x47,0x0c,0xba,0xa4,0xf7,0x3f,0xf2,0x3d,0x85,0x3c,0xce,0x32,0xe1,0xdf,0x10,0x3a,0xa0,0xce,0x17,0xea,0x8a,0x4e,0x7f,0xe0,0xfd,0xc1,0x1f,0x3a,0x46,0x15,0xd5,0x2f,0xf1,0xc0,0xf2,0x31,0xfd,0x22,0x53,0x17,0x15,0x5d,0x1e,0x86,0x1d,0xd0,0xa1,0x1f
db 0x32,0x98,0x59,0x7d,0x94,0x55,0x80,0xcc,0x20,0x55,0xf1,0x37,0xda,0x56,0x46,0x1e,0x20,0x93,0x05,0x4e,0x74,0xf7,0xf6,0x99,0x33,0xcf,0x75,0x6a,0xbc,0x63,0x35,0x77,0xab,0x94,0xdf,0xd1,0x00,0xac,0xdc,0x38,0xe9,0x0d,0x08,0xd1,0xdd,0x2b,0x71,0x2e,0x62,0xe2,0xd5,0xfd,0x3e,0xe9,0x13,0x7f,0xe5,0x01,0x9a,0xee,0x18,0xed,0xfc,0x73,0xb3,0x9c,0x13,0x63,0x08,0xe9,0xb1,0x06,0xcd,0x3e,0xa0,0xc5,0x67,0xda,0x93,0xa4,0x32,0x89,0x63,0xad,0xc8,0xce,0x77,0x8d,0x44,0x4f,0x86,0x1b,0x70,0x6b,0x42,0x1f
db 0x01,0x1c,0x91,0x41,0x4c,0x26,0xc9,0xef,0x25,0x2c,0xa2,0x17,0xb8,0xb7,0xa3,0xf1,0x47,0x14,0x0f,0xf3,0x6b,0xda,0x75,0x58,0x90,0xb0,0x31,0x1d,0x27,0xf5,0x1a,0x4e,0x52,0x25,0xa1,0x91,0xc8,0x35,0x7e,0xf1,0x76,0x9c,0x5e,0x57,0x53,0x81,0x6b,0xb7,0x3e,0x72,0x9b,0x0d,0x6f,0x40,0x83,0xfa,0x38,0xe4,0xa7,0x3f,0x1b,0xbb,0x76,0x0b,0x9b,0x93,0x92,0x7f,0xf9,0xc1,0xb8,0x08,0x6e,0xab,0x44,0xd4,0xcb,0x71,0x67,0xbe,0x17,0x80,0xbb,0x99,0x63,0x64,0xe5,0x22,0x55,0xa9,0x72,0xb7,0x1e,0xd6,0x6d,0x7b
db 0x92,0x3d,0xf3,0x50,0xe8,0xc1,0xad,0xb7,0xcf,0xd5,0x8c,0x60,0x4f,0xfa,0x98,0x79,0xdb,0x5b,0xfc,0x8d,0xbd,0x2d,0x96,0xad,0x4f,0x2f,0x1d,0xaf,0xce,0x9b,0x3e,0x70,0xc7,0xd2,0x01,0xab,0xf9,0xab,0x30,0x57,0x18,0x3b,0x14,0x40,0xdc,0x76,0xfb,0x16,0x81,0xb2,0xcb,0xa0,0x65,0xbe,0x6c,0x86,0xfe,0x6a,0xff,0x9b,0x65,0x9b,0xfa,0x53,0x55,0x54,0x88,0x94,0xe9,0xc8,0x14,0x6c,0xe5,0xd4,0xae,0x65,0x66,0x5d,0x3a,0x84,0xf1,0x5a,0xd6,0xbc,0x3e,0xb7,0x1b,0x18,0x50,0x1f,0xc6,0xc4,0xe5,0x93,0x8d,0x39
db 0xf3,0x48,0xe2,0x33,0x67,0xd1,0x4b,0x1c,0x5f,0x0a,0xbf,0x15,0x87,0x12,0x9e,0xbd,0x76,0x03,0x0b,0xa1,0xf0,0x8c,0x3f,0xd4,0x13,0x1b,0x19,0xdf,0x5d,0x9b,0xb0,0x53,0xf2,0xe3,0xe7,0xd2,0x60,0x7c,0x87,0xc3,0xb1,0x8b,0x82,0x30,0xa0,0xaa,0x34,0x3b,0x38,0xf1,0x9e,0x73,0xe7,0x26,0x3e,0x28,0x77,0x05,0xc3,0x02,0x90,0x9c,0x9c,0x69,0xcc,0xf1,0x46,0x59,0x23,0xa7,0x06,0xf3,0x7d,0xd9,0xe5,0xcc,0xb5,0x18,0x17,0x92,0x75,0xe9,0xb4,0x81,0x47,0xd2,0xcd,0x28,0x07,0xd9,0xcd,0x6f,0x0c,0xf3,0xca,0x51
db 0x0a,0xe0,0x74,0x76,0x42,0xa7,0x0b,0xa6,0xf3,0x7b,0x7a,0xa1,0x70,0x85,0x0e,0x63,0xcc,0x24,0x33,0xcf,0x3d,0x56,0x58,0x37,0xaa,0xfd,0x83,0x23,0x29,0xaa,0x04,0x55,0xc7,0x54,0xac,0x18,0x9a,0xf9,0x7a,0x73,0x0f,0xb3,0x1c,0xc5,0xdc,0x78,0x33,0x90,0xc7,0x0c,0xe1,0x4c,0x33,0xbc,0x89,0x2b,0x9a,0xe9,0xf8,0x89,0xc1,0x29,0xae,0x12,0xcf,0x01,0x0d,0x1f,0xcb,0xc0,0x9e,0xa9,0xae,0xf7,0x34,0x3a,0xcc,0xef,0xd1,0x0d,0x22,0x4e,0x9c,0xd0,0x21,0x75,0xca,0x55,0xea,0xa5,0xeb,0x58,0xe9,0x4f,0xd1,0x5f
db 0x2c,0xab,0x45,0x28,0xdf,0x2d,0xdc,0xb5,0x93,0xe9,0x7f,0x0a,0xb1,0x91,0x94,0x06,0x46,0xe3,0x02,0x40,0xd6,0xf3,0xaa,0x4d,0xd1,0x74,0x64,0x58,0x6e,0xf2,0x3f,0x09,0x8e,0xcb,0x93,0xbf,0x5e,0xfe,0x42,0x3c,0x5f,0x56,0xd4,0x36,0x51,0xa8,0xdf,0xbe,0xe8,0x20,0x42,0x88,0x9e,0x85,0xf0,0xe0,0x28,0xd1,0x25,0x07,0x96,0x3f,0xd7,0x7d,0x29,0x98,0x05,0x68,0xfe,0x24,0x0d,0xb1,0xe5,0x23,0xaf,0xdb,0x72,0x06,0x73,0x75,0x29,0xac,0x57,0xb4,0x3a,0x25,0x67,0x13,0xa4,0x70,0xb4,0x86,0xbc,0xbc,0x59,0x2f
db 0x5f,0x13,0x17,0x99,0x42,0x7d,0x84,0x83,0xd7,0x03,0x7d,0x56,0x1f,0x91,0x1b,0xad,0xd1,0xaa,0x77,0xbe,0xd9,0x48,0x77,0x7e,0x4a,0xaf,0x51,0x2e,0x2e,0xb4,0x58,0x54,0x01,0xc3,0x91,0xb6,0x60,0xd5,0x41,0x70,0x1e,0xe7,0xd7,0xad,0x3f,0x1b,0x20,0x85,0x85,0x55,0x33,0x11,0x63,0xe1,0xc2,0x16,0xb1,0x28,0x08,0x01,0x3d,0x5e,0xa5,0x2a,0x4f,0x44,0x07,0x0c,0xe6,0x92,0x51,0xed,0x10,0x1d,0x42,0x74,0x2d,0x4e,0xc5,0x42,0x64,0xc8,0xb5,0xfd,0x82,0x4c,0x2b,0x35,0x64,0x86,0x76,0x8a,0x4a,0x00,0xe9,0x13
db 0xdb,0xce,0x2f,0x83,0x45,0x88,0x9d,0x73,0x63,0xf8,0x6b,0xae,0xc9,0xd6,0x38,0xfa,0xf7,0xfe,0x4f,0xb7,0xca,0x0d,0xbc,0x32,0x5e,0xe4,0xbc,0x14,0x88,0x7e,0x93,0x73,0x7f,0x87,0x3b,0x19,0xc9,0x00,0x2e,0xbb,0x6b,0x50,0xdc,0xe0,0x90,0xa8,0xe3,0xec,0x9f,0x64,0xde,0x36,0xc0,0xb7,0xf3,0xec,0x1a,0x9e,0xde,0x98,0x08,0x04,0x46,0x5f,0x8d,0xf4,0x7b,0x29,0x16,0x71,0x03,0xb9,0x34,0x68,0xf0,0xd4,0x22,0x3b,0xd1,0xa9,0xc6,0xbd,0x96,0x46,0x57,0x15,0x97,0xe1,0x35,0xe8,0xd5,0x91,0xe8,0xa4,0xf8,0x2c
db 0x67,0x0f,0x11,0x07,0x87,0xfd,0x93,0x6d,0x49,0xb5,0x38,0x7c,0xd3,0x09,0x4c,0xdd,0x86,0x6a,0x73,0xc2,0x4c,0x6a,0xb1,0x7c,0x09,0x2a,0x25,0x58,0x6e,0xbd,0x49,0x20,0xa2,0x6b,0xd0,0x17,0x7e,0x48,0xb5,0x2c,0x6b,0x19,0x50,0x39,0x1c,0x38,0xd2,0x24,0x30,0x8a,0x97,0x85,0x81,0x9c,0x65,0xd7,0xf6,0xa4,0xd6,0x91,0x28,0x7f,0x6f,0x7a,0x49,0xef,0x9a,0x6a,0x8d,0xfd,0x09,0x7d,0x0b,0xb9,0x3d,0x5b,0xbe,0x60,0xee,0xf0,0xd4,0xbf,0x9e,0x51,0x2c,0xb5,0x21,0x4c,0x1d,0x94,0x45,0xc5,0xdf,0xaa,0x11,0x60
db 0x3c,0xf8,0x95,0xcf,0x6d,0x92,0x67,0x5f,0x71,0x90,0x28,0x71,0x61,0x85,0x7e,0x7c,0x5b,0x7a,0x8f,0x99,0xf3,0xe7,0xa1,0xd6,0xe0,0xf9,0x62,0x0b,0x1b,0xcc,0xc5,0x6f,0x90,0xf8,0xcb,0x02,0xc8,0xd0,0xde,0x63,0xaa,0x6a,0xff,0x0d,0xca,0x98,0xd0,0xfb,0x99,0xed,0xb6,0xb9,0xfd,0x0a,0x4d,0x62,0x1e,0x0b,0x34,0x79,0xb7,0x18,0xce,0x69,0xcb,0x79,0x98,0xb2,0x28,0x55,0xef,0xd1,0x92,0x90,0x7e,0xd4,0x3c,0xae,0x1a,0xdd,0x52,0x23,0x9f,0x18,0x42,0x04,0x7e,0x12,0xf1,0x01,0x71,0xe5,0x3a,0x6b,0x59,0x15
db 0xa2,0x79,0x91,0x3f,0xd2,0x39,0x27,0x46,0xcf,0xdd,0xd6,0x97,0x31,0x12,0x83,0xff,0x8a,0x14,0xf2,0x53,0xb5,0xde,0x07,0x13,0xda,0x4d,0x5f,0x7b,0x68,0x37,0x22,0x0d,0xca,0x24,0x51,0x7e,0x16,0x31,0xff,0x09,0xdf,0x45,0xc7,0xd9,0x8b,0x15,0xe4,0x0b,0xe5,0x56,0xf5,0x7e,0x22,0x7d,0x2b,0x29,0x38,0xd1,0xb6,0xaf,0x41,0xe2,0xa4,0x3a,0xf5,0x05,0x33,0x2a,0xbf,0x38,0xc1,0x2c,0xc3,0x26,0xe9,0xa2,0x8f,0x3f,0x58,0x48,0xeb,0xd2,0x49,0x55,0xa2,0xb1,0x3a,0x08,0x6c,0xa3,0x87,0x46,0x6e,0xaa,0xfc,0x32
db 0xf5,0x9a,0x7d,0xc5,0x8d,0x6e,0xc5,0x7b,0xf2,0xbd,0xf0,0x9d,0xed,0xd2,0x0b,0x3e,0xa3,0xe4,0xef,0x22,0xde,0x14,0xc0,0xaa,0x5c,0x6a,0xbd,0xfe,0xce,0xe9,0x27,0x46,0xdf,0xcc,0x87,0x27,0x73,0xa4,0x07,0x32,0xf8,0xe3,0x13,0xf2,0x08,0x19,0xe3,0x17,0x4e,0x96,0x0d,0xf6,0xd7,0xec,0xb2,0xd5,0xe9,0x0b,0x60,0xc2,0x36,0x63,0x6f,0x74,0x1c,0x97,0x6c,0xab,0x45,0xf3,0x4a,0x3f,0x1f,0x73,0x43,0x99,0x72,0xeb,0x88,0xe2,0x6d,0x18,0x44,0x03,0x8a,0x6a,0x59,0x33,0x93,0x62,0xd6,0x7e,0x00,0x17,0x49,0x7b
db 0x64,0xb0,0x84,0xab,0x5c,0xfb,0x85,0x2d,0x14,0xbc,0xf3,0x89,0xd2,0x10,0x78,0x49,0x0c,0xce,0x15,0x7b,0x44,0xdc,0x6a,0x47,0x7b,0xfd,0x44,0xf8,0x76,0xa3,0x2b,0x12,0xdd,0xa2,0x53,0xdd,0x28,0x1b,0x34,0x54,0x3f,0xfc,0x42,0xdf,0x5b,0x90,0x17,0xaa,0xf4,0xf8,0xd2,0x4d,0xd9,0x92,0xf5,0x0f,0x7d,0xd3,0x8c,0xe0,0x0f,0x62,0x03,0x1d,0x54,0xe5,0xb4,0xa2,0xcd,0x32,0x02,0xc2,0x7f,0x18,0x5d,0x11,0x42,0xfd,0xd0,0x9e,0xd9,0x79,0xd4,0x7d,0xbe,0xb4,0xab,0x2e,0x4c,0xec,0x68,0x2b,0xf5,0x0b,0xc7,0x02
db 0xbb,0x2f,0x0b,0x5d,0x4b,0xec,0x87,0xa2,0xca,0x82,0x48,0x07,0x90,0x57,0x5c,0x41,0x5c,0x81,0xd0,0xc1,0x1e,0xa6,0x44,0xe0,0xe0,0xf5,0x9e,0x40,0x0a,0x4f,0x33,0x26,0xe1,0x72,0x8d,0x45,0xbf,0x32,0xe5,0xac,0xb5,0x3c,0xb7,0x7c,0xe0,0x68,0xe7,0x5b,0xe7,0xbd,0x8b,0xee,0x94,0x7d,0xcf,0x56,0x03,0x3a,0xb4,0xfe,0xe3,0x97,0x06,0x6b,0xc0,0xa3,0x62,0xdf,0x4a,0xf0,0xc8,0xb6,0x5d,0xa4,0x6d,0x07,0xef,0x00,0xf0,0x3e,0xa9,0xd2,0xf0,0x49,0x58,0xb9,0x9c,0x9c,0xae,0x2f,0x1b,0x44,0x43,0x7f,0xc3,0x1c
db 0x4f,0x32,0xc7,0x5c,0x5a,0x56,0x8f,0x50,0x22,0xa9,0x06,0xe5,0xc0,0xc4,0x61,0xd0,0x19,0xac,0x45,0x5c,0xdb,0xab,0x18,0xfb,0x4a,0x31,0x80,0x03,0xc1,0x09,0x68,0x6c,0xb9,0xae,0xce,0xc9,0xf1,0x56,0x66,0xd7,0x6a,0x65,0xe5,0x18,0xf8,0x15,0x5b,0x1c,0x34,0x23,0x4c,0x84,0x32,0x28,0xe7,0x26,0x38,0x68,0x19,0x2f,0x77,0x6f,0x34,0x3a,0xc8,0x6a,0xda,0xe2,0x12,0x51,0xd5,0xd2,0xed,0x51,0xe8,0xb1,0x31,0x03,0xbd,0xe9,0x62,0x72,0xc6,0x8e,0xdd,0x46,0x07,0x96,0xd0,0xc5,0xf7,0x6e,0x9f,0x1b,0x91,0x05
db 0xbb,0x0e,0xdf,0xf5,0x83,0x99,0x33,0xc1,0xac,0x4c,0x2c,0x51,0x8f,0x75,0xf3,0xc0,0xe1,0x98,0xb3,0x0b,0x0a,0x13,0xf1,0x2c,0x62,0x0c,0x27,0xaa,0xf9,0xec,0x3c,0x6b,0xef,0xea,0x2e,0x51,0xf3,0xac,0x49,0x53,0x49,0xcb,0xc1,0x1c,0xd3,0x41,0xc1,0x20,0x8d,0x68,0x9a,0xa9,0x07,0x0c,0x18,0x24,0x17,0x2d,0x4b,0xc6,0xd1,0xf9,0x5e,0x55,0x08,0xbd,0x73,0x3b,0xba,0x70,0xa7,0x36,0x0c,0xbf,0xaf,0xa3,0x08,0xef,0x4a,0x62,0xf2,0x46,0x09,0xb4,0x98,0xff,0x37,0x57,0x9d,0x74,0x81,0x33,0xe1,0x4d,0x5f,0x67
db 0xfc,0x82,0x17,0x6b,0x03,0x52,0x2c,0x0e,0xb4,0x83,0xad,0x6c,0x81,0x6c,0x81,0x64,0x3e,0x07,0x64,0x69,0xd9,0xbd,0xdc,0xd0,0x20,0xc5,0x64,0x01,0xf7,0x9d,0xd9,0x13,0x1d,0xb3,0xda,0x3b,0xd9,0xf6,0x2f,0xa1,0xfe,0x2d,0x65,0x9d,0x0f,0xd8,0x25,0x07,0x87,0x94,0xbe,0x9a,0xf3,0x4f,0x9c,0x01,0x43,0x3c,0xcd,0x82,0xb8,0x50,0xf4,0x60,0xca,0xc0,0xe5,0x21,0xc3,0x5e,0x4b,0x01,0xa2,0xbf,0x19,0xd7,0xc9,0x69,0xcb,0x4f,0xa0,0x23,0x00,0x75,0x18,0x1c,0x5f,0x4e,0x80,0xac,0xed,0x55,0x9e,0xde,0x06,0x1c
db 0xe2,0xc4,0x3e,0xa3,0xd6,0x7a,0x0f,0x99,0x8e,0xe0,0x2e,0xbe,0x38,0xf9,0x08,0x66,0x15,0x45,0x28,0x63,0xc5,0x43,0xa1,0x9c,0x0d,0xb6,0x2d,0xec,0x1f,0x8a,0xf3,0x4c,0xaa,0x69,0x6d,0xff,0x40,0x2b,0xd5,0xff,0xbb,0x49,0x40,0xdc,0x18,0x0b,0x53,0x34,0x97,0x98,0x4d,0xa3,0x2f,0x5c,0x4a,0x5e,0x2d,0xba,0x32,0x7d,0x8e,0x6f,0x09,0x78,0xe7,0x5c,0xfa,0x0d,0x65,0xaa,0xaa,0xa0,0x8c,0x47,0xb5,0x48,0x2a,0x9e,0xc4,0xf9,0x5b,0x72,0x03,0x70,0x7d,0xcc,0x09,0x4f,0xbe,0x1a,0x09,0x26,0x3a,0xad,0x3c,0x37
db 0x7c,0xf5,0xc9,0x82,0x4d,0x63,0x94,0xb2,0x36,0x45,0x93,0x24,0xe1,0xfd,0xcb,0x1f,0x5a,0xdb,0x8c,0x41,0xb3,0x4d,0x9c,0x9e,0xfc,0x19,0x44,0x45,0xd9,0xf3,0x40,0x00,0xad,0xbb,0xdd,0x89,0xfb,0xa8,0xbe,0xf1,0xcb,0xae,0xae,0x61,0xbc,0x2c,0xcb,0x3b,0x9d,0x8d,0x9b,0x1f,0xbb,0xa7,0x58,0x8f,0x86,0xa6,0x12,0x51,0xda,0x7e,0x54,0x21,0xd3,0x86,0x59,0xfd,0x39,0xe9,0xfd,0xde,0x0c,0x38,0x0a,0x51,0x89,0x2c,0x27,0xf4,0xb9,0x19,0x31,0xbb,0x07,0xa4,0x2b,0xb7,0xf4,0x4d,0x25,0x4a,0x33,0x0a,0x55,0x63
db 0x37,0xcf,0x69,0xb5,0xed,0xd6,0x07,0x65,0xe1,0x2e,0xa5,0x0c,0xb0,0x29,0x84,0x17,0x5d,0xd6,0x6b,0xeb,0x90,0x00,0x7c,0xea,0x51,0x8f,0xf7,0xda,0xc7,0x62,0xea,0x3e,0x49,0x7b,0x54,0x72,0x45,0x58,0xba,0x9b,0xe0,0x08,0xc4,0xe2,0xfa,0xc6,0x05,0xf3,0x8d,0xf1,0x34,0xc7,0x69,0xfa,0xe8,0x60,0x7a,0x76,0x7d,0xaa,0xaf,0x2b,0xa9,0x39,0x4e,0x27,0x93,0xe6,0x13,0xc7,0x24,0x9d,0x75,0xd3,0xdb,0x68,0x77,0x85,0x63,0x5f,0x9a,0xb3,0x8a,0xeb,0x60,0x55,0x52,0x70,0xcd,0xc4,0xc9,0x65,0x06,0x6a,0x43,0x68
db 0x27,0x3f,0x2f,0x20,0xe8,0x35,0x02,0xbc,0xb0,0x75,0xf9,0x64,0xe2,0x00,0x5c,0xc7,0x16,0x24,0x8c,0xa3,0xd5,0xe9,0xa4,0x91,0xf9,0x89,0xb7,0x8a,0xf6,0xe7,0xb6,0x17,0x7c,0x10,0x20,0xe8,0x17,0xd3,0x56,0x1e,0x65,0xe9,0x0a,0x84,0x44,0x68,0x26,0xc5,0x7a,0xfc,0x0f,0x32,0xc6,0xa1,0xe0,0xc1,0x72,0x14,0x61,0x91,0x9c,0x66,0x73,0x53,0x57,0x52,0x0e,0x9a,0xab,0x14,0x28,0x5d,0xfc,0xb3,0xca,0xc9,0x84,0x20,0x8f,0x90,0xca,0x1e,0x2d,0x5b,0x88,0xf5,0xca,0xaf,0x11,0x7d,0xf8,0x78,0xa6,0xb5,0xb4,0x1c
db 0x6c,0xfc,0x4a,0x39,0x6b,0xc0,0x64,0xb6,0xb1,0x5f,0xda,0x98,0x24,0xde,0x88,0x0c,0x34,0xd8,0xca,0x4b,0x16,0x03,0x8d,0x4f,0xa2,0x34,0x74,0xde,0x78,0xca,0x0b,0x33,0xe7,0x07,0xa0,0xa2,0x62,0xaa,0x74,0x6b,0xb1,0xc7,0x71,0xf0,0xb0,0xe0,0x11,0xf3,0x23,0xe2,0x0b,0x00,0x38,0xe4,0x07,0x57,0xac,0x6e,0xef,0x82,0x2d,0xfd,0xc0,0x2d,0x4e,0x74,0x19,0x11,0x84,0xff,0x2e,0x98,0x24,0x47,0x07,0x2b,0x96,0x5e,0x69,0xf9,0xfb,0x53,0xc9,0xbf,0x4f,0xc1,0x8a,0xc5,0xf5,0x1c,0x9f,0x36,0x1b,0xbe,0x31,0x3c
db 0xee,0x8a,0x94,0x08,0x4d,0x86,0xf4,0xb0,0x6f,0x1c,0xba,0x91,0xee,0x19,0xdc,0x07,0x58,0xa1,0xac,0xa6,0xae,0xcd,0x75,0x79,0xbb,0xd4,0x62,0x42,0x13,0x61,0x0b,0x33,0x72,0x42,0xcb,0xf9,0x93,0xbc,0x68,0xc1,0x98,0xdb,0xce,0xc7,0x1f,0x71,0xb8,0xae,0x7a,0x8d,0xac,0x34,0xaa,0x52,0x0e,0x7f,0xbb,0x55,0x7d,0x7e,0x09,0xc1,0xce,0x41,0x8a,0x80,0x6d,0xa2,0xd7,0x19,0x96,0xf7,0x6d,0x15,0x9e,0x1d,0x9e,0xd4,0x1f,0xbb,0x27,0xdf,0xa1,0xdb,0x6c,0xc3,0xd7,0x73,0x7d,0x77,0x28,0x1f,0xd9,0x4c,0xb4,0x26
db 0x75,0x74,0x38,0x8f,0x47,0x48,0xf0,0x51,0x3c,0xcb,0xbe,0x9c,0xf4,0xbc,0x5d,0xb2,0x55,0x20,0x9f,0xd9,0x44,0x12,0xab,0x9a,0xd6,0xa5,0x10,0x1c,0x6c,0x9e,0x70,0x2c,0x83,0x03,0x73,0x62,0x93,0xf2,0xb7,0xe1,0x2c,0x8a,0xca,0xeb,0xff,0x79,0x52,0x4b,0x14,0x13,0xd4,0xbf,0x8a,0x77,0xfc,0xda,0x0f,0x61,0x72,0x9c,0x14,0x10,0xeb,0x7d,0x7a,0xee,0x66,0x87,0x6a,0xaf,0x62,0xcb,0x0e,0xcd,0x53,0x55,0x04,0xec,0xcb,0x66,0xb5,0xe4,0x0b,0x0f,0x38,0x01,0x80,0x58,0xea,0xe2,0x2c,0xf6,0x9f,0x8e,0xe6,0x08
db 0xad,0x30,0xc1,0x4b,0x0a,0x50,0xad,0x34,0x9c,0xd4,0x0b,0x3d,0x49,0xdb,0x38,0x8d,0xbe,0x89,0x0a,0x50,0x98,0x3d,0x5c,0xa2,0x09,0x3b,0xba,0xee,0x87,0x3f,0x1f,0x2f,0xf9,0xf2,0xb8,0x0a,0xd5,0x09,0x2d,0x2f,0xdf,0x23,0x59,0xc5,0x8d,0x21,0xb9,0xac,0xb9,0x6c,0x76,0x73,0x26,0x34,0x8f,0x4a,0xf5,0x19,0xf7,0x38,0xd7,0x3b,0xb1,0x4c,0x4a,0xb6,0x15,0xe5,0x75,0x8c,0x84,0xf7,0x38,0x90,0x4a,0xdb,0xba,0x01,0x95,0xa5,0x50,0x1b,0x75,0x3f,0x3f,0x31,0x0d,0xc2,0xe8,0x2e,0xae,0xc0,0x53,0xe3,0xa1,0x19
db 0xc3,0x05,0xfa,0xba,0x60,0x75,0x1c,0x7d,0x61,0x5e,0xe5,0xc6,0xa0,0xa0,0xe1,0xb3,0x73,0x64,0xd6,0xc0,0x18,0x97,0x52,0xe3,0x86,0x34,0x0c,0xc2,0x11,0x6b,0x54,0x41,0xbd,0xbd,0x96,0xd5,0xcd,0x72,0x21,0xb4,0x40,0xfc,0xee,0x98,0x43,0x45,0xe0,0x93,0xb5,0x09,0x41,0xb4,0x47,0x53,0xb1,0x9f,0x34,0xae,0x66,0x02,0x99,0xd3,0x6b,0x73,0xb4,0xb3,0x34,0x93,0x50,0x2d,0x53,0x85,0x73,0x65,0x81,0x60,0x4b,0x11,0xfd,0x46,0x75,0x83,0x5c,0x42,0x30,0x5f,0x5f,0xcc,0x5c,0xab,0x7f,0xb8,0xa2,0x95,0x22,0x41
db 0xe9,0xd6,0x7e,0xf5,0x88,0x9b,0xc9,0x19,0x25,0xc8,0xf8,0x6d,0x26,0xcb,0x93,0x53,0x73,0xd2,0x0a,0xb3,0x13,0x32,0xee,0x5c,0x34,0x2e,0x2d,0xb5,0xeb,0x53,0xe1,0x14,0xc6,0xea,0x93,0xe2,0x61,0x52,0x65,0x2e,0xdb,0xac,0x33,0x21,0x03,0x92,0x5a,0x84,0x6b,0x99,0x00,0x79,0xcb,0x75,0x09,0x46,0x80,0xdd,0x5a,0x19,0x8d,0xbb,0x60,0x07,0x8a,0x81,0xe6,0xcd,0x17,0x1a,0x3e,0x41,0x84,0xa0,0x69,0xed,0xa9,0x6d,0x15,0x57,0xb1,0xcc,0xca,0x46,0x8f,0x26,0xbf,0x2c,0xf2,0xc5,0x3a,0xc3,0x9b,0xbe,0x34,0x6b
db 0xb2,0xc0,0x78,0x3a,0x64,0x2f,0xdf,0xf3,0x7c,0x02,0x2e,0xf2,0x1e,0x97,0x3e,0x4c,0xa3,0xb5,0xc1,0x49,0x5e,0x1c,0x7d,0xec,0x2d,0xdd,0x22,0x09,0x8f,0xc1,0x12,0x20,0xd3,0xf2,0x71,0x65,0x65,0x69,0xfc,0x11,0x7a,0x73,0x0e,0x53,0x45,0xe8,0xc9,0xc6,0x35,0x50,0xfe,0xd4,0xa2,0xe7,0x3a,0xe3,0x0b,0xd3,0x6d,0x2e,0xb6,0xc7,0xb9,0x01,0x29,0x9d,0xc8,0x5a,0xe5,0x55,0x0b,0x88,0x63,0xa7,0xa0,0x45,0x1f,0x24,0x83,0x14,0x1f,0x6c,0xe7,0xc2,0xdf,0xef,0x36,0x3d,0xe8,0xad,0x4b,0x4e,0x78,0x5b,0xaf,0x08
db 0x33,0x25,0x1f,0x88,0xdc,0x99,0x34,0x28,0xb6,0x23,0x93,0x77,0xda,0x25,0x05,0x9d,0xf4,0x41,0x34,0x67,0xfb,0xdd,0x7a,0x89,0x8d,0x16,0x3a,0x16,0x71,0x9d,0xb7,0x32,0x4b,0x2c,0xcc,0x89,0xd2,0x14,0x73,0xe2,0x8d,0x17,0x87,0xa2,0x11,0xbd,0xe4,0x4b,0xce,0x64,0x33,0xfa,0xd6,0x28,0xd5,0x18,0x6e,0x82,0xd9,0xaf,0xd5,0xc1,0x23,0x64,0x6a,0xb3,0xfc,0xed,0xd9,0xf8,0x85,0xcc,0xf9,0xe5,0x46,0x37,0x8f,0xc2,0xbc,0x22,0xcd,0xd3,0xe5,0xf9,0x38,0xe3,0x9d,0xe4,0xcc,0x2d,0x3e,0xc1,0xfb,0x5e,0x0a,0x48
db 0x71,0x20,0x62,0x01,0x0b,0xe7,0x51,0x0b,0xc5,0xaf,0x1d,0x8b,0xcf,0x05,0xb5,0x06,0xcd,0xab,0x5a,0xef,0x61,0xb0,0x6b,0x2c,0x31,0xbf,0xb7,0x0c,0x60,0x27,0xaa,0x47,0x1f,0x22,0xce,0x42,0xe4,0x4c,0x61,0xb6,0x28,0x39,0x05,0x4c,0xcc,0x9d,0x19,0x6e,0x03,0xbe,0x1c,0xdc,0xa4,0xb4,0x3f,0x66,0x06,0x8e,0x1c,0x69,0x47,0x1d,0xb3,0x24,0xc3,0xf8,0x15,0xc0,0xed,0x1e,0x54,0x2a,0x7c,0x3f,0x69,0x7c,0x7e,0xfe,0xa4,0x11,0xd6,0x78,0xa2,0x4e,0x13,0x66,0xaf,0xf0,0x94,0xa0,0xdd,0x14,0x5d,0x58,0x5b,0x54
db 0x0f,0x3a,0xd4,0xa0,0x5e,0x27,0xbf,0x67,0xbe,0xee,0x9b,0x08,0x34,0x8e,0xe6,0xad,0x2e,0xe7,0x79,0xd4,0x4c,0x13,0x89,0x42,0x54,0x54,0xba,0x32,0xc3,0xf9,0x62,0x0f,0xe1,0x21,0xb3,0xe3,0xd0,0xe4,0x04,0x62,0x95,0x1e,0xff,0x28,0x7a,0x63,0xaa,0x3b,0x9e,0xbd,0x99,0x5b,0xfd,0xcf,0x0c,0x0b,0x71,0xd0,0xc8,0x64,0x3e,0xdc,0x22,0x4d,0x39,0x5f,0x3b,0xd6,0x89,0x65,0xb4,0xfc,0x61,0xcf,0xcb,0x57,0x3f,0x6a,0xae,0x5c,0x05,0xfa,0x3a,0x95,0xd2,0xc2,0xba,0xfe,0x36,0x14,0x37,0x36,0x1a,0xa0,0x0f,0x1c
db 0xff,0x3d,0x94,0x22,0xb6,0x04,0xc6,0xd2,0xa0,0xb3,0xcf,0x44,0xce,0xbe,0x8c,0xbc,0x78,0x86,0x80,0x97,0xf3,0x4f,0x25,0x5d,0xbf,0xa6,0x1c,0x3b,0x4f,0x61,0xa3,0x0f,0x50,0x6a,0x93,0x8c,0x0e,0x2b,0x08,0x69,0xb6,0xc5,0xda,0xc1,0x35,0xa0,0xc9,0xf9,0x34,0xb6,0xdf,0xc4,0x54,0x3e,0xb7,0x6f,0x40,0xc1,0x2b,0x1d,0x9b,0x41,0x05,0x40,0xf0,0x82,0xbe,0xb9,0xbd,0xfe,0x03,0xa0,0x90,0xac,0x44,0x3a,0xaf,0xc1,0x89,0x20,0x8e,0xfa,0x54,0x19,0x91,0x9f,0x49,0xf8,0x42,0xab,0x40,0xef,0x8a,0x21,0xba,0x1f
db 0x3e,0xf5,0xc8,0xfa,0x48,0x94,0x54,0xab,0x41,0x37,0xa6,0x7b,0x9a,0xe8,0xf6,0x81,0x01,0x5e,0x2b,0x6c,0x7d,0x6c,0xfd,0x74,0x42,0x6e,0xc8,0xa8,0xca,0x3a,0x2e,0x39,0x94,0x01,0x7b,0x3e,0x04,0x57,0x3e,0x4f,0x7f,0xaf,0xda,0x08,0xee,0x3e,0x1d,0xa8,0xf1,0xde,0xdc,0x99,0xab,0xc6,0x39,0xc8,0xd5,0x61,0x77,0xff,0x13,0x5d,0x53,0x6c,0xaf,0x35,0x8a,0x3e,0xe9,0x34,0xbd,0x4c,0x16,0xe8,0x87,0x58,0x44,0x81,0x07,0x2e,0xab,0xb0,0x9a,0xf2,0x76,0x9c,0x31,0x19,0x3b,0xc1,0x0a,0xd5,0xe4,0x7f,0xe1,0x25
db 0x76,0xf6,0x04,0x1e,0xd7,0x9b,0x28,0x0a,0x95,0x0f,0x42,0xd6,0x52,0x1c,0x8e,0x20,0xab,0x1f,0x69,0x34,0xb0,0xd8,0x86,0x51,0x51,0xb3,0x9f,0x2a,0x44,0x51,0x57,0x25,0xa7,0x21,0xf1,0x76,0xf5,0x7f,0x5f,0x91,0xe3,0x87,0xcd,0x2f,0x27,0x32,0x4a,0xc3,0x26,0xe5,0x1b,0x4d,0xde,0x2f,0xba,0xcc,0x9b,0x89,0x69,0x89,0x8f,0x82,0xba,0x6b,0x01,0x39,0xfe,0x90,0x66,0xbc,0xd1,0xe2,0xd5,0x7a,0x99,0xa0,0x18,0x4a,0xb5,0x4c,0xd4,0x60,0x84,0xaf,0x14,0x69,0x1d,0x97,0xe4,0x7b,0x6b,0x7f,0x4f,0x50,0x9d,0x55
db 0xd5,0x54,0xeb,0xb3,0x78,0x83,0x73,0xa7,0x7c,0x3c,0x55,0xa5,0x66,0xd3,0x69,0x1d,0xba,0x00,0x28,0xf9,0x62,0xcf,0x26,0x0a,0x17,0x32,0x7e,0x80,0xd5,0x12,0xab,0x01,0xfd,0x66,0xd2,0xf6,0xe7,0x91,0x48,0x9c,0x1b,0x78,0x07,0x03,0x9b,0xa1,0x44,0x07,0x3b,0xe2,0x61,0x60,0x1d,0x8f,0x38,0x88,0x0e,0xd5,0x4b,0x35,0xa3,0xa6,0x3e,0x12,0x96,0x2d,0xe3,0x41,0x90,0x18,0x8d,0x11,0x48,0x58,0x31,0xd8,0xc2,0xe3,0xed,0xb9,0xd9,0x45,0x32,0xd8,0x71,0x42,0xab,0x1e,0x54,0xa1,0x18,0xc9,0xe2,0x61,0x39,0x4a
db 0xa0,0xbb,0xe6,0xf8,0xe0,0x3b,0xdc,0x71,0x0a,0xe3,0xff,0x7e,0x34,0xf8,0xce,0xd6,0x6a,0x47,0x3a,0xe1,0x5f,0x42,0x92,0xa9,0x63,0xb7,0x1d,0xfb,0xe3,0xbc,0xd6,0x2c,0x1e,0x3f,0x23,0xf3,0x44,0xd6,0x27,0x03,0x16,0xf0,0xfc,0x34,0x0e,0x26,0x9a,0x49,0x79,0xb9,0xda,0xf2,0x16,0xa7,0xb5,0x83,0x1f,0x11,0xd4,0x9b,0xad,0xee,0xac,0x68,0x10,0xc2,0xd7,0xf3,0x0e,0xc9,0xb4,0x38,0x0c,0x04,0xad,0xb7,0x24,0x6e,0x8e,0x30,0x23,0x3e,0xe7,0xb7,0xf1,0xd9,0x60,0x38,0x97,0xf5,0x08,0xb5,0xd5,0x60,0x57,0x59
db 0x97,0x63,0xaa,0x04,0xe1,0xbf,0x29,0x61,0xcb,0xfc,0xa7,0xa4,0x08,0x00,0x96,0x8f,0x58,0x94,0x90,0x7d,0x89,0xc0,0x8b,0x3f,0xa9,0x91,0xb2,0xdc,0x3e,0xa4,0x9f,0x70,0x90,0x27,0x02,0xfd,0xeb,0xcb,0x2a,0x88,0x60,0x57,0x11,0xc4,0x05,0x33,0xaf,0x89,0xf4,0x73,0x34,0x7d,0xe3,0x92,0xf4,0x65,0x2b,0x5a,0x51,0x54,0xdf,0xc5,0xb2,0x2c,0xca,0x2a,0xfd,0x63,0x8c,0x5d,0x0a,0xeb,0xff,0x4e,0x69,0x2e,0x66,0xc1,0x2b,0xd2,0x3a,0xb0,0xcb,0xf8,0x6e,0xf3,0x23,0x27,0x1f,0x13,0xc8,0xf0,0xec,0x29,0xf0,0x70
db 0x33,0x3e,0xed,0x2e,0xb3,0x07,0x13,0x46,0xe7,0x81,0x55,0xa4,0x33,0x2f,0x04,0xae,0x66,0x03,0x5f,0x19,0xd3,0x49,0x44,0xc9,0x58,0x48,0x31,0x6c,0x8a,0x5d,0x7d,0x0b,0xb9,0xb0,0x10,0x5e,0xaa,0xaf,0x6a,0x2a,0xa9,0x1a,0x04,0xef,0x70,0xa3,0xf0,0x78,0x1f,0xd6,0x3a,0xaa,0x77,0xfb,0x3e,0x77,0xe1,0xd9,0x4b,0xa7,0xa2,0xa5,0xec,0x44,0x43,0xd5,0x95,0x7b,0x32,0x48,0xd4,0x25,0x1d,0x0f,0x34,0xa3,0x00,0x83,0xd3,0x70,0x2b,0xc5,0xe1,0x60,0x1c,0x53,0x1c,0xde,0xe4,0xe9,0x7d,0x2c,0x51,0x24,0x22,0x27
db 0x2e,0x34,0xc5,0x49,0xaf,0x92,0xbc,0x1a,0xd0,0xfa,0xe6,0xb2,0x11,0xd8,0xee,0xff,0x29,0x4e,0xc8,0xfc,0x8d,0x8c,0xa2,0xef,0x43,0xc5,0x4c,0xa4,0x18,0xdf,0xb5,0x11,0xfc,0x75,0xa9,0x42,0x8a,0xbb,0x7b,0xbf,0x58,0xa3,0xad,0x96,0x77,0x39,0x5c,0x8c,0x48,0xaa,0xed,0xcd,0x6f,0xc7,0x7f,0xe2,0xa6,0x20,0xbc,0xf6,0xd7,0x5f,0x73,0x19,0x66,0x42,0xc8,0x42,0xd0,0x90,0xab,0xe3,0x7e,0x54,0x19,0x7f,0x0f,0x8e,0x84,0xeb,0xb9,0x97,0xa4,0x65,0xd0,0xa1,0x03,0x25,0x5f,0x89,0xdf,0x91,0x11,0x91,0xef,0x0f
falign
.choose_niels:
push rbp rbx r12
movsx rdx, dl
shl esi, 3
push r13 r14 r15
mov rax, rdx
shr rax, 0x3f
mov rbx, rdi
sub rdx, rax
mov r14, rax
neg rax
xor rdx, rax
lea rax, [rsi+rsi*2]
mov r15, rdx
shl rax, 5
lea rbp, [rax+.ge25519_niels_base_multiples]
movq xmm14, r15
pxor xmm15, xmm15 ; 0
pxor xmm0, xmm0
mov eax, 1
mov ecx, 2
mov edx, 3
pxor xmm1, xmm1
pxor xmm2, xmm2
pshufd xmm14, xmm14, 0
movq xmm6, rax
pxor xmm3, xmm3
pcmpeqd xmm15, xmm14
pxor xmm4, xmm4
pxor xmm5, xmm5
pand xmm6, xmm15
movq xmm15, rax ; 1
por xmm0, xmm6
por xmm2, xmm6
pshufd xmm15, xmm15, 0
movaps xmm6, [rbp]
movaps xmm7, [rbp+0x10]
pcmpeqd xmm15, xmm14
movaps xmm8, [rbp+0x20]
movaps xmm9, [rbp+0x30]
pand xmm6, xmm15
pand xmm7, xmm15
pand xmm8, xmm15
movaps xmm10, [rbp+0x40]
movaps xmm11, [rbp+0x50]
pand xmm9, xmm15
pand xmm10, xmm15
pand xmm11, xmm15
movq xmm15, rcx ; 2
por xmm0, xmm6
por xmm1, xmm7
por xmm2, xmm8
pshufd xmm15, xmm15, 0
por xmm3, xmm9
por xmm4, xmm10
por xmm5, xmm11
pcmpeqd xmm15, xmm14
movaps xmm6, [rbp+0x60]
movaps xmm7, [rbp+0x70]
movaps xmm8, [rbp+0x80]
pand xmm6, xmm15
pand xmm7, xmm15
pand xmm8, xmm15
movaps xmm9, [rbp+0x90]
movaps xmm10, [rbp+0xa0]
movaps xmm11, [rbp+0xb0]
pand xmm9, xmm15
pand xmm10, xmm15
pand xmm11, xmm15
movq xmm15, rdx ; 3
mov eax, 4
mov ecx, 5
mov edx, 6
por xmm0, xmm6
por xmm1, xmm7
por xmm2, xmm8
pshufd xmm15, xmm15, 0
por xmm3, xmm9
por xmm4, xmm10
por xmm5, xmm11
pcmpeqd xmm15, xmm14
movaps xmm6, [rbp+0xc0]
movaps xmm7, [rbp+0xd0]
movaps xmm8, [rbp+0xe0]
pand xmm6, xmm15
pand xmm7, xmm15
pand xmm8, xmm15
movaps xmm9, [rbp+0xf0]
movaps xmm10, [rbp+0x100]
movaps xmm11, [rbp+0x110]
pand xmm9, xmm15
pand xmm10, xmm15
pand xmm11, xmm15
movq xmm15, rax ; 4
por xmm0, xmm6
por xmm1, xmm7
por xmm2, xmm8
pshufd xmm15, xmm15, 0
por xmm3, xmm9
por xmm4, xmm10
por xmm5, xmm11
pcmpeqd xmm15, xmm14
movaps xmm6, [rbp+0x120]
movaps xmm7, [rbp+0x130]
movaps xmm8, [rbp+0x140]
pand xmm6, xmm15
pand xmm7, xmm15
pand xmm8, xmm15
movaps xmm9, [rbp+0x150]
movaps xmm10, [rbp+0x160]
movaps xmm11, [rbp+0x170]
pand xmm9, xmm15
pand xmm10, xmm15
pand xmm11, xmm15
movq xmm15, rcx ; 5
por xmm0, xmm6
por xmm1, xmm7
por xmm2, xmm8
pshufd xmm15, xmm15, 0
por xmm3, xmm9
por xmm4, xmm10
por xmm5, xmm11
pcmpeqd xmm15, xmm14
movaps xmm6, [rbp+0x180]
movaps xmm7, [rbp+0x190]
movaps xmm8, [rbp+0x1a0]
pand xmm6, xmm15
pand xmm7, xmm15
pand xmm8, xmm15
movaps xmm9, [rbp+0x1b0]
movaps xmm10, [rbp+0x1c0]
movaps xmm11, [rbp+0x1d0]
pand xmm9, xmm15
pand xmm10, xmm15
pand xmm11, xmm15
movq xmm15, rdx ; 6
mov eax, 7
mov ecx, 8
mov rdx, r14
por xmm0, xmm6
por xmm1, xmm7
por xmm2, xmm8
xor rdx, 1
pshufd xmm15, xmm15, 0
por xmm3, xmm9
por xmm4, xmm10
por xmm5, xmm11
pcmpeqd xmm15, xmm14
movaps xmm6, [rbp+0x1e0]
movaps xmm7, [rbp+0x1f0]
movaps xmm8, [rbp+0x200]
pand xmm6, xmm15
pand xmm7, xmm15
pand xmm8, xmm15
movaps xmm9, [rbp+0x210]
movaps xmm10, [rbp+0x220]
movaps xmm11, [rbp+0x230]
pand xmm9, xmm15
pand xmm10, xmm15
pand xmm11, xmm15
movq xmm15, rax ; 7
por xmm0, xmm6
por xmm1, xmm7
por xmm2, xmm8
pshufd xmm15, xmm15, 0
por xmm3, xmm9
por xmm4, xmm10
por xmm5, xmm11
pcmpeqd xmm15, xmm14
movaps xmm6, [rbp+0x240]
movaps xmm7, [rbp+0x250]
movaps xmm8, [rbp+0x260]
pand xmm6, xmm15
pand xmm7, xmm15
pand xmm8, xmm15
movaps xmm9, [rbp+0x270]
movaps xmm10, [rbp+0x280]
movaps xmm11, [rbp+0x290]
pand xmm9, xmm15
pand xmm10, xmm15
pand xmm11, xmm15
movq xmm15, rcx ; 8
por xmm0, xmm6
por xmm1, xmm7
por xmm2, xmm8
pshufd xmm15, xmm15, 0
por xmm3, xmm9
por xmm4, xmm10
por xmm5, xmm11
pcmpeqd xmm15, xmm14
movaps xmm6, [rbp+0x2a0]
movaps xmm7, [rbp+0x2b0]
movaps xmm8, [rbp+0x2c0]
pand xmm6, xmm15
pand xmm7, xmm15
pand xmm8, xmm15
movaps xmm9, [rbp+0x2d0]
movaps xmm10, [rbp+0x2e0]
movaps xmm11, [rbp+0x2f0]
pand xmm9, xmm15
pand xmm10, xmm15
pand xmm11, xmm15
; rep end
movq xmm14, rdx
pxor xmm15, xmm15
por xmm0, xmm6
por xmm1, xmm7
pshufd xmm14, xmm14, 0
por xmm2, xmm8
por xmm3, xmm9
pcmpeqd xmm15, xmm14
por xmm4, xmm10
por xmm5, xmm11
pxor xmm2, xmm0
pxor xmm3, xmm1
movaps xmm6, xmm2
movaps xmm7, xmm3
pand xmm6, xmm15
pand xmm7, xmm15
pxor xmm0, xmm6
pxor xmm1, xmm7
pxor xmm2, xmm0
pxor xmm3, xmm1
xor eax, eax
; sorep
movq rcx, xmm0
movq rsi, xmm1
pshufd xmm0, xmm0, 0xee
mov r8, rcx
pshufd xmm1, xmm1, 0xee
movq rdx, xmm0
movq rdi, xmm1
shrd r8, rdx, 0x33
shrd rdx, rsi, 0x26
shrd rsi, rdi, 0x19
shr rdi, 0xc
mov r9, rcx
mov r10, r8
mov r11, rdx
mov r12, rsi
mov r13, rdi
shr r9, 0x1a
shr r10, 0x1a
shr r11, 0x1a
shr r12, 0x1a
shr r13, 0x1a
and ecx, 0x3ffffff
and r9d, 0x1ffffff
and r8d, 0x3ffffff
mov [rbx], ecx
mov [rbx+0x4], r9d
mov [rbx+0x8], r8d
and r10d, 0x1ffffff
and edx, 0x3ffffff
and r11d, 0x1ffffff
mov [rbx+0xc], r10d
mov [rbx+0x10], edx
mov [rbx+0x14], r11d
and esi, 0x3ffffff
and r12d, 0x1ffffff
and edi, 0x3ffffff
and r13d, 0x1ffffff
mov [rbx+0x18], esi
mov [rbx+0x1c], r12d
mov [rbx+0x20], edi
mov [rbx+0x24], r13d
mov [rbx+0x28], rax
; rep
movq rcx, xmm2
movq rsi, xmm3
pshufd xmm2, xmm2, 0xee
mov r8, rcx
pshufd xmm3, xmm3, 0xee
movq rdx, xmm2
movq rdi, xmm3
shrd r8, rdx, 0x33
shrd rdx, rsi, 0x26
shrd rsi, rdi, 0x19
shr rdi, 0xc
mov r9, rcx
mov r10, r8
mov r11, rdx
mov r12, rsi
mov r13, rdi
shr r9, 0x1a
shr r10, 0x1a
shr r11, 0x1a
shr r12, 0x1a
shr r13, 0x1a
and ecx, 0x3ffffff
and r9d, 0x1ffffff
and r8d, 0x3ffffff
mov [rbx+0x30], ecx
mov [rbx+0x34], r9d
mov [rbx+0x38], r8d
and r10d, 0x1ffffff
and edx, 0x3ffffff
and r11d, 0x1ffffff
mov [rbx+0x3c], r10d
mov [rbx+0x40], edx
mov [rbx+0x44], r11d
and esi, 0x3ffffff
and r12d, 0x1ffffff
and edi, 0x3ffffff
and r13d, 0x1ffffff
mov [rbx+0x48], esi
mov [rbx+0x4c], r12d
mov [rbx+0x50], edi
mov [rbx+0x54], r13d
mov [rbx+0x58], rax
; partial rep
movq rcx, xmm4
movq rsi, xmm5
pshufd xmm4, xmm4, 0xee
mov r8, rcx
pshufd xmm5, xmm5, 0xee
movq rdx, xmm4
movq rdi, xmm5
shrd r8, rdx, 0x33
shrd rdx, rsi, 0x26
shrd rsi, rdi, 0x19
shr rdi, 0xc
mov r9, rcx
mov r10, r8
mov r11, rdx
mov r12, rsi
mov r13, rdi
shr r9, 0x1a
shr r10, 0x1a
shr r11, 0x1a
shr r12, 0x1a
shr r13, 0x1a
and ecx, 0x3ffffff
and r9d, 0x1ffffff
and r8d, 0x3ffffff
movd xmm0, ecx
movd xmm4, r9d
movd xmm8, r8d
and r10d, 0x1ffffff
and edx, 0x3ffffff
and r11d, 0x1ffffff
movd xmm3, r10d
movd xmm1, edx
movd xmm5, r11d
and esi, 0x3ffffff
and r12d, 0x1ffffff
and edi, 0x3ffffff
and r13d, 0x1ffffff
movd xmm6, esi
movd xmm7, r12d
movd xmm2, edi
mov r8d, r14d
movd xmm9, r13d
punpckldq xmm0, xmm4
punpckldq xmm8, xmm3
punpckldq xmm1, xmm5
sub r8d, 1
punpckldq xmm6, xmm7
punpckldq xmm2, xmm9
punpcklqdq xmm0, xmm8
punpcklqdq xmm1, xmm6
movd xmm6, r8d
mov ecx, 0x7ffffda
mov edx, 0x3fffffe
mov eax, 0x7fffffe
pshufd xmm6, xmm6, 0
movd xmm3, ecx
movd xmm5, edx
movd xmm4, eax
punpckldq xmm3, xmm5
punpckldq xmm4, xmm5
punpcklqdq xmm3, xmm4
movaps xmm5, xmm4
punpcklqdq xmm4, xmm4
movaps xmm7, xmm6
psubd xmm3, xmm0
psubd xmm4, xmm1
psubd xmm5, xmm2
pand xmm0, xmm6
pand xmm1, xmm6
pand xmm2, xmm6
pandn xmm6, xmm3
movaps xmm3, xmm7
pandn xmm7, xmm4
pandn xmm3, xmm5
por xmm0, xmm6
por xmm1, xmm7
por xmm2, xmm3
movaps [rbx+0x60], xmm0
movaps [rbx+0x70], xmm1
movaps [rbx+0x80], xmm2
pop r15 r14 r13 r12 rbx rbp
ret
falign
.nielsadd2:
push rbx
lea rdx, [rsi+0x60]
mov rbx, rdi
sub rsp, 0x270
movaps xmm8, [rdi+0x30]
movaps xmm1, [rdi]
movaps xmm0, [ed25519$packed2p0]
paddd xmm0, xmm8
psubd xmm0, xmm1
pshufd xmm15, xmm0, 0xa0
pshufd xmm10, xmm0, 0xf5
movaps xmm7, [rdi+0x40]
paddd xmm1, xmm8
pand xmm15, [ed25519$sse2_bot32bitmask]
movaps xmm6, [rdi+0x10]
pand xmm10, [ed25519$sse2_bot32bitmask]
movaps xmm5, [ed25519$packed2p1]
movaps xmm0, xmm15
paddd xmm5, xmm7
psubd xmm5, xmm6
pand xmm15, [ed25519$packedmask26]
movaps xmm9, xmm10
psrld xmm0, 0x1a
movaps xmm3, [rdi+0x50]
pand xmm10, [ed25519$packedmask25]
psrld xmm9, 0x19
movaps xmm11, xmm9
psrldq xmm9, 0x8
paddd xmm5, xmm9
movaps xmm9, xmm5
movaps xmm2, [rdi+0x20]
pslldq xmm11, 0x8
paddd xmm15, xmm11
movaps xmm4, [ed25519$packed2p2]
paddd xmm0, xmm10
movaps xmm10, xmm15
punpckldq xmm15, xmm0
paddd xmm4, xmm3
psubd xmm4, xmm2
paddd xmm2, xmm3
punpckhdq xmm10, xmm0
movaps xmm0, xmm7
punpcklqdq xmm4, xmm2
movaps xmm13, [rsi+0x20]
paddd xmm0, xmm6
punpcklqdq xmm15, xmm10
punpcklqdq xmm9, xmm0
punpckhqdq xmm5, xmm0
movaps xmm6, xmm15
punpcklqdq xmm13, [rsi+0x50]
movaps xmm7, xmm9
punpcklqdq xmm6, xmm1
movaps xmm0, xmm5
punpckhqdq xmm15, xmm1
psrlq xmm7, 0x20
movaps xmm1, [rsi]
psrlq xmm0, 0x20
movaps xmm12, xmm6
movaps xmm10, xmm13
movaps [rsp+0x30], xmm7
movaps xmm7, xmm4
psrlq xmm12, 0x20
psrlq xmm10, 0x20
movaps [rsp+0x50], xmm5
psrlq xmm7, 0x20
movaps xmm2, xmm1
movaps [rsp+0x60], xmm0
movaps xmm8, xmm6
movaps [rsp+0xb0], xmm7
movaps xmm14, xmm15
movaps [rsp+0x70], xmm4
psrlq xmm14, 0x20
movaps [rsp+0x20], xmm10
movaps xmm10, xmm12
movaps xmm0, [rsi+0x30]
movaps xmm5, [rsi+0x40]
punpcklqdq xmm2, xmm0
movaps xmm7, [rsi+0x10]
punpckhqdq xmm1, xmm0
lea rsi, [rdi+0x90]
movaps xmm11, xmm7
punpckhqdq xmm7, xmm5
movaps xmm4, xmm2
punpcklqdq xmm11, xmm5
movaps xmm3, xmm2
movaps xmm5, xmm7
pmuludq xmm10, xmm4
pmuludq xmm8, xmm4
movaps [rsp+0x80], xmm8
psrlq xmm3, 0x20
psrlq xmm5, 0x20
movaps xmm2, xmm1
movaps [rsp+0x40], xmm5
movaps xmm5, xmm10
psrlq xmm2, 0x20
movaps xmm10, xmm6
movaps xmm0, xmm11
psrlq xmm11, 0x20
movaps xmm8, xmm5
pmuludq xmm10, xmm3
movaps [rsp+0x10], xmm7
paddq xmm8, xmm10
movaps xmm10, xmm12
movaps [rsp+0x90], xmm8
pslld xmm10, 0x1
movaps xmm8, xmm15
movaps xmm5, xmm10
pmuludq xmm10, xmm3
movaps xmm7, xmm10
pmuludq xmm8, xmm4
movaps xmm10, xmm6
paddq xmm7, xmm8
movaps xmm8, xmm7
pmuludq xmm10, xmm1
paddq xmm8, xmm10
movaps xmm10, xmm14
movaps [rsp+0xa0], xmm8
movaps xmm8, xmm15
pmuludq xmm10, xmm4
pmuludq xmm8, xmm3
paddq xmm8, xmm10
movaps xmm10, xmm12
pmuludq xmm10, xmm1
movaps xmm7, xmm10
paddq xmm7, xmm8
movaps xmm8, xmm6
movaps xmm10, xmm7
pmuludq xmm8, xmm2
paddq xmm10, xmm8
movaps [rsp+0x100], xmm10
movaps xmm10, xmm14
pslld xmm10, 0x1
movaps xmm7, xmm10
movaps xmm10, xmm9
movaps xmm8, xmm7
pmuludq xmm10, xmm4
pmuludq xmm8, xmm3
paddq xmm8, xmm10
movaps xmm10, xmm15
pmuludq xmm10, xmm1
paddq xmm10, xmm8
movaps xmm8, xmm5
pmuludq xmm8, xmm2
paddq xmm8, xmm10
movaps xmm10, xmm6
pmuludq xmm10, xmm0
paddq xmm8, xmm10
movaps xmm10, xmm9
movaps [rsp+0xd0], xmm8
pmuludq xmm10, xmm3
movaps [rsp], xmm11
movaps xmm8, [rsp+0x30]
pmuludq xmm8, xmm4
paddq xmm10, xmm8
movaps xmm8, xmm14
pmuludq xmm8, xmm1
paddq xmm8, xmm10
movaps xmm10, xmm15
pmuludq xmm10, xmm2
paddq xmm10, xmm8
movaps xmm8, xmm12
pmuludq xmm8, xmm0
paddq xmm8, xmm10
movaps xmm10, xmm11
movaps xmm11, xmm8
pmuludq xmm10, xmm6
paddq xmm11, xmm10
movaps xmm10, [rsp+0x30]
movaps [rsp+0xe0], xmm11
pslld xmm10, 0x1
movaps xmm11, xmm10
movaps xmm8, xmm11
pmuludq xmm11, xmm2
movaps xmm10, [rsp+0x50]
pmuludq xmm8, xmm3
pmuludq xmm10, xmm4
paddq xmm8, xmm10
movaps xmm10, xmm9
pmuludq xmm10, xmm1
paddq xmm10, xmm8
movaps xmm8, xmm7
pmuludq xmm8, xmm2
paddq xmm8, xmm10
movaps xmm10, xmm15
pmuludq xmm10, xmm0
paddq xmm10, xmm8
movaps xmm8, [rsp]
pmuludq xmm8, xmm5
paddq xmm8, xmm10
movaps xmm10, [rsp+0x10]
pmuludq xmm10, xmm6
paddq xmm8, xmm10
movaps xmm10, [rsp+0x50]
movaps [rsp+0xf0], xmm8
pmuludq xmm10, xmm3
movaps xmm8, [rsp+0x60]
pmuludq xmm8, xmm4
paddq xmm10, xmm8
movaps xmm8, [rsp+0x30]
pmuludq xmm8, xmm1
paddq xmm8, xmm10
movaps xmm10, xmm9
pmuludq xmm10, xmm2
paddq xmm10, xmm8
movaps xmm8, xmm14
pmuludq xmm8, xmm0
paddq xmm8, xmm10
movaps xmm10, [rsp]
pmuludq xmm10, xmm15
paddq xmm10, xmm8
movaps xmm8, [rsp+0x10]
pmuludq xmm8, xmm12
paddq xmm8, xmm10
movaps xmm10, [rsp+0x40]
pmuludq xmm10, xmm6
paddq xmm8, xmm10
movaps xmm10, [rsp+0x60]
movaps [rsp+0x110], xmm8
pslld xmm10, 0x1
pmuludq xmm10, xmm3
movaps xmm8, [rsp+0x70]
pmuludq xmm8, xmm4
paddq xmm10, xmm8
movaps xmm8, [rsp+0x50]
pmuludq xmm4, [rsp+0xb0]
pmuludq xmm8, xmm1
paddq xmm8, xmm10
paddq xmm11, xmm8
movaps xmm8, xmm9
movaps xmm10, [rsp]
pmuludq xmm8, xmm0
paddq xmm8, xmm11
movaps xmm11, [rsp+0x10]
pmuludq xmm7, xmm10
paddq xmm7, xmm8
movaps xmm8, xmm11
pmuludq xmm8, xmm15
paddq xmm8, xmm7
movaps xmm7, [rsp+0x40]
pmuludq xmm5, xmm7
paddq xmm5, xmm8
movaps xmm8, xmm6
pmuludq xmm8, xmm13
paddq xmm5, xmm8
movaps [rsp+0x120], xmm5
movaps xmm5, [rsp+0x70]
movaps xmm8, [rsp+0x50]
pmuludq xmm5, xmm3
paddq xmm5, xmm4
movaps xmm4, [rsp+0x60]
pmuludq xmm4, xmm1
paddq xmm4, xmm5
movaps xmm5, xmm8
pmuludq xmm5, xmm2
paddq xmm5, xmm4
movaps xmm4, [rsp+0x30]
pmuludq xmm4, xmm0
paddq xmm4, xmm5
movaps xmm5, xmm10
pmuludq xmm5, xmm9
paddq xmm5, xmm4
movaps xmm4, xmm11
movaps xmm11, [rsp+0x20]
pmuludq xmm9, [ed25519$packednineteen]
pmuludq xmm4, xmm14
paddq xmm4, xmm5
movaps xmm5, xmm7
pmuludq xmm6, xmm11
pmuludq xmm14, [ed25519$packednineteen]
pmuludq xmm5, xmm15
paddq xmm5, xmm4
movaps xmm4, xmm12
pmuludq xmm15, [ed25519$packednineteen]
movaps xmm11, xmm15
pmuludq xmm12, [ed25519$packednineteen]
pmuludq xmm4, xmm13
paddq xmm4, xmm5
paddq xmm4, xmm6
movaps xmm6, xmm14
pmuludq xmm11, xmm13
pslld xmm12, 0x1
movaps [rsp+0x130], xmm4
pmuludq xmm14, xmm13
pslld xmm6, 0x1
movaps xmm5, xmm8
movaps [rsp+0xc0], xmm6
pmuludq xmm12, [rsp+0x20]
paddq xmm11, xmm12
pmuludq xmm5, [ed25519$packednineteen]
pmuludq xmm15, [rsp+0x20]
paddq xmm14, xmm15
movaps xmm6, [rsp+0x30]
movaps xmm12, [rsp+0xc0]
pmuludq xmm6, [ed25519$packednineteen]
movaps xmm10, xmm6
pslld xmm6, 0x1
movaps xmm8, [rsp+0x60]
pmuludq xmm12, [rsp+0x40]
paddq xmm12, xmm11
movaps [rsp+0x30], xmm6
pmuludq xmm8, [ed25519$packednineteen]
movaps xmm6, xmm8
pslld xmm6, 0x1
movaps [rsp+0x50], xmm6
movaps xmm11, [rsp+0x10]
pmuludq xmm11, xmm9
paddq xmm11, xmm12
movaps xmm12, [rsp+0x30]
pmuludq xmm12, [rsp]
paddq xmm12, xmm11
movaps xmm11, xmm5
movaps xmm4, [rsp+0x70]
pmuludq xmm11, xmm0
paddq xmm11, xmm12
movaps xmm12, [rsp+0x50]
pmuludq xmm4, [ed25519$packednineteen]
movaps xmm7, [rsp+0xb0]
pmuludq xmm12, xmm2
paddq xmm12, xmm11
movaps xmm11, xmm4
pmuludq xmm7, [ed25519$packednineteen]
movaps xmm6, xmm7
movaps xmm15, [rsp+0x10]
pmuludq xmm11, xmm1
paddq xmm11, xmm12
pmuludq xmm1, xmm7
movaps xmm12, [rsp+0x40]
pslld xmm6, 0x1
pmuludq xmm3, xmm6
paddq xmm3, xmm11
paddq xmm3, [rsp+0x80]
movaps xmm11, xmm15
movaps [rsp+0x80], xmm3
movaps xmm3, xmm12
pmuludq xmm11, xmm10
pmuludq xmm10, xmm13
pmuludq xmm3, xmm9
paddq xmm3, xmm14
paddq xmm11, xmm3
movaps xmm14, [rsp]
movaps xmm3, xmm14
pmuludq xmm3, xmm5
paddq xmm3, xmm11
movaps xmm11, xmm8
pmuludq xmm11, xmm0
paddq xmm11, xmm3
movaps xmm3, xmm4
pmuludq xmm3, xmm2
paddq xmm3, xmm11
movaps xmm11, xmm9
paddq xmm1, xmm3
movaps xmm3, [rsp+0xc0]
paddq xmm1, [rsp+0x90]
pmuludq xmm11, xmm13
pmuludq xmm2, xmm6
movaps [rsp+0x90], xmm1
pmuludq xmm3, [rsp+0x20]
movaps xmm1, xmm11
paddq xmm1, xmm3
movaps xmm11, [rsp+0x30]
pmuludq xmm11, xmm12
movaps xmm3, xmm11
movaps xmm11, xmm15
paddq xmm3, xmm1
movaps xmm1, xmm15
movaps xmm15, xmm14
pmuludq xmm1, xmm5
paddq xmm1, xmm3
movaps xmm3, [rsp+0x50]
pmuludq xmm3, xmm14
paddq xmm3, xmm1
movaps xmm1, xmm4
movaps xmm14, [rsp+0x20]
pmuludq xmm1, xmm0
paddq xmm1, xmm3
paddq xmm2, xmm1
paddq xmm2, [rsp+0xa0]
movaps [rsp+0xa0], xmm2
pmuludq xmm9, xmm14
movaps xmm2, xmm12
paddq xmm10, xmm9
pmuludq xmm0, xmm7
movaps xmm3, xmm12
movaps xmm12, xmm15
pmuludq xmm2, xmm5
movaps xmm1, xmm2
movaps xmm2, xmm11
pmuludq xmm12, xmm4
movaps xmm9, xmm15
paddq xmm1, xmm10
movaps xmm10, [rsp+0x50]
pmuludq xmm2, xmm8
paddq xmm2, xmm1
movaps xmm1, xmm12
pmuludq xmm9, xmm6
pmuludq xmm8, xmm13
paddq xmm1, xmm2
paddq xmm0, xmm1
paddq xmm0, [rsp+0x100]
movaps xmm15, xmm0
movaps xmm0, [rsp+0x30]
movaps xmm2, xmm10
pmuludq xmm0, xmm14
movaps xmm1, xmm0
pmuludq xmm2, xmm3
movaps xmm0, xmm5
pmuludq xmm5, xmm14
paddq xmm8, xmm5
movaps xmm5, xmm3
pmuludq xmm0, xmm13
paddq xmm0, xmm1
movaps xmm1, xmm2
movaps xmm2, xmm11
pmuludq xmm5, xmm6
pmuludq xmm6, xmm14
paddq xmm1, xmm0
movaps xmm0, xmm11
paddq xmm6, [rsp+0x120]
pmuludq xmm2, xmm7
pmuludq xmm7, xmm13
pmuludq xmm0, xmm4
paddq xmm0, xmm1
movaps xmm1, xmm9
paddq xmm1, xmm0
movaps xmm0, [rsp+0xd0]
paddq xmm0, xmm1
movaps xmm1, xmm2
movaps xmm11, xmm0
movaps xmm0, xmm3
pmuludq xmm0, xmm4
paddq xmm0, xmm8
paddq xmm1, xmm0
movaps xmm0, [rsp+0xe0]
movaps xmm2, xmm11
paddq xmm0, xmm1
movaps xmm12, xmm0
movaps xmm0, xmm10
psrlq xmm2, 0x1a
pmuludq xmm0, xmm14
movaps xmm1, xmm0
paddq xmm2, xmm12
movaps xmm0, xmm4
pmuludq xmm4, xmm14
paddq xmm7, xmm4
paddq xmm7, [rsp+0x110]
movaps xmm14, xmm6
movaps xmm4, xmm2
pmuludq xmm0, xmm13
paddq xmm0, xmm1
movaps xmm1, xmm5
movaps xmm13, xmm7
psrlq xmm4, 0x19
pand xmm2, [ed25519$packedmask25]
paddq xmm1, xmm0
movaps xmm0, [rsp+0xf0]
paddq xmm0, xmm1
movaps xmm1, [rsp+0x80]
movaps xmm9, xmm0
movaps xmm3, xmm1
movaps xmm0, [ed25519$packedmask26]
pand xmm1, [ed25519$packedmask26]
paddq xmm4, xmm9
psrlq xmm3, 0x1a
paddq xmm3, [rsp+0x90]
movaps xmm5, xmm3
pand xmm0, xmm11
psrlq xmm5, 0x19
paddq xmm5, [rsp+0xa0]
movaps xmm7, xmm5
movaps xmm5, xmm4
psrlq xmm4, 0x1a
paddq xmm4, xmm13
movaps xmm6, xmm7
movaps xmm8, xmm4
psrlq xmm4, 0x19
paddq xmm4, xmm14
pand xmm7, [ed25519$packedmask26]
psrlq xmm6, 0x1a
paddq xmm6, xmm15
movaps xmm10, xmm6
psrlq xmm6, 0x19
paddq xmm0, xmm6
movaps xmm6, xmm4
pand xmm3, [ed25519$packedmask25]
psrlq xmm6, 0x1a
paddq xmm6, [rsp+0x130]
movaps xmm9, xmm6
pand xmm10, [ed25519$packedmask25]
psrlq xmm9, 0x19
pmuludq xmm9, [ed25519$packednineteen]
paddq xmm1, xmm9
movaps xmm11, xmm1
pand xmm1, [ed25519$packedmask26]
movaps xmm9, xmm0
psrlq xmm11, 0x1a
paddq xmm3, xmm11
pand xmm8, [ed25519$packedmask25]
psrlq xmm9, 0x1a
paddq xmm2, xmm9
movaps xmm9, xmm7
pand xmm5, [ed25519$packedmask26]
movaps xmm11, xmm1
pand xmm0, [ed25519$packedmask26]
punpckldq xmm9, xmm10
punpckhdq xmm7, xmm10
movaps xmm12, xmm5
punpckldq xmm11, xmm3
punpckhdq xmm1, xmm3
pand xmm4, [ed25519$packedmask26]
punpcklqdq xmm11, xmm9
punpcklqdq xmm1, xmm7
movaps xmm9, xmm0
punpckhdq xmm5, xmm8
punpckhdq xmm0, xmm2
movaps xmm13, xmm4
pand xmm6, [ed25519$packedmask25]
movaps xmm15, xmm4
punpcklqdq xmm0, xmm5
movaps xmm5, xmm1
movaps [rsp+0x90], xmm1
paddd xmm5, xmm11
punpckldq xmm12, xmm8
movaps [rsp+0x1b0], xmm5
punpckldq xmm13, xmm6
punpckhdq xmm15, xmm6
movaps xmm7, xmm0
punpckldq xmm9, xmm2
movaps xmm5, [rdi+0x60]
pxor xmm14, xmm14
movaps xmm6, [rdi+0x70]
paddd xmm5, xmm5
movaps xmm3, xmm5
punpcklqdq xmm9, xmm12
paddd xmm6, xmm6
movaps xmm1, [ed25519$sse2_bot32bitmask]
punpcklqdq xmm3, xmm6
punpckhqdq xmm5, xmm6
paddd xmm7, xmm9
movaps xmm2, [rdi+0x80]
lea rdi, [rsp+0x240]
pand xmm1, xmm3
paddd xmm2, xmm2
movaps xmm12, [ed25519$sse2_bot32bitmask]
psrlq xmm3, 0x20
movaps [rsp+0x1c0], xmm7
movaps xmm4, xmm1
movaps xmm7, xmm14
movaps xmm8, xmm4
movaps xmm1, [ed25519$sse2_bot32bitmask]
punpcklqdq xmm7, xmm2
psrlq xmm8, 0x1a
paddq xmm3, xmm8
movaps xmm8, xmm3
pand xmm1, xmm5
psrlq xmm5, 0x20
pand xmm12, xmm7
psrlq xmm8, 0x19
psrlq xmm7, 0x20
pand xmm4, [ed25519$packedmask26]
movaps xmm6, xmm1
movaps xmm2, xmm1
pand xmm3, [ed25519$packedmask25]
movaps [rsp+0x70], xmm0
pand xmm6, [ed25519$packedmask26]
psrlq xmm2, 0x1a
paddq xmm5, xmm2
movaps xmm2, xmm5
movaps xmm0, xmm15
psrlq xmm2, 0x19
paddq xmm12, xmm2
pslldq xmm2, 0x8
pand xmm5, [ed25519$packedmask25]
paddd xmm0, xmm13
paddq xmm6, xmm8
movaps xmm8, xmm12
pand xmm12, [ed25519$packedmask26]
psrlq xmm8, 0x1a
paddq xmm7, xmm8
movaps xmm8, xmm7
pand xmm7, [ed25519$packedmask25]
psrlq xmm8, 0x19
pmuludq xmm8, [ed25519$packednineteen]
movaps [rsp+0x80], xmm11
punpckhqdq xmm8, xmm2
movaps xmm2, xmm6
movaps [rsp+0x60], xmm9
pand xmm6, [ed25519$packedmask26]
paddq xmm4, xmm8
psrlq xmm2, 0x1a
movaps xmm8, xmm4
paddq xmm5, xmm2
punpckhdq xmm12, xmm7
pand xmm4, [ed25519$packedmask26]
psrlq xmm8, 0x1a
paddq xmm3, xmm8
movaps [rsp+0x50], xmm15
movaps xmm8, xmm6
punpckhdq xmm6, xmm5
punpckldq xmm8, xmm5
movaps xmm2, xmm4
punpckhdq xmm4, xmm3
movaps [rsp+0x40], xmm13
punpckldq xmm2, xmm3
punpcklqdq xmm4, xmm6
movaps [rsp+0x1d0], xmm0
punpcklqdq xmm2, xmm8
movaps [rsp+0x30], xmm14
movaps [rsp+0x20], xmm2
movaps [rsp+0x10], xmm4
movaps [rsp], xmm12
call curve25519$mul
movaps xmm10, [rsp+0x240]
movaps xmm12, [rsp]
movaps xmm8, xmm10
movaps xmm1, [rsp+0x90]
movaps xmm11, [rsp+0x80]
movaps xmm3, xmm1
movaps xmm5, [rsp+0x260]
movaps xmm15, [rsp+0x50]
paddd xmm5, xmm12
movaps xmm2, [rsp+0x20]
punpckldq xmm15, xmm12
movaps xmm12, xmm11
movaps xmm0, [rsp+0x70]
paddd xmm8, xmm2
punpckldq xmm12, xmm10
movaps xmm9, [rsp+0x60]
punpckhdq xmm11, xmm10
punpckldq xmm3, xmm2
movaps xmm4, [rsp+0x10]
punpckhdq xmm1, xmm2
movaps xmm10, xmm9
movaps xmm6, [rsp+0x250]
movaps xmm2, xmm0
paddd xmm3, [ed25519$packed32packed2p0]
punpckhdq xmm0, xmm4
psubd xmm3, xmm12
punpckldq xmm10, xmm6
movaps xmm7, xmm6
punpckldq xmm2, xmm4
punpckhdq xmm9, xmm6
movaps xmm6, [ed25519$packed32packed2p1]
paddd xmm7, xmm4
movaps xmm4, xmm15
movaps xmm15, xmm3
paddd xmm1, xmm6
paddd xmm2, xmm6
psubd xmm1, xmm11
psubd xmm2, xmm10
movaps xmm10, xmm1
punpcklqdq xmm15, xmm2
paddd xmm0, xmm6
psubd xmm0, xmm9
punpcklqdq xmm10, xmm0
movaps xmm13, [rsp+0x40]
paddd xmm4, xmm6
punpckhqdq xmm3, xmm2
punpckhqdq xmm1, xmm0
movaps xmm6, xmm15
movaps xmm0, [ed25519$packedmask26262626]
movaps xmm9, xmm15
movaps xmm2, xmm10
punpckldq xmm13, [rsp+0x260]
psrld xmm9, 0x1a
paddd xmm9, xmm3
movaps xmm3, [ed25519$packedmask25252525]
pand xmm10, xmm0
psrld xmm2, 0x1a
paddd xmm2, xmm1
pand xmm6, xmm0
movaps xmm1, xmm9
movaps xmm0, xmm2
pand xmm9, xmm3
psrld xmm1, 0x19
paddd xmm1, xmm10
pand xmm3, xmm2
psrld xmm0, 0x19
movaps xmm2, xmm0
pslldq xmm0, 0x8
paddd xmm6, xmm0
movaps xmm10, xmm6
psubd xmm4, xmm13
psrldq xmm2, 0x8
paddd xmm4, xmm2
punpcklqdq xmm10, xmm9
movaps xmm2, xmm1
punpckhqdq xmm6, xmm9
punpckhqdq xmm1, xmm3
punpcklqdq xmm2, xmm3
movaps xmm14, [rsp+0x30]
pshufd xmm10, xmm10, 0xd8
pshufd xmm0, xmm1, 0xd8
pshufd xmm2, xmm2, 0xd8
pshufd xmm6, xmm6, 0xd8
movaps xmm1, xmm10
pshufd xmm4, xmm4, 0xd8
punpcklqdq xmm1, xmm2
movaps xmm15, xmm6
punpckhqdq xmm6, xmm0
movaps xmm3, xmm4
punpcklqdq xmm15, xmm0
movaps xmm0, xmm1
punpcklqdq xmm3, xmm14
punpcklqdq xmm0, xmm8
punpckhqdq xmm1, xmm8
punpckhqdq xmm10, xmm2
movaps xmm9, xmm3
movaps xmm2, xmm0
punpckhqdq xmm4, xmm14
movaps xmm3, xmm15
psrlq xmm2, 0x20
movaps xmm14, xmm2
movaps xmm2, xmm1
punpcklqdq xmm3, xmm7
movaps xmm13, xmm0
psrlq xmm2, 0x20
movaps [rsp+0x20], xmm2
movaps xmm2, xmm9
movaps xmm12, xmm3
pshufd xmm11, xmm10, 0xaa
punpcklqdq xmm2, xmm5
psrlq xmm12, 0x20
movaps [rsp+0x30], xmm12
pshufd xmm12, xmm10, 0x55
movaps [rsp+0xa0], xmm2
movaps xmm5, xmm2
pshufd xmm2, xmm10, 0x0
movaps [rsp], xmm3
psrlq xmm5, 0x20
movaps xmm3, xmm0
pmuludq xmm13, xmm2
movaps [rsp+0x150], xmm13
movaps xmm13, xmm14
pmuludq xmm3, xmm12
movaps [rsp+0x10], xmm14
pmuludq xmm13, xmm2
paddq xmm13, xmm3
movaps xmm3, xmm1
movaps [rsp+0x160], xmm13
movaps xmm13, xmm14
pmuludq xmm3, xmm2
movaps xmm14, xmm3
pshufd xmm10, xmm10, 0xff
pslld xmm13, 0x1
movaps xmm3, xmm13
movaps [rsp+0x40], xmm13
pmuludq xmm3, xmm12
movaps xmm13, xmm3
movaps xmm3, xmm0
punpckhqdq xmm15, xmm7
paddq xmm13, xmm14
movaps xmm14, xmm13
pmuludq xmm3, xmm11
movaps [rsp+0x130], xmm5
paddq xmm14, xmm3
movaps xmm7, xmm15
movaps [rsp+0x170], xmm14
psrlq xmm7, 0x20
pshufd xmm9, xmm6, 0x0
movaps [rsp+0x70], xmm7
pshufd xmm8, xmm6, 0x55
pshufd xmm7, xmm6, 0xaa
pshufd xmm6, xmm6, 0xff
movaps xmm3, [rsp+0x20]
pshufd xmm5, xmm4, 0x0
pshufd xmm4, xmm4, 0x55
pmuludq xmm3, xmm2
movaps xmm13, xmm3
movaps xmm3, xmm1
pmuludq xmm3, xmm12
movaps xmm14, xmm3
movaps xmm3, [rsp+0x10]
paddq xmm14, xmm13
pmuludq xmm3, xmm11
movaps xmm13, xmm3
movaps xmm3, xmm0
paddq xmm13, xmm14
movaps xmm14, xmm13
pmuludq xmm3, xmm10
paddq xmm14, xmm3
movaps [rsp+0x180], xmm14
movaps xmm14, [rsp+0x20]
pslld xmm14, 0x1
movaps xmm13, xmm14
movaps xmm14, [rsp]
movaps xmm3, xmm13
movaps [rsp+0xb0], xmm13
pmuludq xmm14, xmm2
pmuludq xmm3, xmm12
movaps xmm13, xmm3
movaps xmm3, xmm1
paddq xmm13, xmm14
movaps [rsp+0x60], xmm15
pmuludq xmm3, xmm11
movaps xmm14, xmm3
paddq xmm14, xmm13
movaps xmm3, [rsp+0x40]
pmuludq xmm3, xmm10
movaps xmm13, xmm3
movaps xmm3, xmm0
paddq xmm13, xmm14
pmuludq xmm3, xmm9
paddq xmm13, xmm3
movaps xmm3, [rsp+0x30]
movaps [rsp+0x1f0], xmm13
pmuludq xmm3, xmm2
movaps xmm13, xmm3
movaps xmm3, [rsp]
pmuludq xmm3, xmm12
movaps xmm14, xmm3
movaps xmm3, [rsp+0x20]
paddq xmm14, xmm13
pmuludq xmm3, xmm11
movaps xmm13, xmm3
movaps xmm3, xmm1
paddq xmm13, xmm14
pmuludq xmm3, xmm10
movaps xmm14, xmm3
movaps xmm3, [rsp+0x10]
paddq xmm14, xmm13
pmuludq xmm3, xmm9
movaps xmm13, xmm3
movaps xmm3, xmm0
paddq xmm13, xmm14
movaps xmm14, xmm13
pmuludq xmm3, xmm8
paddq xmm14, xmm3
movaps [rsp+0x200], xmm14
movaps xmm14, [rsp+0x30]
pslld xmm14, 0x1
movaps xmm13, xmm14
movaps xmm14, xmm15
movaps xmm3, xmm13
movaps [rsp+0x140], xmm13
pmuludq xmm14, xmm2
pmuludq xmm3, xmm12
movaps xmm13, xmm3
paddq xmm13, xmm14
movaps xmm3, [rsp]
pmuludq xmm3, xmm11
movaps xmm14, xmm3
movaps xmm3, [rsp+0xb0]
paddq xmm14, xmm13
pmuludq xmm3, xmm10
movaps xmm13, xmm3
movaps xmm3, xmm1
paddq xmm13, xmm14
pmuludq xmm3, xmm9
movaps xmm14, xmm3
movaps xmm3, [rsp+0x40]
paddq xmm14, xmm13
pmuludq xmm3, xmm8
movaps xmm13, xmm3
movaps xmm3, xmm0
paddq xmm13, xmm14
pmuludq xmm3, xmm7
paddq xmm13, xmm3
movaps xmm3, [rsp+0x70]
movaps [rsp+0x210], xmm13
pmuludq xmm3, xmm2
movaps xmm13, xmm3
movaps xmm3, xmm15
pmuludq xmm3, xmm12
movaps xmm14, xmm3
movaps xmm3, [rsp+0x30]
paddq xmm14, xmm13
pmuludq xmm3, xmm11
movaps xmm13, xmm3
movaps xmm3, [rsp]
paddq xmm13, xmm14
pmuludq xmm3, xmm10
movaps xmm14, xmm3
movaps xmm3, [rsp+0x20]
paddq xmm14, xmm13
pmuludq xmm3, xmm9
movaps xmm13, xmm3
movaps xmm3, xmm1
paddq xmm13, xmm14
pmuludq xmm3, xmm8
movaps xmm14, xmm3
movaps xmm3, [rsp+0x10]
paddq xmm14, xmm13
pmuludq xmm3, xmm7
movaps xmm13, xmm3
movaps xmm3, xmm0
paddq xmm13, xmm14
movaps xmm14, xmm13
pmuludq xmm3, xmm6
paddq xmm14, xmm3
movaps xmm3, [rsp+0x70]
movaps [rsp+0x220], xmm14
pslld xmm3, 0x1
movaps [rsp+0x1e0], xmm3
pmuludq xmm3, xmm12
movaps xmm13, xmm3
movaps xmm3, xmm15
movaps xmm14, [rsp+0xa0]
pmuludq xmm3, xmm11
pmuludq xmm14, xmm2
paddq xmm13, xmm14
movaps xmm14, xmm3
movaps xmm3, [rsp+0x140]
pmuludq xmm2, [rsp+0x130]
paddq xmm14, xmm13
pmuludq xmm3, xmm10
movaps xmm13, xmm3
movaps xmm3, [rsp]
paddq xmm13, xmm14
pmuludq xmm3, xmm9
movaps xmm14, xmm3
movaps xmm3, [rsp+0xb0]
paddq xmm14, xmm13
pmuludq xmm3, xmm8
movaps xmm13, xmm3
movaps xmm3, xmm1
paddq xmm13, xmm14
pmuludq xmm3, xmm7
movaps xmm14, xmm3
movaps xmm3, [rsp+0x40]
paddq xmm14, xmm13
pmuludq xmm3, xmm6
movaps xmm13, xmm3
movaps xmm3, xmm0
paddq xmm13, xmm14
movaps xmm14, [rsp+0x60]
pmuludq xmm3, xmm5
movaps xmm15, xmm3
movaps xmm3, [rsp+0xa0]
paddq xmm15, xmm13
pmuludq xmm3, xmm12
movaps xmm13, xmm3
movaps xmm3, xmm14
paddq xmm13, xmm2
movaps xmm2, [rsp+0x70]
pmuludq xmm3, xmm10
pmuludq xmm2, xmm11
paddq xmm2, xmm13
movaps xmm13, xmm3
movaps xmm3, [rsp]
paddq xmm13, xmm2
movaps xmm2, [rsp+0x30]
pmuludq xmm3, xmm8
pmuludq xmm2, xmm9
paddq xmm2, xmm13
movaps xmm13, xmm3
movaps xmm3, xmm1
paddq xmm13, xmm2
movaps xmm2, [rsp+0x20]
pmuludq xmm3, xmm6
pmuludq xmm2, xmm7
paddq xmm2, xmm13
movaps xmm13, xmm3
movaps xmm3, xmm0
paddq xmm13, xmm2
movaps xmm2, [rsp+0x10]
pmuludq xmm3, xmm4
pmuludq xmm2, xmm5
paddq xmm2, xmm13
paddq xmm2, xmm3
movaps [rsp+0x230], xmm2
movaps xmm13, xmm1
pmuludq xmm13, [ed25519$packednineteen]
movaps [rsp+0xf0], xmm13
movaps xmm2, [rsp+0x10]
pmuludq xmm2, [ed25519$packednineteen]
pslld xmm2, 0x1
movaps [rsp+0x190], xmm2
movaps xmm2, [rsp+0x20]
movaps xmm13, [rsp]
pmuludq xmm2, [ed25519$packednineteen]
movaps [rsp+0x1a0], xmm2
pslld xmm2, 0x1
pmuludq xmm13, [ed25519$packednineteen]
movaps [rsp+0x100], xmm2
movaps [rsp+0xc0], xmm13
movaps xmm2, [rsp+0x30]
pmuludq xmm2, [ed25519$packednineteen]
movaps xmm13, xmm2
movaps xmm2, xmm14
movaps xmm3, [rsp+0xa0]
movaps xmm14, xmm13
movaps [rsp+0x110], xmm13
pmuludq xmm2, [ed25519$packednineteen]
pmuludq xmm3, [ed25519$packednineteen]
pslld xmm14, 0x1
movaps [rsp+0x80], xmm14
movaps [rsp+0x120], xmm2
movaps xmm2, xmm3
movaps xmm13, [rsp+0x70]
pmuludq xmm13, [ed25519$packednineteen]
movaps [rsp+0xd0], xmm13
movaps xmm14, xmm13
pslld xmm14, 0x1
movaps [rsp+0x50], xmm14
movaps xmm13, [rsp+0x130]
movaps xmm3, [rsp+0x190]
pmuludq xmm13, [ed25519$packednineteen]
movaps xmm14, xmm13
pmuludq xmm3, xmm4
movaps [rsp+0xe0], xmm13
pslld xmm14, 0x1
movaps [rsp+0x90], xmm14
movaps xmm14, xmm3
pmuludq xmm12, [rsp+0x90]
movaps xmm3, [rsp+0xf0]
pmuludq xmm3, xmm5
movaps xmm13, xmm3
movaps xmm3, [rsp+0x100]
paddq xmm13, xmm14
pmuludq xmm3, xmm6
movaps xmm14, xmm3
movaps xmm3, [rsp+0xc0]
paddq xmm14, xmm13
pmuludq xmm3, xmm7
movaps xmm13, xmm3
movaps xmm3, [rsp+0x80]
paddq xmm13, xmm14
pmuludq xmm3, xmm8
movaps xmm14, xmm3
movaps xmm3, [rsp+0x120]
paddq xmm14, xmm13
pmuludq xmm3, xmm9
movaps xmm13, xmm3
movaps xmm3, [rsp+0x50]
paddq xmm13, xmm14
pmuludq xmm3, xmm10
movaps xmm14, xmm3
movaps xmm3, xmm2
paddq xmm14, xmm13
pmuludq xmm3, xmm11
movaps xmm13, xmm3
paddq xmm13, xmm14
paddq xmm12, xmm13
paddq xmm12, [rsp+0x150]
movaps [rsp+0x150], xmm12
pmuludq xmm11, [rsp+0xe0]
movaps xmm3, [rsp+0xf0]
pmuludq xmm3, xmm4
movaps xmm12, xmm3
movaps xmm3, [rsp+0x1a0]
pmuludq xmm3, xmm5
movaps xmm13, xmm3
movaps xmm3, [rsp+0xc0]
paddq xmm13, xmm12
movaps xmm14, [rsp+0x120]
pmuludq xmm3, xmm6
movaps xmm12, xmm3
movaps xmm3, [rsp+0x110]
paddq xmm12, xmm13
pmuludq xmm3, xmm7
movaps xmm13, xmm3
movaps xmm3, xmm14
paddq xmm13, xmm12
pmuludq xmm3, xmm8
movaps xmm12, xmm3
movaps xmm3, [rsp+0xd0]
paddq xmm12, xmm13
pmuludq xmm3, xmm9
movaps xmm13, xmm3
movaps xmm3, xmm2
paddq xmm13, xmm12
pmuludq xmm3, xmm10
movaps xmm12, xmm3
movaps xmm3, [rsp+0x160]
paddq xmm12, xmm13
paddq xmm11, xmm12
movaps xmm13, xmm14
paddq xmm3, xmm11
movaps [rsp+0x160], xmm3
movaps xmm3, [rsp+0x100]
pmuludq xmm3, xmm4
movaps xmm12, xmm3
movaps xmm3, [rsp+0xc0]
pmuludq xmm3, xmm5
movaps xmm11, xmm3
movaps xmm3, [rsp+0x80]
paddq xmm11, xmm12
pmuludq xmm3, xmm6
movaps xmm12, xmm3
movaps xmm3, xmm14
movaps xmm14, [rsp+0x90]
paddq xmm12, xmm11
pmuludq xmm3, xmm7
movaps xmm11, xmm3
pmuludq xmm10, xmm14
movaps xmm3, [rsp+0x50]
paddq xmm11, xmm12
pmuludq xmm3, xmm8
movaps xmm12, xmm3
movaps xmm3, xmm2
paddq xmm12, xmm11
pmuludq xmm3, xmm9
movaps xmm11, xmm3
movaps xmm3, [rsp+0x110]
paddq xmm11, xmm12
paddq xmm10, xmm11
paddq xmm10, [rsp+0x170]
pmuludq xmm3, xmm5
movaps [rsp+0x170], xmm10
movaps xmm11, xmm3
movaps xmm12, xmm13
movaps xmm10, [rsp+0xc0]
pmuludq xmm10, xmm4
paddq xmm11, xmm10
movaps xmm10, xmm13
movaps xmm13, [rsp+0xd0]
pmuludq xmm10, xmm6
paddq xmm10, xmm11
movaps xmm3, xmm13
pmuludq xmm3, xmm7
movaps xmm11, xmm3
movaps xmm3, xmm12
paddq xmm11, xmm10
movaps xmm10, xmm2
pmuludq xmm3, xmm4
pmuludq xmm10, xmm8
paddq xmm10, xmm11
movaps xmm11, [rsp+0xe0]
pmuludq xmm8, xmm14
pmuludq xmm9, xmm11
paddq xmm9, xmm10
movaps xmm10, [rsp+0x80]
paddq xmm9, [rsp+0x180]
movaps [rsp+0x180], xmm9
pmuludq xmm10, xmm4
movaps xmm9, xmm12
pmuludq xmm9, xmm5
paddq xmm9, xmm10
movaps xmm10, [rsp+0x50]
pmuludq xmm10, xmm6
paddq xmm10, xmm9
movaps xmm9, xmm2
pmuludq xmm9, xmm7
paddq xmm9, xmm10
paddq xmm8, xmm9
movaps xmm9, [rsp+0x1f0]
pmuludq xmm7, xmm11
movaps xmm10, xmm14
paddq xmm9, xmm8
movaps xmm14, xmm9
movaps xmm9, xmm13
pmuludq xmm9, xmm5
paddq xmm9, xmm3
movaps xmm3, xmm2
pmuludq xmm3, xmm6
movaps xmm8, xmm3
pmuludq xmm6, xmm10
movaps xmm3, [rsp+0x50]
paddq xmm8, xmm9
paddq xmm7, xmm8
paddq xmm7, [rsp+0x200]
pmuludq xmm3, xmm4
movaps xmm8, xmm3
movaps xmm3, xmm2
movaps xmm12, xmm7
pmuludq xmm3, xmm5
movaps xmm7, xmm3
pmuludq xmm5, [rsp+0xe0]
movaps xmm3, xmm2
paddq xmm7, xmm8
paddq xmm6, xmm7
paddq xmm6, [rsp+0x210]
pmuludq xmm3, xmm4
pmuludq xmm4, xmm10
movaps xmm10, [rsp+0x150]
paddq xmm5, xmm3
paddq xmm5, [rsp+0x220]
movaps xmm3, xmm5
movaps xmm8, xmm10
paddq xmm15, xmm4
movaps xmm13, xmm6
psrlq xmm8, 0x1a
movaps xmm5, xmm8
movaps xmm8, xmm14
psrlq xmm8, 0x1a
movaps xmm4, xmm8
movaps xmm8, [ed25519$packedmask26]
pand xmm8, xmm10
movaps xmm10, xmm4
movaps xmm7, xmm8
paddq xmm10, xmm12
movaps xmm8, [ed25519$packedmask26]
pand xmm8, xmm14
movaps xmm6, xmm8
movaps xmm8, [rsp+0x160]
paddq xmm8, xmm5
movaps xmm5, xmm8
movaps xmm9, xmm8
movaps xmm8, xmm10
pand xmm10, [ed25519$packedmask25]
psrlq xmm9, 0x19
paddq xmm9, [rsp+0x170]
psrlq xmm8, 0x19
paddq xmm8, xmm13
movaps xmm14, xmm8
movaps xmm8, xmm9
pand xmm5, [ed25519$packedmask25]
movaps xmm4, xmm10
psrlq xmm8, 0x1a
movaps xmm10, xmm9
movaps xmm9, xmm8
movaps xmm8, xmm14
pand xmm10, [ed25519$packedmask26]
paddq xmm9, [rsp+0x180]
psrlq xmm8, 0x1a
paddq xmm8, xmm3
movaps xmm13, xmm10
movaps xmm10, [ed25519$packedmask26]
pand xmm10, xmm14
movaps xmm14, xmm8
movaps xmm8, xmm9
movaps xmm11, xmm10
psrlq xmm8, 0x19
movaps xmm10, xmm9
movaps xmm9, xmm8
movaps xmm8, xmm14
pand xmm10, [ed25519$packedmask25]
paddq xmm6, xmm9
psrlq xmm8, 0x19
movaps xmm9, [ed25519$packedmask26]
paddq xmm15, xmm8
movaps xmm8, xmm15
pand xmm9, xmm15
psrlq xmm8, 0x1a
paddq xmm8, [rsp+0x230]
movaps xmm15, xmm8
movaps xmm12, xmm10
movaps xmm10, [ed25519$packedmask25]
psrlq xmm8, 0x19
pand xmm10, xmm14
movaps xmm14, xmm8
movaps xmm8, [ed25519$packedmask25]
pmuludq xmm14, [ed25519$packednineteen]
paddq xmm7, xmm14
movaps xmm3, xmm7
pand xmm8, xmm15
psrlq xmm3, 0x1a
movaps xmm15, xmm3
movaps xmm3, xmm6
pand xmm7, [ed25519$packedmask26]
psrlq xmm3, 0x1a
paddq xmm4, xmm3
movaps xmm3, xmm13
paddq xmm5, xmm15
pand xmm6, [ed25519$packedmask26]
punpckldq xmm3, xmm12
punpckhdq xmm13, xmm12
movaps xmm14, xmm3
movaps xmm3, xmm7
punpckhdq xmm7, xmm5
punpckldq xmm3, xmm5
punpcklqdq xmm7, xmm13
movaps xmm15, xmm3
movaps xmm3, xmm11
punpckhdq xmm11, xmm10
punpcklqdq xmm15, xmm14
punpckldq xmm3, xmm10
movaps [rbx], xmm15
movaps xmm14, xmm3
movaps xmm3, xmm6
punpckhdq xmm6, xmm4
movaps [rbx+0x60], xmm7
punpckldq xmm3, xmm4
punpcklqdq xmm6, xmm11
movaps xmm15, xmm3
movaps xmm3, xmm9
punpckhdq xmm9, xmm8
movaps [rbx+0x70], xmm6
punpckldq xmm3, xmm8
punpcklqdq xmm15, xmm14
movaps [rbx+0x80], xmm9
movaps [rbx+0x20], xmm3
movaps xmm3, xmm0
movaps [rbx+0x10], xmm15
movaps xmm6, [rsp+0x1b0]
pshufd xmm13, xmm6, 0x0
pshufd xmm12, xmm6, 0x55
movaps xmm14, [rsp+0x10]
pshufd xmm11, xmm6, 0xaa
pmuludq xmm3, xmm13
movaps [rsp+0x150], xmm3
pmuludq xmm14, xmm13
movaps xmm3, xmm0
pshufd xmm10, xmm6, 0xff
pmuludq xmm3, xmm12
paddq xmm14, xmm3
movaps xmm3, xmm1
movaps [rsp+0x160], xmm14
pmuludq xmm3, xmm13
movaps xmm14, [rsp+0x40]
pmuludq xmm14, xmm12
paddq xmm14, xmm3
movaps xmm3, xmm0
movaps xmm4, [rsp+0x1c0]
pmuludq xmm3, xmm11
paddq xmm14, xmm3
movaps xmm3, xmm1
movaps [rsp+0x170], xmm14
pmuludq xmm3, xmm12
movaps xmm15, xmm3
movaps xmm3, xmm0
pshufd xmm9, xmm4, 0x0
pshufd xmm8, xmm4, 0x55
movaps xmm14, [rsp+0x20]
pmuludq xmm3, xmm10
pshufd xmm7, xmm4, 0xaa
pshufd xmm6, xmm4, 0xff
pmuludq xmm14, xmm13
paddq xmm15, xmm14
movaps xmm14, [rsp+0x10]
pmuludq xmm14, xmm11
paddq xmm14, xmm15
movaps xmm15, xmm14
movaps xmm14, [rsp+0xb0]
paddq xmm15, xmm3
movaps xmm3, [rsp]
pmuludq xmm14, xmm12
pmuludq xmm3, xmm13
paddq xmm14, xmm3
movaps xmm3, xmm1
movaps [rsp+0x180], xmm15
pmuludq xmm3, xmm11
movaps xmm15, xmm3
movaps xmm3, xmm0
paddq xmm15, xmm14
movaps xmm14, [rsp+0x40]
pmuludq xmm3, xmm9
pmuludq xmm14, xmm10
paddq xmm14, xmm15
paddq xmm14, xmm3
movaps xmm3, [rsp]
movaps [rsp+0x1b0], xmm14
pmuludq xmm3, xmm12
movaps xmm15, xmm3
movaps xmm3, xmm1
movaps xmm14, [rsp+0x30]
pmuludq xmm3, xmm10
pmuludq xmm14, xmm13
paddq xmm15, xmm14
movaps xmm14, [rsp+0x20]
pmuludq xmm14, xmm11
paddq xmm14, xmm15
movaps xmm15, xmm3
movaps xmm3, xmm0
movaps xmm4, [rsp+0x1d0]
paddq xmm15, xmm14
movaps xmm14, [rsp+0x10]
pmuludq xmm3, xmm8
pshufd xmm5, xmm4, 0x0
pmuludq xmm14, xmm9
paddq xmm14, xmm15
movaps xmm15, xmm14
movaps xmm14, [rsp+0x140]
pshufd xmm4, xmm4, 0x55
paddq xmm15, xmm3
movaps xmm3, [rsp+0x60]
pmuludq xmm14, xmm12
pmuludq xmm3, xmm13
paddq xmm14, xmm3
movaps xmm3, [rsp]
movaps [rsp+0x1c0], xmm15
pmuludq xmm3, xmm11
movaps xmm15, xmm3
movaps xmm3, xmm1
paddq xmm15, xmm14
movaps xmm14, [rsp+0xb0]
pmuludq xmm3, xmm9
pmuludq xmm14, xmm10
paddq xmm14, xmm15
movaps xmm15, xmm3
movaps xmm3, xmm0
paddq xmm15, xmm14
movaps xmm14, [rsp+0x40]
pmuludq xmm3, xmm7
pmuludq xmm14, xmm8
paddq xmm14, xmm15
paddq xmm14, xmm3
movaps xmm3, [rsp+0x60]
movaps [rsp+0x1d0], xmm14
pmuludq xmm3, xmm12
movaps xmm15, xmm3
movaps xmm14, [rsp+0x70]
movaps xmm3, [rsp]
pmuludq xmm14, xmm13
paddq xmm15, xmm14
movaps xmm14, [rsp+0x30]
pmuludq xmm3, xmm10
pmuludq xmm14, xmm11
paddq xmm14, xmm15
movaps xmm15, xmm3
movaps xmm3, xmm1
paddq xmm15, xmm14
movaps xmm14, [rsp+0x20]
pmuludq xmm3, xmm8
pmuludq xmm14, xmm9
paddq xmm14, xmm15
movaps xmm15, xmm3
movaps xmm3, xmm0
paddq xmm15, xmm14
movaps xmm14, [rsp+0x10]
pmuludq xmm3, xmm6
pmuludq xmm14, xmm7
paddq xmm14, xmm15
paddq xmm14, xmm3
movaps [rsp+0x1f0], xmm14
movaps xmm3, [rsp+0x1e0]
movaps xmm14, [rsp+0xa0]
pmuludq xmm3, xmm12
movaps xmm15, xmm3
pmuludq xmm14, xmm13
movaps xmm3, [rsp+0x140]
pmuludq xmm13, [rsp+0x130]
paddq xmm15, xmm14
movaps xmm14, [rsp+0x60]
pmuludq xmm3, xmm10
pmuludq xmm14, xmm11
paddq xmm14, xmm15
movaps xmm15, xmm3
movaps xmm3, [rsp+0xb0]
paddq xmm15, xmm14
movaps xmm14, [rsp]
pmuludq xmm3, xmm8
pmuludq xmm14, xmm9
paddq xmm14, xmm15
movaps xmm15, xmm3
movaps xmm3, [rsp+0x40]
paddq xmm15, xmm14
movaps xmm14, xmm1
pmuludq xmm1, xmm6
pmuludq xmm3, xmm6
pmuludq xmm14, xmm7
paddq xmm14, xmm15
movaps xmm15, xmm3
movaps xmm3, [rsp+0xa0]
paddq xmm15, xmm14
movaps xmm14, xmm0
pmuludq xmm0, xmm4
pmuludq xmm3, xmm12
pmuludq xmm12, [rsp+0x90]
pmuludq xmm14, xmm5
paddq xmm14, xmm15
movaps xmm15, xmm3
movaps xmm3, [rsp+0x70]
paddq xmm15, xmm13
pmuludq xmm3, xmm11
movaps xmm13, xmm3
movaps xmm3, [rsp+0x60]
paddq xmm13, xmm15
pmuludq xmm3, xmm10
movaps xmm15, xmm3
movaps xmm3, [rsp+0x30]
paddq xmm15, xmm13
pmuludq xmm3, xmm9
movaps xmm13, xmm3
movaps xmm3, [rsp]
paddq xmm13, xmm15
movaps xmm15, [rsp+0x20]
pmuludq xmm3, xmm8
paddq xmm3, xmm13
pmuludq xmm15, xmm7
movaps xmm13, xmm15
movaps xmm15, [rsp+0x120]
paddq xmm13, xmm3
paddq xmm1, xmm13
movaps xmm3, [rsp+0x10]
pmuludq xmm3, xmm5
paddq xmm3, xmm1
movaps xmm1, [rsp+0x190]
paddq xmm0, xmm3
pmuludq xmm1, xmm4
movaps xmm3, xmm1
movaps xmm1, [rsp+0xf0]
movaps xmm13, [rsp+0xc0]
pmuludq xmm1, xmm5
paddq xmm1, xmm3
movaps xmm3, [rsp+0x100]
pmuludq xmm3, xmm6
paddq xmm3, xmm1
movaps xmm1, xmm13
pmuludq xmm1, xmm7
paddq xmm1, xmm3
movaps xmm3, [rsp+0x80]
pmuludq xmm3, xmm8
paddq xmm3, xmm1
movaps xmm1, xmm15
pmuludq xmm1, xmm9
paddq xmm1, xmm3
movaps xmm3, [rsp+0x50]
pmuludq xmm3, xmm10
paddq xmm3, xmm1
movaps xmm1, xmm2
pmuludq xmm1, xmm11
paddq xmm1, xmm3
movaps xmm3, [rsp+0x1a0]
paddq xmm12, xmm1
paddq xmm12, [rsp+0x150]
movaps xmm1, [rsp+0xf0]
pmuludq xmm3, xmm5
pmuludq xmm1, xmm4
paddq xmm3, xmm1
movaps xmm1, xmm13
movaps [rsp+0x150], xmm12
pmuludq xmm1, xmm6
paddq xmm1, xmm3
movaps xmm12, xmm15
movaps xmm3, [rsp+0x110]
pmuludq xmm3, xmm7
paddq xmm3, xmm1
movaps xmm1, xmm15
movaps xmm15, [rsp+0xe0]
pmuludq xmm1, xmm8
paddq xmm1, xmm3
movaps xmm3, [rsp+0xd0]
pmuludq xmm11, xmm15
pmuludq xmm3, xmm9
paddq xmm3, xmm1
movaps xmm1, xmm2
pmuludq xmm1, xmm10
paddq xmm1, xmm3
movaps xmm3, [rsp+0x100]
paddq xmm11, xmm1
movaps xmm1, xmm13
paddq xmm11, [rsp+0x160]
pmuludq xmm3, xmm4
movaps [rsp+0x160], xmm11
pmuludq xmm1, xmm5
paddq xmm1, xmm3
movaps xmm11, xmm13
movaps xmm3, [rsp+0x80]
pmuludq xmm3, xmm6
paddq xmm3, xmm1
movaps xmm1, xmm12
movaps xmm13, [rsp+0x90]
pmuludq xmm1, xmm7
paddq xmm1, xmm3
movaps xmm3, [rsp+0x50]
pmuludq xmm10, xmm13
pmuludq xmm3, xmm8
paddq xmm3, xmm1
movaps xmm1, xmm2
pmuludq xmm1, xmm9
paddq xmm1, xmm3
paddq xmm10, xmm1
movaps xmm1, [rsp+0x170]
pmuludq xmm9, xmm15
paddq xmm1, xmm10
movaps [rsp+0x170], xmm1
movaps xmm1, xmm11
movaps xmm11, xmm15
pmuludq xmm1, xmm4
movaps xmm3, [rsp+0x110]
movaps xmm10, [rsp+0xd0]
pmuludq xmm3, xmm5
paddq xmm3, xmm1
movaps xmm1, xmm12
movaps xmm15, [rsp+0x50]
pmuludq xmm1, xmm6
paddq xmm1, xmm3
movaps xmm3, xmm10
pmuludq xmm3, xmm7
paddq xmm3, xmm1
movaps xmm1, xmm2
pmuludq xmm1, xmm8
paddq xmm1, xmm3
movaps xmm3, [rsp+0x80]
paddq xmm9, xmm1
movaps xmm1, xmm12
pmuludq xmm8, xmm13
pmuludq xmm3, xmm4
paddq xmm9, [rsp+0x180]
movaps [rsp+0x180], xmm9
pmuludq xmm1, xmm5
paddq xmm1, xmm3
movaps xmm3, xmm15
movaps xmm9, xmm13
pmuludq xmm3, xmm6
paddq xmm3, xmm1
movaps xmm1, xmm2
pmuludq xmm1, xmm7
paddq xmm1, xmm3
movaps xmm3, xmm10
paddq xmm8, xmm1
movaps xmm1, xmm12
pmuludq xmm7, xmm11
pmuludq xmm3, xmm5
paddq xmm8, [rsp+0x1b0]
pmuludq xmm1, xmm4
paddq xmm3, xmm1
movaps xmm1, xmm2
pmuludq xmm1, xmm6
paddq xmm1, xmm3
paddq xmm7, xmm1
movaps xmm1, xmm2
pmuludq xmm2, xmm4
pmuludq xmm6, xmm9
movaps xmm3, xmm15
paddq xmm7, [rsp+0x1c0]
pmuludq xmm1, xmm5
pmuludq xmm5, xmm11
paddq xmm5, xmm2
movaps xmm2, [rsp+0x150]
pmuludq xmm3, xmm4
paddq xmm1, xmm3
paddq xmm6, xmm1
movaps xmm1, xmm8
paddq xmm6, [rsp+0x1d0]
movaps xmm3, xmm2
paddq xmm5, [rsp+0x1f0]
pmuludq xmm4, xmm9
movaps xmm10, xmm5
movaps xmm15, xmm6
paddq xmm14, xmm4
psrlq xmm3, 0x1a
movaps xmm4, [ed25519$packedmask26]
paddq xmm3, [rsp+0x160]
psrlq xmm1, 0x1a
movaps xmm6, xmm3
paddq xmm1, xmm7
movaps xmm5, xmm3
movaps xmm3, xmm1
pand xmm4, xmm8
psrlq xmm3, 0x19
paddq xmm3, xmm15
movaps xmm8, xmm3
psrlq xmm5, 0x19
paddq xmm5, [rsp+0x170]
movaps xmm3, xmm5
movaps xmm7, xmm5
movaps xmm5, xmm8
pand xmm2, [ed25519$packedmask26]
psrlq xmm5, 0x1a
paddq xmm5, xmm10
movaps xmm10, xmm5
psrlq xmm7, 0x1a
paddq xmm7, [rsp+0x180]
movaps xmm5, xmm7
movaps xmm9, xmm7
movaps xmm7, xmm10
pand xmm3, [ed25519$packedmask26]
psrlq xmm7, 0x19
paddq xmm14, xmm7
movaps xmm7, xmm14
pand xmm6, [ed25519$packedmask25]
psrlq xmm9, 0x19
paddq xmm4, xmm9
psrlq xmm7, 0x1a
paddq xmm0, xmm7
movaps xmm7, xmm0
pand xmm1, [ed25519$packedmask25]
psrlq xmm7, 0x19
pmuludq xmm7, [ed25519$packednineteen]
paddq xmm2, xmm7
movaps xmm9, xmm2
pand xmm2, [ed25519$packedmask26]
movaps xmm7, xmm4
psrlq xmm9, 0x1a
paddq xmm6, xmm9
movaps xmm9, xmm3
pand xmm5, [ed25519$packedmask25]
psrlq xmm7, 0x1a
paddq xmm1, xmm7
pand xmm8, [ed25519$packedmask26]
movaps xmm7, xmm2
pand xmm4, [ed25519$packedmask26]
punpckldq xmm9, xmm5
punpckldq xmm7, xmm6
pand xmm10, [ed25519$packedmask25]
punpcklqdq xmm7, xmm9
movaps xmm9, xmm8
pand xmm14, [ed25519$packedmask26]
movaps [rbx+0x90], xmm7
movaps xmm7, xmm4
punpckldq xmm9, xmm10
punpckldq xmm7, xmm1
pand xmm0, [ed25519$packedmask25]
punpcklqdq xmm7, xmm9
punpckhdq xmm3, xmm5
punpckhdq xmm2, xmm6
punpckhdq xmm8, xmm10
punpckhdq xmm4, xmm1
movaps [rbx+0xa0], xmm7
movaps xmm7, xmm14
punpcklqdq xmm2, xmm3
punpckldq xmm7, xmm0
punpcklqdq xmm4, xmm8
punpckhdq xmm14, xmm0
movaps [rbx+0xb0], xmm7
movaps [rbx+0x30], xmm2
movaps [rbx+0x40], xmm4
movaps [rbx+0x50], xmm14
add rsp, 0x270
pop rbx
ret
end if
if used ed25519$publickey | used ed25519$sign | used ed25519$verify | defined include_everything
; "private" helper routines for both public functions:
falign
ed25519$p1p1_to_partial:
push rbp
lea rdx,[rsi+0x60]
mov rbp,rdi
lea rdi,[rdi+0x30]
push rbx
mov rbx,rsi
lea rsi,[rsi+0x30]
sub rsp, 0x138
call curve25519$mul
movdqa xmm5, [rbx+0x10]
movdqa xmm1, [rbx+0x70]
movdqa xmm9, xmm5
punpckhqdq xmm5, xmm1
movdqa xmm15, [rbx]
punpcklqdq xmm9, xmm1
movdqa xmm1, [rbx+0x90]
movdqa xmm0, xmm15
movdqa xmm7, xmm5
pshufd xmm6, xmm1, 0xaa
movdqa xmm4, xmm9
movdqa xmm2, [rbx+0x60]
psrlq xmm7, 0x20
psrlq xmm4, 0x20
movdqa [rsp], xmm6
punpcklqdq xmm0, xmm2
movdqa [rsp+0x70], xmm4
punpckhqdq xmm15, xmm2
movdqa xmm12, xmm0
movdqa [rsp+0x80], xmm7
pshufd xmm7, xmm1, 0x0
psrlq xmm12, 0x20
movdqa xmm14, xmm15
movdqa xmm6, [rbx+0xa0]
psrlq xmm14, 0x20
movdqa xmm4, [rbx+0x20]
pshufd xmm13, xmm6, 0x0
punpcklqdq xmm4, [rbx+0x80]
pshufd xmm8, xmm6, 0x55
pshufd xmm10, xmm6, 0xaa
pshufd xmm6, xmm6, 0xff
movdqa xmm3, xmm4
movdqa [rsp+0x20], xmm8
psrlq xmm3, 0x20
movdqa xmm2, xmm3
movdqa [rsp+0x40], xmm6
pshufd xmm3, xmm1, 0x55
movdqa xmm8, xmm0
pshufd xmm1, xmm1, 0xff
movdqa [rsp+0x30], xmm10
pmuludq xmm8, xmm7
movdqa xmm10, xmm15
movdqa [rsp+0x90], xmm8
pmuludq xmm10, xmm7
movdqa [rsp+0x10], xmm13
movdqa xmm6, [rbx+0xb0]
pshufd xmm11, xmm6, 0x0
pshufd xmm6, xmm6, 0x55
movdqa [rsp+0x50], xmm11
movdqa xmm11, xmm0
movdqa [rsp+0x60], xmm6
movdqa xmm6, xmm12
pmuludq xmm11, xmm3
pmuludq xmm6, xmm7
paddq xmm6, xmm11
movdqa xmm11, xmm12
movdqa [rsp+0xa0], xmm6
pslld xmm11, 0x1
movdqa xmm6, xmm11
movdqa xmm8, xmm11
movdqa xmm11, xmm0
pmuludq xmm8, xmm3
pmuludq xmm11, [rsp]
paddq xmm8, xmm10
movdqa xmm10, xmm15
paddq xmm8, xmm11
movdqa [rsp+0xb0], xmm8
movdqa xmm8, xmm14
pmuludq xmm10, xmm3
movdqa xmm11, xmm0
pmuludq xmm8, xmm7
paddq xmm10, xmm8
movdqa xmm8, xmm12
pmuludq xmm11, xmm1
pmuludq xmm8, [rsp]
paddq xmm8, xmm10
movdqa xmm10, xmm8
paddq xmm10, xmm11
movdqa xmm11, xmm14
movdqa [rsp+0xc0], xmm10
pslld xmm11, 0x1
movdqa xmm8, xmm11
movdqa xmm11, xmm9
movdqa xmm10, xmm8
pmuludq xmm11, xmm7
pmuludq xmm10, xmm3
paddq xmm10, xmm11
movdqa xmm11, xmm15
pmuludq xmm11, [rsp]
paddq xmm11, xmm10
movdqa xmm10, xmm6
pmuludq xmm10, xmm1
paddq xmm10, xmm11
movdqa xmm11, xmm13
pmuludq xmm11, xmm0
paddq xmm10, xmm11
movdqa xmm11, xmm9
movdqa [rsp+0xe0], xmm10
pmuludq xmm11, xmm3
movdqa xmm10, [rsp+0x70]
pmuludq xmm10, xmm7
paddq xmm11, xmm10
movdqa xmm10, xmm14
pmuludq xmm10, [rsp]
paddq xmm10, xmm11
movdqa xmm11, xmm15
pmuludq xmm11, xmm1
paddq xmm11, xmm10
movdqa xmm10, xmm13
movdqa xmm13, [rsp+0x20]
pmuludq xmm10, xmm12
paddq xmm10, xmm11
movdqa xmm11, xmm10
pmuludq xmm13, xmm0
paddq xmm11, xmm13
movdqa xmm13, [rsp+0x70]
movdqa [rsp+0xf0], xmm11
pslld xmm13, 0x1
movdqa xmm11, xmm5
movdqa xmm10, xmm13
pmuludq xmm13, xmm1
pmuludq xmm11, xmm7
pmuludq xmm10, xmm3
paddq xmm10, xmm11
movdqa xmm11, xmm9
pmuludq xmm11, [rsp]
paddq xmm11, xmm10
movdqa xmm10, xmm8
pmuludq xmm10, xmm1
paddq xmm10, xmm11
movdqa xmm11, [rsp+0x10]
pmuludq xmm11, xmm15
paddq xmm11, xmm10
movdqa xmm10, [rsp+0x20]
pmuludq xmm10, xmm6
paddq xmm10, xmm11
movdqa xmm11, [rsp+0x30]
pmuludq xmm11, xmm0
paddq xmm10, xmm11
movdqa xmm11, xmm5
movdqa [rsp+0x100], xmm10
pmuludq xmm8, [rsp+0x20]
pmuludq xmm6, [rsp+0x40]
pmuludq xmm11, xmm3
movdqa xmm10, [rsp+0x80]
pmuludq xmm10, xmm7
paddq xmm11, xmm10
movdqa xmm10, [rsp+0x70]
pmuludq xmm10, [rsp]
paddq xmm10, xmm11
movdqa xmm11, xmm9
pmuludq xmm11, xmm1
paddq xmm11, xmm10
movdqa xmm10, [rsp+0x10]
pmuludq xmm10, xmm14
paddq xmm10, xmm11
movdqa xmm11, [rsp+0x20]
pmuludq xmm11, xmm15
paddq xmm11, xmm10
movdqa xmm10, [rsp+0x30]
pmuludq xmm10, xmm12
paddq xmm10, xmm11
movdqa xmm11, [rsp+0x40]
pmuludq xmm11, xmm0
paddq xmm10, xmm11
movdqa xmm11, [rsp+0x80]
movdqa [rsp+0x110], xmm10
pslld xmm11, 0x1
pmuludq xmm11, xmm3
movdqa xmm10, xmm4
pmuludq xmm10, xmm7
paddq xmm11, xmm10
movdqa xmm10, xmm5
pmuludq xmm7, xmm2
pmuludq xmm10, [rsp]
paddq xmm10, xmm11
movdqa xmm11, [rsp+0x10]
paddq xmm13, xmm10
movdqa xmm10, xmm11
pmuludq xmm10, xmm9
paddq xmm10, xmm13
movdqa xmm13, [rsp+0x30]
paddq xmm8, xmm10
pmuludq xmm13, xmm15
movdqa xmm10, xmm13
paddq xmm10, xmm8
paddq xmm6, xmm10
movdqa xmm10, [rsp+0x50]
movdqa xmm8, xmm4
movdqa xmm13, xmm10
pmuludq xmm8, xmm3
paddq xmm8, xmm7
movdqa xmm7, xmm5
pmuludq xmm13, xmm0
paddq xmm13, xmm6
movdqa xmm6, [rsp+0x80]
pmuludq xmm7, xmm1
pmuludq xmm0, [rsp+0x60]
pmuludq xmm6, [rsp]
paddq xmm6, xmm8
movdqa xmm8, [rsp+0x70]
paddq xmm7, xmm6
movdqa xmm6, xmm8
pmuludq xmm6, xmm11
paddq xmm6, xmm7
movdqa xmm7, [rsp+0x20]
movdqa xmm11, xmm10
pmuludq xmm7, xmm9
paddq xmm7, xmm6
movdqa xmm6, [rsp+0x30]
pmuludq xmm6, xmm14
paddq xmm6, xmm7
movdqa xmm7, [rsp+0x40]
pmuludq xmm7, xmm15
paddq xmm7, xmm6
movdqa xmm6, xmm10
pmuludq xmm6, xmm12
paddq xmm6, xmm7
movdqa xmm7, xmm6
movdqa xmm6, xmm2
paddq xmm7, xmm0
movdqa xmm0, [ed25519$packednineteen]
pmuludq xmm14, xmm0
movdqa xmm10, xmm14
pmuludq xmm6, xmm0
movdqa [rsp+0x120], xmm7
pmuludq xmm15, xmm0
pmuludq xmm12, xmm0
pslld xmm10, 0x1
movdqa xmm2, xmm6
pslld xmm12, 0x1
movdqa [rsp+0xd0], xmm10
pmuludq xmm12, [rsp+0x60]
pmuludq xmm9, xmm0
movdqa xmm10, xmm8
pslld xmm2, 0x1
pmuludq xmm5, xmm0
pmuludq xmm4, xmm0
pmuludq xmm10, xmm0
movdqa xmm7, xmm10
movdqa xmm8, [rsp+0x80]
pslld xmm7, 0x1
pmuludq xmm8, xmm0
movdqa [rsp+0x70], xmm7
movdqa xmm7, xmm8
pslld xmm7, 0x1
movdqa [rsp+0x80], xmm7
movdqa xmm7, xmm6
movdqa xmm6, xmm2
movdqa xmm2, xmm11
pmuludq xmm2, xmm15
movdqa xmm11, xmm2
pmuludq xmm3, xmm6
movdqa xmm2, [rsp+0x30]
paddq xmm11, xmm12
movdqa xmm12, [rsp+0xd0]
pmuludq xmm2, xmm9
pmuludq xmm12, [rsp+0x40]
paddq xmm12, xmm11
movdqa xmm11, xmm2
movdqa xmm2, [rsp+0x70]
paddq xmm11, xmm12
pmuludq xmm2, [rsp+0x20]
movdqa xmm12, xmm2
movdqa xmm2, [rsp+0x10]
paddq xmm12, xmm11
pmuludq xmm2, xmm5
movdqa xmm11, xmm2
movdqa xmm2, [rsp+0x80]
paddq xmm11, xmm12
pmuludq xmm2, xmm1
movdqa xmm12, xmm2
movdqa xmm2, xmm4
paddq xmm12, xmm11
pmuludq xmm2, [rsp]
movdqa xmm11, xmm2
paddq xmm11, xmm12
paddq xmm3, xmm11
paddq xmm3, [rsp+0x90]
movdqa [rsp+0x90], xmm3
pmuludq xmm15, [rsp+0x60]
pmuludq xmm14, [rsp+0x50]
paddq xmm14, xmm15
movdqa xmm12, [rsp+0x30]
movdqa xmm2, [rsp+0x40]
movdqa xmm15, [rsp+0x20]
pmuludq xmm2, xmm9
movdqa xmm3, xmm2
movdqa xmm2, xmm12
paddq xmm3, xmm14
pmuludq xmm2, xmm10
movdqa xmm14, [rsp+0x10]
movdqa xmm11, xmm2
movdqa xmm2, xmm15
pmuludq xmm10, [rsp+0x50]
paddq xmm11, xmm3
pmuludq xmm2, xmm5
movdqa xmm3, xmm2
movdqa xmm2, xmm14
paddq xmm3, xmm11
pmuludq xmm2, xmm8
movdqa xmm11, xmm2
movdqa xmm2, xmm4
paddq xmm11, xmm3
pmuludq xmm2, xmm1
movdqa xmm3, xmm2
pmuludq xmm1, xmm6
movdqa xmm2, [rsp]
paddq xmm3, xmm11
pmuludq xmm2, xmm7
paddq xmm2, xmm3
paddq xmm2, [rsp+0xa0]
movdqa [rsp+0xa0], xmm2
movdqa xmm2, [rsp+0xd0]
pmuludq xmm2, [rsp+0x60]
movdqa xmm3, xmm2
movdqa xmm2, [rsp+0x50]
movdqa xmm11, [rsp+0x40]
pmuludq xmm2, xmm9
paddq xmm2, xmm3
pmuludq xmm9, [rsp+0x60]
paddq xmm10, xmm9
movdqa xmm9, xmm12
movdqa xmm3, [rsp+0x70]
pmuludq xmm3, xmm11
paddq xmm3, xmm2
movdqa xmm2, xmm12
pmuludq xmm2, xmm5
paddq xmm2, xmm3
movdqa xmm3, [rsp+0x80]
pmuludq xmm3, xmm15
paddq xmm3, xmm2
movdqa xmm2, xmm14
pmuludq xmm2, xmm4
paddq xmm2, xmm3
paddq xmm1, xmm2
movdqa xmm2, xmm12
paddq xmm1, [rsp+0xb0]
movdqa [rsp+0xb0], xmm1
movdqa xmm1, xmm11
pmuludq xmm2, xmm8
movdqa xmm3, xmm15
pmuludq xmm1, xmm5
paddq xmm1, xmm10
paddq xmm2, xmm1
movdqa xmm1, xmm15
movdqa xmm12, [rsp+0x50]
movdqa xmm15, xmm11
pmuludq xmm1, xmm4
paddq xmm1, xmm2
movdqa xmm2, xmm14
movdqa xmm10, [rsp+0x60]
pmuludq xmm8, xmm12
pmuludq xmm2, xmm7
paddq xmm2, xmm1
movdqa xmm1, xmm12
movdqa xmm14, [rsp+0x80]
paddq xmm2, [rsp+0xc0]
pmuludq xmm1, xmm5
pmuludq xmm5, xmm10
paddq xmm8, xmm5
movdqa [rsp+0xc0], xmm2
movdqa xmm5, xmm15
movdqa xmm2, [rsp+0x70]
pmuludq xmm2, xmm10
paddq xmm1, xmm2
movdqa xmm2, xmm14
pmuludq xmm2, xmm11
paddq xmm2, xmm1
movdqa xmm1, xmm9
pmuludq xmm1, xmm4
paddq xmm1, xmm2
movdqa xmm2, xmm3
pmuludq xmm2, xmm6
paddq xmm2, xmm1
movdqa xmm1, xmm15
paddq xmm2, [rsp+0xe0]
movdqa xmm15, [rsp+0xf0]
movdqa xmm11, xmm2
movdqa xmm2, xmm9
pmuludq xmm1, xmm4
paddq xmm1, xmm8
movdqa xmm9, [rsp+0x100]
pmuludq xmm2, xmm7
paddq xmm2, xmm1
movdqa xmm1, xmm12
paddq xmm15, xmm2
movdqa xmm2, xmm14
pmuludq xmm7, xmm12
pmuludq xmm1, xmm4
pmuludq xmm4, xmm10
paddq xmm7, xmm4
pmuludq xmm2, xmm10
paddq xmm1, xmm2
movdqa xmm2, xmm5
movdqa xmm5, [rsp+0x90]
pmuludq xmm2, xmm6
paddq xmm2, xmm1
paddq xmm9, xmm2
movdqa xmm3, xmm5
pmuludq xmm6, xmm10
paddq xmm13, xmm6
movdqa xmm2, xmm11
movdqa xmm4, [rsp+0x110]
psrlq xmm3, 0x1a
paddq xmm3, [rsp+0xa0]
movdqa xmm8, xmm3
psrlq xmm2, 0x1a
paddq xmm2, xmm15
movdqa xmm6, xmm2
paddq xmm4, xmm7
movdqa xmm7, xmm8
movdqa xmm14, xmm4
psrlq xmm6, 0x19
paddq xmm6, xmm9
movdqa xmm10, xmm6
psrlq xmm7, 0x19
paddq xmm7, [rsp+0xb0]
movdqa xmm6, xmm7
movdqa xmm9, xmm7
movdqa xmm7, xmm10
movdqa xmm1, [ed25519$packedmask26]
movdqa xmm4, xmm11
psrlq xmm7, 0x1a
paddq xmm7, xmm14
movdqa xmm12, xmm7
psrlq xmm9, 0x1a
paddq xmm9, [rsp+0xc0]
pand xmm4, xmm1
movdqa xmm7, xmm9
movdqa xmm11, xmm9
movdqa xmm9, xmm12
pand xmm5, xmm1
movdqa xmm3, xmm2
psrlq xmm11, 0x19
paddq xmm4, xmm11
movdqa xmm2, [ed25519$packedmask25]
psrlq xmm9, 0x19
paddq xmm13, xmm9
movdqa xmm11, xmm13
pand xmm6, xmm1
pand xmm3, xmm2
psrlq xmm11, 0x1a
paddq xmm11, [rsp+0x120]
movdqa xmm14, xmm11
psrlq xmm11, 0x19
pmuludq xmm0, xmm11
paddq xmm5, xmm0
movdqa xmm11, xmm5
pand xmm5, xmm1
movdqa xmm0, xmm4
pand xmm7, xmm2
psrlq xmm11, 0x1a
pand xmm8, xmm2
psrlq xmm0, 0x1a
paddq xmm3, xmm0
pand xmm10, xmm1
movdqa xmm0, xmm5
pand xmm13, xmm1
pand xmm1, xmm4
movdqa xmm4, xmm6
paddq xmm8, xmm11
punpckldq xmm0, xmm8
punpckldq xmm4, xmm7
movdqa xmm9, xmm13
pand xmm12, xmm2
punpckhdq xmm6, xmm7
punpcklqdq xmm0, xmm4
movdqa xmm4, xmm10
pand xmm2, xmm14
punpckldq xmm4, xmm12
movdqa [rbp+0x0], xmm0
movdqa xmm0, xmm1
punpckhdq xmm5, xmm8
punpckldq xmm0, xmm3
punpckhdq xmm10, xmm12
punpckhdq xmm1, xmm3
punpcklqdq xmm0, xmm4
punpcklqdq xmm5, xmm6
punpcklqdq xmm1, xmm10
movdqa [rbp+0x10], xmm0
movdqa xmm0, xmm13
punpckhdq xmm9, xmm2
punpckldq xmm0, xmm2
movdqa [rbp+0x60], xmm5
movdqa [rbp+0x20], xmm0
movdqa [rbp+0x70], xmm1
movdqa [rbp+0x80], xmm9
add rsp, 0x138
pop rbx
pop rbp
ret
align 16
ed25519$packed2p0:
dd 0x7ffffda, 0x3fffffe, 0x7fffffe, 0x3fffffe
ed25519$packed2p2:
dd 0x7fffffe, 0x3fffffe, 0x0000000, 0x0000000
ed25519$packed2p1:
dd 0x7fffffe, 0x3fffffe, 0x7fffffe, 0x3fffffe
ed25519$sse2_bot32bitmask:
dd 0xffffffff, 0x00000000, 0xffffffff, 0x00000000
ed25519$packedmask26:
dq 0x3ffffff, 0x3ffffff
ed25519$packedmask25:
dq 0x1ffffff, 0x1ffffff
ed25519$packednineteen:
dq 19, 19
ed25519$packed32packed2p0:
dd 0x7ffffda, 0x7ffffda, 0x3fffffe, 0x3fffffe
ed25519$packed32packed2p1:
dd 0x7fffffe, 0x7fffffe, 0x3fffffe, 0x3fffffe
ed25519$packedmask26262626:
dd 0x3ffffff, 0x3ffffff, 0x3ffffff, 0x3ffffff
ed25519$packedmask25252525:
dd 0x1ffffff, 0x1ffffff, 0x1ffffff, 0x1ffffff
ed25519$packedthirtyeight:
dq 38, 38
ed25519$packed32packed4p0:
dd 0xfffffb4, 0xfffffb4, 0x7fffffc, 0x7fffffc
ed25519$packed32packed4p1:
dd 0xffffffc, 0xffffffc, 0x7fffffc, 0x7fffffc
falign
ed25519$p1p1_to_full:
sub rsp, 0xe0
movdqa xmm0, [rsi+0x90]
movdqa xmm4, [rsi+0x30]
movdqa xmm1, xmm0
movdqa xmm3, [rsi+0xa0]
punpckhqdq xmm0, xmm4
punpcklqdq xmm1, xmm4
movdqa xmm2, [rsi+0x40]
movdqa xmm4, xmm0
movdqa xmm7, xmm1
movdqa xmm6, [rsi+0xb0]
psrlq xmm4, 0x20
psrlq xmm7, 0x20
movdqa [rsp-0x48], xmm7
movdqa xmm7, xmm3
punpckhqdq xmm3, xmm2
punpcklqdq xmm7, xmm2
punpcklqdq xmm6, [rsi+0x50]
movdqa [rsp-0x78], xmm4
movdqa xmm2, xmm3
movdqa xmm4, xmm7
movdqa xmm9, xmm7
psrlq xmm2, 0x20
movdqa [rsp-0x18], xmm2
psrlq xmm4, 0x20
movdqa xmm13, xmm4
movdqa [rsp-0x58], xmm6
movdqa xmm4, xmm6
movdqa [rsp-0x28], xmm9
psrlq xmm4, 0x20
movdqa [rsp-0x38], xmm4
movdqa [rsp-0x68], xmm3
movdqa xmm14, [rsi]
movdqa xmm5, [rsi+0x20]
pshufd xmm6, xmm14, 0x0
pshufd xmm2, xmm5, 0x0
movdqa xmm7, [rsp-0x48]
pshufd xmm5, xmm5, 0x55
pshufd xmm11, xmm14, 0x55
movdqa xmm4, xmm7
pshufd xmm15, xmm14, 0xaa
movdqa [rsp+0x58], xmm5
movdqa xmm5, xmm6
movdqa [rsp+0x8], xmm2
pmuludq xmm5, xmm1
movdqa xmm2, xmm11
movdqa [rsp+0x18], xmm5
movdqa xmm5, xmm7
pmuludq xmm2, xmm1
pshufd xmm14, xmm14, 0xff
pmuludq xmm5, xmm6
paddq xmm2, xmm5
movdqa xmm5, xmm15
movdqa [rsp+0x28], xmm2
movdqa xmm2, xmm11
pmuludq xmm5, xmm1
pslld xmm2, 0x1
pmuludq xmm4, xmm2
paddq xmm4, xmm5
movdqa xmm5, xmm6
movdqa xmm12, [rsi+0x10]
pmuludq xmm5, xmm0
paddq xmm4, xmm5
movdqa xmm5, xmm7
movdqa [rsp+0x38], xmm4
movdqa xmm7, xmm11
pmuludq xmm5, xmm15
movdqa xmm4, xmm14
pshufd xmm8, xmm12, 0x0
pmuludq xmm7, xmm0
pshufd xmm10, xmm12, 0x55
pmuludq xmm4, xmm1
paddq xmm5, xmm4
movdqa xmm4, xmm7
movdqa xmm7, [rsp-0x78]
pshufd xmm3, xmm12, 0xaa
paddq xmm4, xmm5
pshufd xmm12, xmm12, 0xff
pmuludq xmm7, xmm6
paddq xmm4, xmm7
movdqa xmm7, xmm14
movdqa [rsp+0x48], xmm4
pslld xmm7, 0x1
movdqa xmm4, xmm7
movdqa xmm7, xmm8
movdqa xmm5, [rsp-0x48]
pmuludq xmm7, xmm1
pmuludq xmm5, xmm4
paddq xmm5, xmm7
movdqa xmm7, xmm15
pmuludq xmm7, xmm0
paddq xmm7, xmm5
movdqa xmm5, [rsp-0x78]
pmuludq xmm5, xmm2
paddq xmm5, xmm7
movdqa xmm7, xmm9
pmuludq xmm7, xmm6
paddq xmm5, xmm7
movdqa xmm7, xmm10
movdqa [rsp+0x78], xmm5
pmuludq xmm7, xmm1
movdqa xmm5, xmm7
movdqa xmm7, [rsp-0x48]
pmuludq xmm7, xmm8
paddq xmm7, xmm5
movdqa xmm5, xmm14
pmuludq xmm5, xmm0
paddq xmm5, xmm7
movdqa xmm7, [rsp-0x78]
pmuludq xmm7, xmm15
paddq xmm7, xmm5
movdqa xmm5, xmm9
pmuludq xmm5, xmm11
paddq xmm5, xmm7
movdqa xmm7, xmm13
movdqa xmm9, xmm5
movdqa xmm5, [rsp-0x48]
pmuludq xmm7, xmm6
paddq xmm9, xmm7
movdqa xmm7, xmm10
movdqa [rsp+0x88], xmm9
pslld xmm7, 0x1
movdqa xmm9, xmm7
movdqa xmm7, xmm3
pmuludq xmm5, xmm9
pmuludq xmm7, xmm1
paddq xmm5, xmm7
movdqa xmm7, xmm8
pmuludq xmm7, xmm0
paddq xmm7, xmm5
movdqa xmm5, [rsp-0x78]
pmuludq xmm5, xmm4
paddq xmm5, xmm7
movdqa xmm7, [rsp-0x28]
pmuludq xmm4, xmm13
pmuludq xmm7, xmm15
paddq xmm7, xmm5
movdqa xmm5, xmm13
pmuludq xmm5, xmm2
paddq xmm5, xmm7
movdqa xmm7, [rsp-0x68]
pmuludq xmm7, xmm6
paddq xmm5, xmm7
movdqa xmm7, xmm12
movdqa [rsp+0x98], xmm5
pmuludq xmm9, [rsp-0x78]
pmuludq xmm7, xmm1
movdqa xmm5, xmm7
movdqa xmm7, [rsp-0x48]
pmuludq xmm7, xmm3
paddq xmm7, xmm5
movdqa xmm5, xmm10
pmuludq xmm5, xmm0
paddq xmm5, xmm7
movdqa xmm7, [rsp-0x78]
pmuludq xmm7, xmm8
paddq xmm7, xmm5
movdqa xmm5, [rsp-0x28]
pmuludq xmm5, xmm14
paddq xmm5, xmm7
movdqa xmm7, xmm13
pmuludq xmm7, xmm15
paddq xmm7, xmm5
movdqa xmm5, [rsp-0x68]
pmuludq xmm5, xmm11
paddq xmm5, xmm7
movdqa xmm7, [rsp-0x18]
pmuludq xmm7, xmm6
paddq xmm5, xmm7
movdqa xmm7, xmm12
movdqa [rsp+0xa8], xmm5
pslld xmm7, 0x1
pmuludq xmm7, [rsp-0x48]
movdqa xmm5, [rsp+0x8]
pmuludq xmm5, xmm1
paddq xmm7, xmm5
movdqa xmm5, xmm3
pmuludq xmm5, xmm0
paddq xmm5, xmm7
movdqa xmm7, [rsp-0x28]
paddq xmm9, xmm5
pmuludq xmm7, xmm8
movdqa xmm5, xmm7
movdqa xmm7, xmm13
movdqa xmm13, [rsp-0x68]
paddq xmm5, xmm9
paddq xmm4, xmm5
movdqa xmm9, [rsp-0x18]
pmuludq xmm13, xmm15
movdqa xmm5, xmm13
pmuludq xmm2, xmm9
movdqa [rsp-0x8], xmm7
paddq xmm5, xmm4
paddq xmm2, xmm5
movdqa xmm5, [rsp-0x58]
movdqa xmm13, xmm5
movdqa xmm4, [rsp+0x8]
pmuludq xmm13, xmm6
paddq xmm13, xmm2
movdqa xmm2, [rsp+0x58]
pmuludq xmm4, [rsp-0x48]
pmuludq xmm2, xmm1
paddq xmm4, xmm2
movdqa xmm2, xmm12
pmuludq xmm2, xmm0
paddq xmm2, xmm4
movdqa xmm4, [rsp-0x78]
pmuludq xmm4, xmm3
paddq xmm4, xmm2
movdqa xmm2, [rsp-0x28]
pmuludq xmm3, [ed25519$packednineteen]
pmuludq xmm2, xmm10
paddq xmm2, xmm4
movdqa xmm4, xmm7
movdqa xmm7, xmm6
pmuludq xmm10, [ed25519$packednineteen]
pmuludq xmm4, xmm8
paddq xmm4, xmm2
movdqa xmm2, [rsp-0x68]
pmuludq xmm7, [rsp-0x38]
pmuludq xmm8, [ed25519$packednineteen]
pmuludq xmm2, xmm14
paddq xmm2, xmm4
movdqa xmm4, xmm9
pmuludq xmm14, [ed25519$packednineteen]
pmuludq xmm4, xmm15
paddq xmm4, xmm2
movdqa xmm2, xmm5
pmuludq xmm15, [ed25519$packednineteen]
pmuludq xmm2, xmm11
paddq xmm2, xmm4
movdqa xmm6, xmm2
pmuludq xmm11, [ed25519$packednineteen]
pslld xmm11, 0x1
pmuludq xmm11, [rsp-0x38]
paddq xmm6, xmm7
movdqa xmm7, xmm10
movdqa [rsp+0xb8], xmm6
pslld xmm7, 0x1
movdqa xmm9, xmm7
movdqa xmm7, xmm12
movdqa xmm6, xmm14
pmuludq xmm7, [ed25519$packednineteen]
movdqa xmm12, xmm7
pslld xmm6, 0x1
movdqa [rsp+0x68], xmm6
pslld xmm12, 0x1
movdqa xmm6, xmm12
movdqa xmm12, [rsp+0x58]
pmuludq xmm12, [ed25519$packednineteen]
movdqa xmm5, xmm12
pslld xmm12, 0x1
movdqa xmm4, xmm12
movdqa xmm12, [rsp-0x58]
pmuludq xmm12, xmm15
paddq xmm12, xmm11
movdqa xmm11, [rsp+0x68]
pmuludq xmm11, [rsp-0x18]
paddq xmm11, xmm12
movdqa xmm12, [rsp-0x68]
pmuludq xmm12, xmm8
paddq xmm12, xmm11
movdqa xmm11, [rsp-0x8]
pmuludq xmm11, xmm9
paddq xmm11, xmm12
movdqa xmm12, [rsp-0x28]
movdqa xmm2, [rsp+0x8]
pmuludq xmm12, xmm3
paddq xmm12, xmm11
movdqa xmm11, [rsp-0x78]
pmuludq xmm2, [ed25519$packednineteen]
pmuludq xmm11, xmm6
paddq xmm11, xmm12
movdqa xmm12, xmm2
pmuludq xmm12, xmm0
paddq xmm12, xmm11
movdqa xmm11, [rsp-0x48]
pmuludq xmm11, xmm4
paddq xmm11, xmm12
paddq xmm11, [rsp+0x18]
movdqa [rsp+0x18], xmm11
pmuludq xmm15, [rsp-0x38]
pmuludq xmm14, [rsp-0x58]
paddq xmm14, xmm15
movdqa xmm12, [rsp-0x18]
pmuludq xmm12, xmm8
movdqa xmm11, xmm12
movdqa xmm12, [rsp-0x68]
paddq xmm11, xmm14
movdqa xmm14, [rsp-0x8]
pmuludq xmm12, xmm10
paddq xmm12, xmm11
pmuludq xmm10, [rsp-0x58]
movdqa xmm15, [rsp-0x28]
movdqa xmm11, xmm14
pmuludq xmm11, xmm3
paddq xmm11, xmm12
movdqa xmm12, xmm15
pmuludq xmm12, xmm7
paddq xmm12, xmm11
movdqa xmm11, [rsp-0x78]
pmuludq xmm11, xmm2
paddq xmm11, xmm12
movdqa xmm12, xmm5
pmuludq xmm12, xmm0
paddq xmm12, xmm11
paddq xmm12, [rsp+0x28]
movdqa [rsp+0x28], xmm12
movdqa xmm12, [rsp+0x68]
pmuludq xmm12, [rsp-0x38]
movdqa xmm11, xmm12
movdqa xmm12, [rsp-0x58]
pmuludq xmm12, xmm8
paddq xmm12, xmm11
movdqa xmm11, [rsp-0x18]
pmuludq xmm8, [rsp-0x38]
paddq xmm10, xmm8
pmuludq xmm11, xmm9
paddq xmm11, xmm12
movdqa xmm12, [rsp-0x68]
pmuludq xmm12, xmm3
paddq xmm12, xmm11
movdqa xmm11, xmm14
pmuludq xmm11, xmm6
paddq xmm11, xmm12
movdqa xmm12, xmm15
pmuludq xmm12, xmm2
paddq xmm12, xmm11
movdqa xmm11, [rsp-0x78]
pmuludq xmm11, xmm4
paddq xmm11, xmm12
movdqa xmm12, [rsp+0x38]
paddq xmm12, xmm11
movdqa xmm11, [rsp-0x18]
movdqa [rsp+0x38], xmm12
movdqa xmm12, xmm11
pmuludq xmm12, xmm3
movdqa xmm8, xmm12
movdqa xmm12, xmm14
paddq xmm8, xmm10
movdqa xmm10, [rsp-0x68]
pmuludq xmm10, xmm7
paddq xmm10, xmm8
movdqa xmm8, xmm14
movdqa xmm14, xmm15
movdqa xmm15, [rsp-0x38]
pmuludq xmm8, xmm2
paddq xmm8, xmm10
pmuludq xmm14, xmm5
movdqa xmm10, xmm14
pmuludq xmm9, xmm15
movdqa xmm14, [rsp+0x48]
paddq xmm10, xmm8
paddq xmm14, xmm10
movdqa [rsp+0x48], xmm14
movdqa xmm14, [rsp-0x58]
pmuludq xmm14, xmm3
movdqa xmm10, xmm14
pmuludq xmm3, xmm15
movdqa xmm14, [rsp-0x68]
paddq xmm10, xmm9
movdqa xmm9, xmm11
pmuludq xmm9, xmm6
movdqa xmm8, xmm9
pmuludq xmm6, xmm15
movdqa xmm9, xmm14
paddq xmm8, xmm10
pmuludq xmm9, xmm2
paddq xmm9, xmm8
movdqa xmm8, xmm12
pmuludq xmm8, xmm4
paddq xmm8, xmm9
movdqa xmm9, [rsp+0x78]
paddq xmm9, xmm8
movdqa xmm8, [rsp-0x58]
movdqa xmm12, xmm9
pmuludq xmm7, xmm8
paddq xmm7, xmm3
movdqa xmm3, xmm11
pmuludq xmm3, xmm2
paddq xmm3, xmm7
movdqa xmm7, xmm14
pmuludq xmm7, xmm5
paddq xmm7, xmm3
paddq xmm7, [rsp+0x88]
movdqa xmm14, xmm7
pmuludq xmm5, [rsp-0x58]
movdqa xmm7, xmm8
movdqa xmm3, xmm11
pmuludq xmm7, xmm2
pmuludq xmm2, xmm15
paddq xmm5, xmm2
movdqa xmm2, [rsp+0xa8]
pmuludq xmm3, xmm4
pmuludq xmm4, [rsp-0x38]
paddq xmm13, xmm4
movdqa xmm4, xmm12
paddq xmm7, xmm6
paddq xmm2, xmm5
movdqa xmm5, [rsp+0x18]
movdqa xmm8, xmm2
paddq xmm3, xmm7
movdqa xmm2, xmm12
paddq xmm3, [rsp+0x98]
movdqa xmm15, [ed25519$packedmask26]
movdqa xmm9, xmm3
movdqa xmm3, xmm5
psrlq xmm2, 0x1a
paddq xmm2, xmm14
pand xmm4, xmm15
movdqa xmm6, xmm2
psrlq xmm3, 0x1a
paddq xmm3, [rsp+0x28]
movdqa xmm7, xmm3
psrlq xmm6, 0x19
paddq xmm6, xmm9
movdqa xmm9, xmm6
psrlq xmm7, 0x19
psrlq xmm6, 0x1a
paddq xmm7, [rsp+0x38]
paddq xmm6, xmm8
movdqa xmm11, xmm7
psrlq xmm7, 0x1a
movdqa xmm8, xmm6
paddq xmm7, [rsp+0x48]
psrlq xmm6, 0x19
movdqa xmm14, xmm7
paddq xmm13, xmm6
psrlq xmm7, 0x19
paddq xmm4, xmm7
movdqa xmm7, xmm13
pand xmm5, xmm15
pand xmm14, [ed25519$packedmask25]
psrlq xmm7, 0x1a
movdqa xmm6, xmm7
movdqa xmm7, xmm13
pand xmm3, [ed25519$packedmask25]
paddq xmm6, [rsp+0xb8]
movdqa xmm13, xmm6
pand xmm11, xmm15
psrlq xmm13, 0x19
movdqa xmm12, xmm13
movdqa xmm13, [ed25519$packedmask25]
movdqa xmm10, xmm14
pand xmm13, xmm6
pmuludq xmm12, [ed25519$packednineteen]
paddq xmm5, xmm12
movdqa xmm14, [ed25519$packedmask25]
pand xmm9, xmm15
pand xmm2, [ed25519$packedmask25]
movdqa xmm6, xmm13
movdqa xmm13, xmm5
pand xmm5, xmm15
pand xmm14, xmm8
psrlq xmm13, 0x1a
paddq xmm3, xmm13
movdqa xmm13, xmm11
pand xmm7, xmm15
punpckldq xmm13, xmm10
movdqa xmm8, xmm14
movdqa xmm14, xmm4
pand xmm4, xmm15
movdqa xmm12, xmm13
movdqa xmm13, xmm5
psrlq xmm14, 0x1a
paddq xmm2, xmm14
punpckhdq xmm11, xmm10
punpckldq xmm13, xmm3
punpckhdq xmm5, xmm3
punpcklqdq xmm13, xmm12
punpcklqdq xmm5, xmm11
movdqa [rdi], xmm13
movdqa xmm13, xmm9
punpckhdq xmm9, xmm8
punpckldq xmm13, xmm8
movdqa [rdi+0x90], xmm5
movdqa xmm12, xmm13
movdqa xmm13, xmm4
punpckhdq xmm4, xmm2
movdqa xmm10, [rsp-0x78]
punpckldq xmm13, xmm2
punpcklqdq xmm4, xmm9
movdqa xmm8, xmm10
punpcklqdq xmm13, xmm12
movdqa [rdi+0xa0], xmm4
movdqa [rdi+0x10], xmm13
movdqa xmm13, xmm7
punpckhdq xmm7, xmm6
punpckldq xmm13, xmm6
movdqa xmm12, [rsp-0x48]
movdqa [rdi+0xb0], xmm7
movdqa [rdi+0x20], xmm13
movdqa xmm6, [rsi+0x70]
pshufd xmm4, xmm6, 0xff
movdqa xmm13, [rsi+0x60]
pshufd xmm7, xmm6, 0x0
pshufd xmm9, xmm6, 0x55
movdqa [rsp+0x8], xmm4
pshufd xmm11, xmm13, 0x55
pshufd xmm3, xmm13, 0x0
pshufd xmm2, xmm6, 0xaa
movdqa xmm6, xmm12
movdqa xmm4, [rsi+0x80]
pshufd xmm14, xmm13, 0xaa
pmuludq xmm6, xmm3
pmuludq xmm8, xmm3
pshufd xmm5, xmm4, 0x0
pshufd xmm4, xmm4, 0x55
pshufd xmm13, xmm13, 0xff
movdqa [rsp+0x18], xmm5
movdqa xmm5, xmm3
movdqa [rsp+0x68], xmm4
movdqa xmm4, xmm11
pmuludq xmm5, xmm1
movdqa [rsp+0x28], xmm5
pmuludq xmm4, xmm1
paddq xmm4, xmm6
movdqa xmm6, xmm11
movdqa [rsp+0x38], xmm4
pslld xmm6, 0x1
movdqa xmm5, xmm12
movdqa xmm4, xmm6
movdqa xmm6, xmm14
pmuludq xmm5, xmm4
pmuludq xmm6, xmm1
paddq xmm5, xmm6
movdqa xmm6, xmm3
pmuludq xmm6, xmm0
paddq xmm5, xmm6
movdqa xmm6, xmm12
movdqa [rsp+0x48], xmm5
movdqa xmm5, xmm13
pmuludq xmm6, xmm14
pmuludq xmm5, xmm1
paddq xmm6, xmm5
movdqa xmm5, xmm11
pmuludq xmm5, xmm0
paddq xmm5, xmm6
movdqa xmm6, xmm5
paddq xmm6, xmm8
movdqa xmm8, xmm13
movdqa [rsp+0x58], xmm6
pslld xmm8, 0x1
movdqa xmm6, xmm12
movdqa xmm5, xmm8
movdqa xmm8, xmm7
pmuludq xmm6, xmm5
pmuludq xmm8, xmm1
paddq xmm6, xmm8
movdqa xmm8, xmm14
pmuludq xmm8, xmm0
paddq xmm8, xmm6
movdqa xmm6, xmm10
movdqa xmm10, [rsp-0x28]
pmuludq xmm6, xmm4
paddq xmm6, xmm8
movdqa xmm8, xmm10
pmuludq xmm8, xmm3
paddq xmm6, xmm8
movdqa xmm8, xmm12
movdqa [rsp+0x88], xmm6
movdqa xmm6, xmm9
pmuludq xmm8, xmm7
pmuludq xmm6, xmm1
paddq xmm8, xmm6
movdqa xmm6, xmm13
movdqa xmm12, [rsp-0x8]
pmuludq xmm6, xmm0
paddq xmm6, xmm8
movdqa xmm8, [rsp-0x78]
pmuludq xmm8, xmm14
paddq xmm8, xmm6
movdqa xmm6, xmm10
pmuludq xmm6, xmm11
paddq xmm6, xmm8
movdqa xmm8, xmm12
pmuludq xmm8, xmm3
paddq xmm6, xmm8
movdqa xmm8, xmm9
movdqa [rsp+0x98], xmm6
pslld xmm8, 0x1
movdqa xmm10, xmm8
movdqa xmm8, xmm2
movdqa xmm6, [rsp-0x48]
pmuludq xmm8, xmm1
pmuludq xmm6, xmm10
paddq xmm6, xmm8
movdqa xmm8, xmm7
pmuludq xmm8, xmm0
paddq xmm8, xmm6
movdqa xmm6, [rsp-0x78]
pmuludq xmm6, xmm5
paddq xmm6, xmm8
movdqa xmm8, [rsp-0x28]
pmuludq xmm5, xmm12
pmuludq xmm8, xmm14
paddq xmm8, xmm6
movdqa xmm6, xmm12
pmuludq xmm6, xmm4
paddq xmm6, xmm8
movdqa xmm8, [rsp-0x68]
pmuludq xmm8, xmm3
paddq xmm6, xmm8
movdqa xmm8, [rsp-0x48]
movdqa [rsp+0xa8], xmm6
pmuludq xmm8, xmm2
movdqa xmm6, [rsp+0x8]
pmuludq xmm6, xmm1
paddq xmm8, xmm6
movdqa xmm6, xmm9
pmuludq xmm6, xmm0
paddq xmm6, xmm8
movdqa xmm8, [rsp-0x78]
pmuludq xmm8, xmm7
paddq xmm8, xmm6
movdqa xmm6, [rsp-0x28]
pmuludq xmm6, xmm13
paddq xmm6, xmm8
movdqa xmm8, xmm12
pmuludq xmm8, xmm14
paddq xmm8, xmm6
movdqa xmm6, [rsp-0x68]
pmuludq xmm6, xmm11
paddq xmm6, xmm8
movdqa xmm8, [rsp-0x18]
pmuludq xmm8, xmm3
paddq xmm6, xmm8
movdqa [rsp+0xb8], xmm6
pmuludq xmm10, [rsp-0x78]
movdqa xmm6, [rsp+0x8]
pslld xmm6, 0x1
movdqa xmm8, xmm6
movdqa xmm6, [rsp+0x18]
pmuludq xmm8, [rsp-0x48]
pmuludq xmm6, xmm1
paddq xmm8, xmm6
movdqa xmm6, xmm2
pmuludq xmm1, [rsp+0x68]
pmuludq xmm6, xmm0
paddq xmm6, xmm8
movdqa xmm8, [rsp-0x28]
paddq xmm10, xmm6
movdqa xmm6, xmm8
pmuludq xmm6, xmm7
paddq xmm6, xmm10
movdqa xmm10, xmm12
movdqa xmm12, [rsp-0x68]
paddq xmm5, xmm6
pmuludq xmm12, xmm14
movdqa xmm6, xmm12
paddq xmm6, xmm5
movdqa xmm5, [rsp-0x18]
pmuludq xmm4, xmm5
paddq xmm4, xmm6
movdqa xmm6, [rsp-0x58]
movdqa xmm12, xmm6
pmuludq xmm12, xmm3
paddq xmm12, xmm4
movdqa xmm4, [rsp+0x18]
pmuludq xmm4, [rsp-0x48]
paddq xmm4, xmm1
movdqa xmm1, [rsp+0x8]
pmuludq xmm1, xmm0
paddq xmm1, xmm4
movdqa xmm4, [rsp-0x78]
pmuludq xmm4, xmm2
paddq xmm4, xmm1
movdqa xmm1, xmm8
pmuludq xmm2, [ed25519$packednineteen]
pmuludq xmm1, xmm9
paddq xmm1, xmm4
movdqa xmm4, xmm10
movdqa xmm10, [rsp-0x38]
pmuludq xmm9, [ed25519$packednineteen]
pmuludq xmm4, xmm7
paddq xmm4, xmm1
pmuludq xmm7, [ed25519$packednineteen]
movdqa xmm1, [rsp-0x68]
pmuludq xmm1, xmm13
paddq xmm1, xmm4
movdqa xmm4, xmm5
pmuludq xmm13, [ed25519$packednineteen]
pmuludq xmm4, xmm14
paddq xmm4, xmm1
movdqa xmm1, xmm6
pmuludq xmm14, [ed25519$packednineteen]
pmuludq xmm1, xmm11
paddq xmm1, xmm4
movdqa xmm4, xmm3
pmuludq xmm11, [ed25519$packednineteen]
pslld xmm11, 0x1
pmuludq xmm11, [rsp-0x38]
pmuludq xmm4, xmm10
paddq xmm1, xmm4
movdqa [rsp+0xc8], xmm1
movdqa xmm1, xmm13
movdqa xmm3, xmm9
pslld xmm1, 0x1
movdqa [rsp+0x78], xmm1
pslld xmm3, 0x1
movdqa xmm8, xmm3
movdqa xmm10, [rsp-0x58]
pmuludq xmm10, xmm14
paddq xmm10, xmm11
movdqa xmm11, [rsp+0x78]
movdqa xmm1, [rsp+0x8]
pmuludq xmm11, [rsp-0x18]
paddq xmm11, xmm10
movdqa xmm10, [rsp-0x68]
pmuludq xmm1, [ed25519$packednineteen]
movdqa xmm6, xmm1
pmuludq xmm10, xmm7
paddq xmm10, xmm11
movdqa xmm11, [rsp-0x8]
movdqa xmm3, xmm6
pmuludq xmm11, xmm8
paddq xmm11, xmm10
movdqa xmm10, [rsp-0x28]
pslld xmm3, 0x1
movdqa xmm5, xmm3
movdqa xmm1, [rsp+0x18]
pmuludq xmm10, xmm2
paddq xmm10, xmm11
movdqa xmm11, [rsp-0x78]
pmuludq xmm1, [ed25519$packednineteen]
movdqa xmm4, [rsp+0x68]
pmuludq xmm11, xmm5
paddq xmm11, xmm10
movdqa xmm10, xmm1
pmuludq xmm4, [ed25519$packednineteen]
movdqa xmm3, xmm4
pmuludq xmm10, xmm0
paddq xmm10, xmm11
movdqa xmm11, [rsp-0x48]
pslld xmm3, 0x1
pmuludq xmm0, xmm4
pmuludq xmm11, xmm3
paddq xmm11, xmm10
paddq xmm11, [rsp+0x28]
movdqa [rsp+0x28], xmm11
pmuludq xmm14, [rsp-0x38]
pmuludq xmm13, [rsp-0x58]
paddq xmm13, xmm14
movdqa xmm10, [rsp-0x18]
pmuludq xmm10, xmm7
paddq xmm10, xmm13
movdqa xmm13, [rsp-0x68]
movdqa xmm14, [rsp-0x8]
pmuludq xmm13, xmm9
pmuludq xmm9, [rsp-0x58]
movdqa xmm11, xmm13
movdqa xmm13, [rsp-0x28]
paddq xmm11, xmm10
movdqa xmm10, xmm14
pmuludq xmm10, xmm2
paddq xmm10, xmm11
movdqa xmm11, xmm13
pmuludq xmm11, xmm6
paddq xmm11, xmm10
movdqa xmm10, [rsp-0x78]
pmuludq xmm10, xmm1
paddq xmm10, xmm11
paddq xmm0, xmm10
paddq xmm0, [rsp+0x38]
movdqa [rsp+0x38], xmm0
movdqa xmm0, [rsp+0x78]
pmuludq xmm0, [rsp-0x38]
movdqa xmm10, xmm0
movdqa xmm0, [rsp-0x58]
movdqa xmm11, [rsp-0x68]
pmuludq xmm0, xmm7
paddq xmm0, xmm10
pmuludq xmm7, [rsp-0x38]
paddq xmm9, xmm7
movdqa xmm10, [rsp-0x18]
movdqa xmm7, xmm11
pmuludq xmm10, xmm8
paddq xmm10, xmm0
movdqa xmm0, xmm11
pmuludq xmm7, xmm6
pmuludq xmm8, [rsp-0x38]
pmuludq xmm0, xmm2
paddq xmm0, xmm10
movdqa xmm10, xmm14
pmuludq xmm10, xmm5
paddq xmm10, xmm0
movdqa xmm0, xmm13
pmuludq xmm0, xmm1
paddq xmm0, xmm10
movdqa xmm10, [rsp-0x78]
pmuludq xmm10, xmm3
paddq xmm10, xmm0
paddq xmm10, [rsp+0x48]
movdqa [rsp+0x48], xmm10
movdqa xmm10, [rsp-0x18]
movdqa xmm0, xmm10
pmuludq xmm0, xmm2
paddq xmm0, xmm9
paddq xmm7, xmm0
movdqa xmm0, xmm14
movdqa xmm9, xmm11
movdqa xmm11, [rsp-0x58]
pmuludq xmm0, xmm1
paddq xmm0, xmm7
movdqa xmm7, xmm13
movdqa xmm13, xmm10
pmuludq xmm6, xmm11
pmuludq xmm7, xmm4
paddq xmm7, xmm0
movdqa xmm0, xmm11
paddq xmm7, [rsp+0x58]
movdqa [rsp+0x58], xmm7
movdqa xmm7, xmm10
pmuludq xmm0, xmm2
paddq xmm0, xmm8
pmuludq xmm7, xmm5
paddq xmm7, xmm0
movdqa xmm0, xmm9
pmuludq xmm0, xmm1
paddq xmm0, xmm7
movdqa xmm7, xmm14
movdqa xmm14, [rsp-0x38]
pmuludq xmm7, xmm3
paddq xmm7, xmm0
movdqa xmm0, xmm13
pmuludq xmm2, xmm14
paddq xmm6, xmm2
movdqa xmm2, xmm9
pmuludq xmm0, xmm1
paddq xmm0, xmm6
pmuludq xmm5, xmm14
pmuludq xmm2, xmm4
paddq xmm2, xmm0
movdqa xmm0, xmm11
paddq xmm2, [rsp+0x98]
movdqa xmm9, xmm2
movdqa xmm2, xmm13
pmuludq xmm0, xmm1
pmuludq xmm4, xmm11
paddq xmm0, xmm5
pmuludq xmm1, xmm14
pmuludq xmm2, xmm3
paddq xmm4, xmm1
paddq xmm2, xmm0
movdqa xmm1, [rsp+0x28]
paddq xmm7, [rsp+0x88]
movdqa xmm0, xmm14
paddq xmm2, [rsp+0xa8]
movdqa xmm13, xmm2
movdqa xmm2, xmm1
paddq xmm4, [rsp+0xb8]
pmuludq xmm3, xmm0
movdqa xmm0, xmm7
paddq xmm12, xmm3
psrlq xmm2, 0x1a
paddq xmm2, [rsp+0x38]
movdqa xmm5, xmm2
movdqa xmm3, xmm2
psrlq xmm0, 0x1a
paddq xmm0, xmm9
movdqa xmm2, xmm0
movdqa xmm14, xmm4
movdqa xmm4, xmm7
psrlq xmm3, 0x19
paddq xmm3, [rsp+0x48]
psrlq xmm2, 0x19
paddq xmm2, xmm13
movdqa xmm7, xmm2
movdqa xmm6, xmm3
movdqa xmm2, xmm3
movdqa xmm3, xmm7
pand xmm1, xmm15
psrlq xmm6, 0x1a
paddq xmm6, [rsp+0x58]
psrlq xmm3, 0x1a
paddq xmm3, xmm14
movdqa xmm9, xmm3
psrlq xmm3, 0x19
paddq xmm12, xmm3
movdqa xmm3, xmm12
pand xmm4, xmm15
movdqa xmm8, xmm6
pand xmm0, [ed25519$packedmask25]
psrlq xmm3, 0x1a
paddq xmm3, [rsp+0xc8]
movdqa xmm10, xmm3
psrlq xmm8, 0x19
pand xmm2, xmm15
paddq xmm4, xmm8
pand xmm6, [ed25519$packedmask25]
psrlq xmm10, 0x19
pmuludq xmm10, [ed25519$packednineteen]
paddq xmm1, xmm10
movdqa xmm11, xmm1
pand xmm5, [ed25519$packedmask25]
movdqa xmm10, xmm4
psrlq xmm11, 0x1a
pand xmm1, xmm15
psrlq xmm10, 0x1a
paddq xmm0, xmm10
pand xmm7, xmm15
movdqa xmm10, xmm2
pand xmm12, xmm15
pand xmm15, xmm4
movdqa xmm4, xmm1
paddq xmm5, xmm11
punpckldq xmm10, xmm6
punpckldq xmm4, xmm5
movdqa xmm8, xmm12
pand xmm9, [ed25519$packedmask25]
punpcklqdq xmm4, xmm10
pand xmm3, [ed25519$packedmask25]
movdqa xmm10, xmm7
movdqa [rdi+0x60], xmm4
movdqa xmm4, xmm15
punpckldq xmm10, xmm9
punpckldq xmm4, xmm0
punpckhdq xmm2, xmm6
punpckhdq xmm1, xmm5
punpcklqdq xmm4, xmm10
punpckhdq xmm7, xmm9
punpckhdq xmm15, xmm0
movdqa [rdi+0x70], xmm4
movdqa xmm4, xmm12
punpcklqdq xmm1, xmm2
punpckldq xmm4, xmm3
punpcklqdq xmm15, xmm7
punpckhdq xmm8, xmm3
movdqa [rdi+0x80], xmm4
movdqa [rdi+0x30], xmm1
movdqa [rdi+0x40], xmm15
movdqa [rdi+0x50], xmm8
add rsp, 0xe0
ret
falign
ed25519$double_p1p1:
sub rsp, 0xd0
movdqa xmm9, [rsi]
movdqa xmm0, [rsi+0x30]
movdqa xmm2, xmm9
movdqa xmm10, [rsi+0x20]
paddd xmm2, xmm0
movdqa [rsp-0x48], xmm2
movdqa xmm2, xmm9
movdqa xmm4, xmm10
movdqa xmm13, xmm10
punpcklqdq xmm2, xmm0
movdqa xmm3, [rsi+0x40]
punpckhqdq xmm9, xmm0
movdqa xmm1, [rsi+0x10]
movdqa xmm7, xmm9
movdqa xmm11, xmm9
movdqa xmm5, [rsi+0x50]
movdqa xmm6, xmm1
movdqa xmm0, xmm1
psrlq xmm7, 0x20
punpckhqdq xmm1, xmm3
paddd xmm4, xmm5
pmuludq xmm11, xmm9
punpcklqdq xmm13, xmm5
movdqa xmm5, xmm2
paddd xmm6, xmm3
movdqa [rsp-0x28], xmm4
movdqa xmm4, xmm2
pmuludq xmm5, xmm2
pslld xmm2, 0x1
punpcklqdq xmm0, xmm3
movdqa xmm3, xmm2
movdqa [rsp-0x68], xmm5
psrlq xmm4, 0x20
movdqa xmm5, xmm2
pmuludq xmm3, xmm4
movdqa [rsp-0x38], xmm6
movdqa xmm15, xmm4
pmuludq xmm5, xmm9
movdqa xmm6, xmm1
movdqa xmm12, xmm0
movdqa [rsp+0x38], xmm3
pslld xmm15, 0x1
pmuludq xmm4, xmm15
movdqa xmm3, xmm15
psrlq xmm6, 0x20
paddq xmm5, xmm4
movdqa xmm14, xmm6
movdqa xmm4, xmm15
psrlq xmm12, 0x20
movdqa xmm6, xmm13
pmuludq xmm4, xmm9
movdqa xmm15, xmm7
movdqa xmm8, xmm3
psrlq xmm6, 0x20
movdqa [rsp-0x78], xmm6
pslld xmm9, 0x1
movdqa xmm6, xmm4
pslld xmm15, 0x1
pmuludq xmm8, xmm15
movdqa xmm4, xmm2
paddq xmm8, xmm11
movdqa xmm11, xmm9
pmuludq xmm4, xmm7
paddq xmm6, xmm4
movdqa [rsp+0x68], xmm6
movdqa xmm6, xmm15
pmuludq xmm11, xmm7
movdqa xmm15, xmm2
movdqa xmm4, xmm14
pmuludq xmm7, xmm6
pmuludq xmm15, xmm0
paddq xmm8, xmm15
movdqa [rsp+0x28], xmm8
movdqa xmm8, xmm3
movdqa xmm15, xmm2
pmuludq xmm8, xmm0
paddq xmm8, xmm11
movdqa xmm11, xmm9
movdqa xmm10, xmm8
pmuludq xmm15, xmm12
pmuludq xmm11, xmm0
paddq xmm11, xmm7
movdqa xmm7, xmm3
paddq xmm10, xmm15
movdqa xmm15, xmm12
movdqa [rsp+0x48], xmm10
pslld xmm15, 0x1
movdqa xmm8, xmm15
pmuludq xmm7, xmm15
movdqa xmm15, xmm2
paddq xmm7, xmm11
movdqa xmm11, xmm9
movdqa xmm10, xmm14
pmuludq xmm15, xmm1
paddq xmm7, xmm15
movdqa [rsp+0x58], xmm7
movdqa xmm7, xmm6
pmuludq xmm11, xmm12
pmuludq xmm10, xmm2
movdqa [rsp-0x18], xmm4
pmuludq xmm7, xmm0
paddq xmm11, xmm7
movdqa xmm7, xmm3
pmuludq xmm7, xmm1
paddq xmm7, xmm11
paddq xmm10, xmm7
movdqa xmm7, xmm14
movdqa xmm11, xmm0
pslld xmm7, 0x1
movdqa xmm15, xmm7
movdqa xmm7, xmm6
pmuludq xmm11, xmm0
pmuludq xmm7, xmm8
paddq xmm7, xmm11
movdqa xmm11, xmm9
movdqa [rsp-0x8], xmm15
pmuludq xmm11, xmm1
paddq xmm11, xmm7
movdqa xmm7, xmm15
movdqa xmm15, xmm2
pmuludq xmm7, xmm3
paddq xmm7, xmm11
movdqa xmm11, xmm0
pmuludq xmm15, xmm13
paddq xmm15, xmm7
movdqa xmm7, xmm6
pmuludq xmm11, xmm8
pmuludq xmm7, xmm1
paddq xmm7, xmm11
movdqa xmm11, xmm14
pmuludq xmm11, xmm9
paddq xmm11, xmm7
movdqa xmm7, xmm3
pmuludq xmm7, xmm13
paddq xmm7, xmm11
movdqa xmm11, xmm2
movdqa xmm2, [rsp-0x78]
pmuludq xmm11, xmm2
paddq xmm7, xmm11
movdqa xmm11, xmm1
movdqa [rsp+0x78], xmm7
pmuludq xmm11, [ed25519$packednineteen]
movdqa xmm14, xmm11
movdqa xmm11, xmm4
movdqa xmm4, xmm2
movdqa xmm7, xmm12
pmuludq xmm4, [ed25519$packedthirtyeight]
movdqa xmm2, xmm4
movdqa xmm4, xmm0
pmuludq xmm7, [ed25519$packedthirtyeight]
movdqa [rsp+0x8], xmm7
pmuludq xmm11, [ed25519$packedthirtyeight]
pslld xmm4, 0x1
movdqa xmm7, xmm13
pmuludq xmm3, xmm2
movdqa [rsp-0x58], xmm4
movdqa xmm4, xmm1
pmuludq xmm7, [ed25519$packednineteen]
pslld xmm4, 0x1
movdqa [rsp+0x18], xmm4
movdqa xmm4, xmm12
pmuludq xmm4, [rsp+0x8]
movdqa xmm12, [rsp-0x58]
pmuludq xmm12, xmm14
paddq xmm12, xmm4
movdqa xmm4, xmm11
pmuludq xmm4, xmm6
paddq xmm12, xmm4
movdqa xmm4, xmm12
movdqa xmm12, xmm7
pmuludq xmm12, xmm9
paddq xmm12, xmm4
movdqa xmm4, xmm14
paddq xmm3, xmm12
movdqa xmm12, xmm11
paddq xmm3, [rsp-0x68]
pmuludq xmm4, xmm8
movdqa [rsp-0x68], xmm3
psrld xmm9, 0x1
pmuludq xmm12, xmm0
paddq xmm12, xmm4
movdqa xmm4, xmm7
pmuludq xmm9, xmm2
pmuludq xmm0, xmm2
pmuludq xmm4, xmm6
movdqa xmm3, xmm4
pmuludq xmm6, xmm2
movdqa xmm4, xmm11
paddq xmm3, xmm12
paddq xmm9, xmm3
paddq xmm9, [rsp+0x38]
pmuludq xmm4, xmm8
movdqa xmm3, xmm4
movdqa xmm4, [rsp-0x58]
movdqa xmm12, xmm9
movdqa xmm9, xmm14
pmuludq xmm4, xmm7
movdqa xmm14, xmm4
movdqa xmm4, xmm7
pmuludq xmm9, xmm1
paddq xmm3, xmm9
pmuludq xmm4, xmm8
paddq xmm14, xmm3
movdqa xmm3, xmm4
paddq xmm6, xmm14
paddq xmm5, xmm6
movdqa xmm6, xmm11
movdqa xmm14, [rsp-0x8]
pmuludq xmm11, [rsp-0x18]
pmuludq xmm8, xmm2
pmuludq xmm6, xmm1
paddq xmm3, xmm6
paddq xmm0, xmm3
paddq xmm0, [rsp+0x68]
movdqa xmm4, xmm0
pmuludq xmm1, xmm2
movdqa xmm0, [rsp+0x18]
pmuludq xmm0, xmm7
paddq xmm0, xmm11
paddq xmm8, xmm0
movdqa xmm0, xmm14
paddq xmm8, [rsp+0x28]
movdqa xmm3, xmm8
pmuludq xmm0, xmm7
paddq xmm1, xmm0
movdqa xmm0, xmm14
pmuludq xmm7, xmm13
movdqa xmm14, [ed25519$packedmask26]
paddq xmm1, [rsp+0x48]
pmuludq xmm0, xmm2
paddq xmm0, xmm7
paddq xmm0, [rsp+0x58]
movdqa xmm11, xmm0
movdqa xmm0, xmm13
movdqa xmm13, [rsp-0x68]
movdqa xmm9, xmm1
pmuludq xmm0, xmm2
paddq xmm10, xmm0
movdqa xmm0, xmm8
movdqa xmm1, xmm13
pand xmm3, xmm14
pmuludq xmm2, [rsp-0x78]
psrlq xmm0, 0x1a
paddq xmm0, xmm9
movdqa xmm7, xmm0
psrlq xmm0, 0x19
paddq xmm0, xmm11
movdqa xmm8, xmm0
psrlq xmm0, 0x1a
paddq xmm10, xmm0
movdqa xmm0, xmm10
pand xmm10, [ed25519$packedmask25]
psrlq xmm1, 0x1a
paddq xmm1, xmm12
movdqa xmm6, xmm1
psrlq xmm1, 0x19
paddq xmm5, xmm1
movdqa xmm1, xmm5
pand xmm13, xmm14
paddq xmm15, xmm2
pand xmm6, [ed25519$packedmask25]
psrlq xmm0, 0x19
paddq xmm15, xmm0
psrlq xmm1, 0x1a
paddq xmm1, xmm4
movdqa xmm4, xmm1
psrlq xmm1, 0x19
paddq xmm3, xmm1
movdqa xmm1, xmm15
movdqa xmm9, xmm10
pand xmm7, [ed25519$packedmask25]
psrlq xmm1, 0x1a
paddq xmm1, [rsp+0x78]
movdqa xmm2, xmm1
psrlq xmm1, 0x19
pmuludq xmm1, [ed25519$packednineteen]
paddq xmm13, xmm1
movdqa xmm10, xmm13
pand xmm13, xmm14
movdqa xmm1, xmm3
pand xmm4, [ed25519$packedmask25]
psrlq xmm10, 0x1a
paddq xmm6, xmm10
psrlq xmm1, 0x1a
paddq xmm7, xmm1
movdqa xmm0, xmm15
pand xmm5, xmm14
movdqa xmm10, xmm13
pand xmm3, xmm14
punpckldq xmm10, xmm6
movdqa xmm1, xmm5
pand xmm8, xmm14
punpckhdq xmm5, xmm4
punpckldq xmm1, xmm4
movdqa xmm15, xmm10
movdqa xmm10, xmm3
punpckhdq xmm3, xmm7
punpcklqdq xmm15, xmm1
movdqa xmm1, xmm8
punpckldq xmm10, xmm7
punpckhdq xmm8, xmm9
movdqa xmm4, xmm3
pand xmm0, xmm14
pand xmm2, [ed25519$packedmask25]
movdqa xmm12, xmm10
movdqa [rsp+0x38], xmm15
punpckldq xmm1, xmm9
punpcklqdq xmm4, xmm8
punpckhdq xmm13, xmm6
punpcklqdq xmm12, xmm1
movdqa xmm1, xmm0
movdqa [rsp-0x58], xmm4
movdqa xmm4, xmm0
punpckldq xmm1, xmm2
movdqa xmm6, xmm13
punpckhdq xmm4, xmm2
movdqa xmm7, [rsi+0x60]
punpcklqdq xmm6, xmm5
movdqa xmm3, [rsp-0x48]
movdqa xmm2, xmm7
movdqa [rsp+0x8], xmm1
punpckhqdq xmm7, xmm3
punpcklqdq xmm2, xmm3
movdqa [rsp-0x68], xmm6
movdqa xmm5, xmm7
movdqa [rsp-0x78], xmm12
movdqa xmm8, xmm2
psrlq xmm5, 0x20
movdqa [rsp+0x48], xmm4
psrlq xmm8, 0x20
movdqa xmm9, xmm2
movdqa xmm4, xmm8
pmuludq xmm9, xmm2
pslld xmm2, 0x1
movdqa xmm11, xmm2
movdqa xmm3, [rsp-0x38]
pmuludq xmm11, xmm7
movdqa xmm15, xmm11
movdqa xmm1, [rsi+0x70]
movdqa xmm0, xmm1
punpckhqdq xmm1, xmm3
punpcklqdq xmm0, xmm3
movdqa [rsp-0x18], xmm9
movdqa xmm6, xmm1
movdqa xmm8, xmm0
movdqa xmm9, xmm7
psrlq xmm6, 0x20
movdqa xmm12, xmm6
movdqa xmm6, [rsi+0x80]
psrlq xmm8, 0x20
movdqa xmm10, xmm8
movdqa xmm8, xmm2
pmuludq xmm9, xmm7
punpcklqdq xmm6, [rsp-0x28]
pmuludq xmm8, xmm4
movdqa [rsp+0x98], xmm8
movdqa xmm8, xmm2
pmuludq xmm8, xmm0
movdqa xmm3, xmm6
movdqa xmm13, xmm6
psrlq xmm3, 0x20
movdqa [rsp-0x38], xmm3
movdqa xmm3, xmm4
pslld xmm3, 0x1
movdqa xmm11, xmm3
pmuludq xmm4, xmm3
paddq xmm15, xmm4
movdqa xmm6, xmm3
pmuludq xmm11, xmm7
movdqa xmm4, xmm11
movdqa xmm11, xmm2
pslld xmm7, 0x1
pmuludq xmm11, xmm5
paddq xmm4, xmm11
movdqa xmm11, xmm5
movdqa [rsp-0x8], xmm4
pslld xmm11, 0x1
pmuludq xmm6, xmm11
paddq xmm6, xmm9
movdqa xmm9, xmm7
paddq xmm6, xmm8
movdqa [rsp+0x88], xmm6
movdqa xmm6, xmm3
pmuludq xmm9, xmm5
movdqa xmm4, xmm11
movdqa xmm8, xmm2
pmuludq xmm6, xmm0
paddq xmm6, xmm9
movdqa xmm9, xmm2
movdqa xmm11, xmm6
pmuludq xmm5, xmm4
movdqa xmm6, xmm10
pmuludq xmm9, xmm10
pmuludq xmm8, xmm1
paddq xmm11, xmm9
movdqa xmm9, xmm7
pslld xmm6, 0x1
movdqa [rsp+0xa8], xmm11
pmuludq xmm9, xmm0
paddq xmm9, xmm5
movdqa xmm5, xmm3
movdqa xmm11, xmm3
pmuludq xmm5, xmm6
paddq xmm5, xmm9
movdqa xmm9, xmm7
paddq xmm8, xmm5
movdqa xmm5, xmm4
pmuludq xmm9, xmm10
pmuludq xmm5, xmm0
paddq xmm9, xmm5
movdqa xmm5, xmm3
movdqa xmm3, xmm12
pmuludq xmm5, xmm1
paddq xmm5, xmm9
movdqa xmm9, xmm12
pmuludq xmm3, xmm2
movdqa xmm12, xmm3
movdqa [rsp-0x48], xmm9
paddq xmm12, xmm5
movdqa xmm5, xmm9
pslld xmm5, 0x1
movdqa xmm3, xmm5
movdqa xmm5, xmm0
movdqa [rsp+0x68], xmm3
pmuludq xmm5, xmm0
movdqa xmm9, xmm5
movdqa xmm5, xmm4
pmuludq xmm5, xmm6
paddq xmm5, xmm9
movdqa xmm9, xmm7
pmuludq xmm9, xmm1
paddq xmm9, xmm5
movdqa xmm5, xmm3
movdqa xmm3, xmm11
pmuludq xmm5, xmm11
paddq xmm5, xmm9
movdqa xmm9, xmm13
movdqa xmm11, xmm13
pmuludq xmm9, xmm2
movdqa xmm13, xmm9
movdqa [rsp+0x58], xmm11
paddq xmm13, xmm5
movdqa xmm5, xmm0
movdqa [rsp+0x18], xmm3
pmuludq xmm5, xmm6
movdqa xmm9, xmm5
movdqa xmm5, xmm4
pmuludq xmm5, xmm1
paddq xmm5, xmm9
movdqa xmm9, [rsp-0x48]
pmuludq xmm9, xmm7
paddq xmm9, xmm5
movdqa xmm5, xmm11
pmuludq xmm5, xmm3
paddq xmm5, xmm9
movdqa xmm9, xmm2
movdqa xmm2, [rsp-0x38]
movdqa xmm3, xmm10
pmuludq xmm9, xmm2
paddq xmm5, xmm9
movdqa [rsp+0xb8], xmm5
movdqa xmm5, xmm1
pmuludq xmm3, [ed25519$packedthirtyeight]
pmuludq xmm5, [ed25519$packednineteen]
movdqa [rsp-0x28], xmm5
movdqa xmm5, xmm11
movdqa xmm11, xmm2
pmuludq xmm5, [ed25519$packednineteen]
pmuludq xmm11, [ed25519$packedthirtyeight]
movdqa xmm2, xmm11
movdqa xmm11, xmm0
movdqa xmm9, [rsp-0x48]
pslld xmm11, 0x1
movdqa [rsp+0x28], xmm11
pmuludq xmm9, [ed25519$packedthirtyeight]
movdqa xmm11, xmm1
pslld xmm11, 0x1
movdqa [rsp+0x78], xmm11
movdqa xmm11, xmm10
pmuludq xmm11, xmm3
movdqa xmm10, [rsp-0x28]
pmuludq xmm10, [rsp+0x28]
paddq xmm10, xmm11
movdqa xmm11, xmm9
pmuludq xmm11, xmm4
paddq xmm10, xmm11
movdqa xmm11, xmm5
movdqa xmm3, xmm10
pmuludq xmm11, xmm7
movdqa xmm10, xmm11
psrld xmm7, 0x1
pmuludq xmm7, xmm2
paddq xmm10, xmm3
movdqa xmm3, [rsp+0x18]
pmuludq xmm3, xmm2
paddq xmm3, xmm10
paddq xmm3, [rsp-0x18]
movdqa [rsp-0x18], xmm3
movdqa xmm11, [rsp-0x28]
pmuludq xmm11, xmm6
movdqa xmm3, xmm11
movdqa xmm11, xmm9
pmuludq xmm11, xmm0
movdqa xmm10, xmm11
pmuludq xmm0, xmm2
movdqa xmm11, xmm5
paddq xmm10, xmm3
pmuludq xmm11, xmm4
movdqa xmm3, xmm11
pmuludq xmm4, xmm2
movdqa xmm11, xmm9
paddq xmm3, xmm10
paddq xmm7, xmm3
paddq xmm7, [rsp+0x98]
pmuludq xmm11, xmm6
movdqa xmm10, xmm7
movdqa xmm3, xmm11
movdqa xmm7, [rsp-0x28]
movdqa xmm11, xmm9
pmuludq xmm7, xmm1
paddq xmm3, xmm7
movdqa xmm7, [rsp+0x28]
pmuludq xmm11, xmm1
pmuludq xmm1, xmm2
pmuludq xmm7, xmm5
paddq xmm7, xmm3
paddq xmm4, xmm7
paddq xmm15, xmm4
movdqa xmm4, xmm11
movdqa xmm11, xmm5
movdqa xmm7, [rsp+0x68]
pmuludq xmm11, xmm6
movdqa xmm3, xmm11
pmuludq xmm6, xmm2
movdqa xmm11, [rsp-0x48]
paddq xmm3, xmm4
paddq xmm0, xmm3
paddq xmm0, [rsp-0x8]
movdqa [rsp-0x8], xmm0
pmuludq xmm11, xmm9
movdqa xmm0, [rsp+0x78]
pmuludq xmm0, xmm5
paddq xmm0, xmm11
paddq xmm6, xmm0
movdqa xmm0, xmm7
paddq xmm6, [rsp+0x88]
movdqa xmm4, [rsp+0x58]
movdqa xmm3, xmm6
pmuludq xmm0, xmm5
paddq xmm1, xmm0
movdqa xmm0, xmm7
movdqa xmm9, [rsp+0xa8]
pmuludq xmm5, xmm4
pand xmm3, xmm14
pmuludq xmm0, xmm2
paddq xmm0, xmm5
paddq xmm8, xmm0
paddq xmm9, xmm1
movdqa xmm0, xmm4
movdqa xmm1, [rsp-0x18]
pmuludq xmm0, xmm2
pmuludq xmm2, [rsp-0x38]
paddq xmm12, xmm0
paddq xmm13, xmm2
movdqa xmm0, xmm6
movdqa xmm2, xmm1
pand xmm1, xmm14
psrlq xmm0, 0x1a
paddq xmm0, xmm9
movdqa xmm9, [ed25519$packedmask25]
psrlq xmm2, 0x1a
paddq xmm2, xmm10
movdqa xmm5, xmm2
movdqa xmm7, xmm2
movdqa xmm2, xmm0
pand xmm5, [ed25519$packedmask25]
psrlq xmm7, 0x19
psrlq xmm2, 0x19
paddq xmm15, xmm7
paddq xmm8, xmm2
movdqa xmm2, xmm15
pand xmm0, [ed25519$packedmask25]
movdqa xmm7, xmm15
psrlq xmm2, 0x1a
movdqa xmm6, xmm2
movdqa xmm2, xmm8
pand xmm8, xmm14
paddq xmm6, [rsp-0x8]
pand xmm7, xmm14
psrlq xmm2, 0x1a
paddq xmm12, xmm2
movdqa xmm2, xmm12
movdqa xmm4, xmm8
movdqa xmm8, xmm6
psrlq xmm2, 0x19
paddq xmm13, xmm2
pand xmm9, xmm6
psrlq xmm8, 0x19
paddq xmm3, xmm8
movdqa xmm8, xmm13
movdqa xmm6, [ed25519$packedmask25]
movdqa xmm2, xmm13
psrlq xmm8, 0x1a
paddq xmm8, [rsp+0xb8]
movdqa xmm10, xmm8
psrlq xmm8, 0x19
pmuludq xmm8, [ed25519$packednineteen]
paddq xmm1, xmm8
movdqa xmm11, xmm1
pand xmm1, xmm14
movdqa xmm8, xmm3
psrlq xmm11, 0x1a
paddq xmm5, xmm11
pand xmm3, xmm14
psrlq xmm8, 0x1a
paddq xmm0, xmm8
movdqa xmm8, xmm7
movdqa xmm11, xmm1
punpckhdq xmm1, xmm5
punpckldq xmm8, xmm9
punpckldq xmm11, xmm5
movdqa xmm13, [rsp+0x38]
pand xmm6, xmm12
punpckhdq xmm7, xmm9
movdqa xmm12, xmm4
punpcklqdq xmm11, xmm8
movdqa xmm8, xmm3
punpckhdq xmm3, xmm0
movdqa xmm9, xmm1
punpckhdq xmm4, xmm6
movdqa xmm5, [rsp-0x68]
pand xmm10, [ed25519$packedmask25]
movdqa xmm15, [rsp+0x48]
pand xmm2, xmm14
punpckldq xmm12, xmm6
movdqa xmm6, xmm5
punpcklqdq xmm9, xmm7
punpckldq xmm8, xmm0
movdqa xmm7, xmm3
movdqa xmm0, [rsp-0x58]
punpcklqdq xmm7, xmm4
punpcklqdq xmm8, xmm12
movdqa xmm12, xmm2
movdqa [rsp-0x48], xmm9
punpckldq xmm12, xmm10
movdqa [rsp-0x38], xmm7
punpckhdq xmm2, xmm10
movdqa xmm7, xmm13
movdqa xmm9, xmm13
punpckldq xmm6, xmm11
movdqa xmm10, [rsp-0x78]
punpckldq xmm7, xmm11
punpckhdq xmm9, xmm11
punpckhdq xmm5, xmm11
movdqa xmm1, xmm0
movdqa xmm11, xmm10
paddd xmm6, xmm7
punpckldq xmm1, xmm8
movdqa xmm4, xmm10
punpckhdq xmm11, xmm8
paddd xmm5, xmm9
punpckhdq xmm0, xmm8
movdqa xmm9, xmm5
movdqa xmm10, [rsp+0x8]
movdqa xmm3, xmm1
movdqa xmm1, xmm15
paddd xmm0, xmm11
punpcklqdq xmm9, xmm0
punpckhqdq xmm5, xmm0
pxor xmm0, xmm0
punpckldq xmm4, xmm8
movdqa xmm8, xmm6
punpckldq xmm10, xmm12
punpckldq xmm1, xmm12
movdqa xmm11, xmm0
paddd xmm3, xmm4
punpcklqdq xmm8, xmm3
punpckhqdq xmm6, xmm3
movdqa xmm4, xmm9
paddd xmm1, xmm10
punpckhqdq xmm11, xmm1
movdqa xmm7, xmm0
psrld xmm4, 0x1a
movdqa xmm12, xmm0
paddd xmm4, xmm5
movdqa xmm3, xmm11
movdqa xmm11, xmm8
punpcklqdq xmm7, xmm1
movdqa xmm1, [ed25519$packedmask26262626]
psrld xmm11, 0x1a
movdqa xmm10, xmm11
movdqa xmm11, xmm0
pand xmm9, xmm1
paddd xmm10, xmm6
movdqa xmm6, xmm4
pand xmm4, [ed25519$packedmask25252525]
movdqa xmm5, xmm10
psrld xmm6, 0x19
punpckhqdq xmm12, xmm6
psrld xmm5, 0x19
paddd xmm5, xmm9
movdqa xmm9, xmm5
punpcklqdq xmm11, xmm6
paddd xmm12, xmm7
movdqa xmm7, xmm12
pand xmm8, xmm1
psrld xmm9, 0x1a
paddd xmm9, xmm4
pand xmm12, xmm1
psrld xmm7, 0x1a
paddd xmm7, xmm3
movdqa xmm4, xmm7
paddd xmm8, xmm11
movdqa xmm6, xmm9
pand xmm5, xmm1
psrld xmm4, 0x19
movdqa xmm11, xmm4
movdqa xmm3, xmm4
psrld xmm6, 0x19
paddd xmm12, xmm6
pslld xmm11, 0x1
pslldq xmm6, 0x8
pand xmm9, [ed25519$packedmask25252525]
pslld xmm3, 0x4
paddd xmm3, xmm11
paddd xmm3, xmm4
psrldq xmm3, 0x8
por xmm3, xmm6
movdqa xmm11, xmm5
pand xmm10, [ed25519$packedmask25252525]
paddd xmm8, xmm3
movdqa xmm4, xmm8
psrld xmm11, 0x1a
pand xmm8, xmm1
movdqa xmm3, xmm11
pand xmm5, xmm1
psrld xmm4, 0x1a
paddd xmm3, xmm9
pand xmm7, [ed25519$packedmask25252525]
paddd xmm4, xmm10
movdqa xmm9, xmm8
movdqa xmm6, xmm5
punpckhqdq xmm8, xmm4
punpcklqdq xmm9, xmm4
punpcklqdq xmm6, xmm3
punpckhqdq xmm12, xmm7
pshufd xmm9, xmm9, 0xd8
punpckhqdq xmm5, xmm3
pshufd xmm3, xmm6, 0xd8
pshufd xmm8, xmm8, 0xd8
movdqa xmm7, xmm9
pshufd xmm12, xmm12, 0xd8
punpcklqdq xmm7, xmm3
pshufd xmm5, xmm5, 0xd8
movdqa xmm6, xmm8
movdqa xmm11, xmm12
movdqa [rdi+0x30], xmm7
punpcklqdq xmm6, xmm5
punpckhqdq xmm8, xmm5
punpcklqdq xmm11, xmm0
movdqa xmm5, [rsp-0x68]
punpckhqdq xmm9, xmm3
punpckhqdq xmm12, xmm0
movdqa xmm4, [rsp-0x58]
paddd xmm5, [ed25519$packed2p0]
psubd xmm5, xmm13
pshufd xmm13, xmm5, 0xf5
movdqa xmm10, xmm11
paddd xmm4, [ed25519$packed2p1]
movdqa xmm3, xmm4
movdqa xmm4, [ed25519$packed2p2]
punpckldq xmm2, xmm12
psubd xmm3, [rsp-0x78]
movdqa [rdi+0x50], xmm11
paddd xmm4, xmm15
psubd xmm4, [rsp+0x8]
pshufd xmm15, xmm5, 0xa0
movdqa [rdi+0x40], xmm6
punpckldq xmm10, xmm4
movdqa [rdi+0x80], xmm4
movdqa xmm11, [ed25519$sse2_bot32bitmask]
pand xmm13, xmm11
pand xmm15, xmm11
movdqa xmm11, xmm13
pand xmm13, [ed25519$packedmask25]
movdqa xmm5, xmm15
psrld xmm11, 0x19
pand xmm15, xmm14
psrld xmm5, 0x1a
movdqa xmm14, xmm11
psrldq xmm11, 0x8
paddd xmm3, xmm11
movdqa xmm11, xmm6
punpckhdq xmm6, xmm3
paddd xmm5, xmm13
pslldq xmm14, 0x8
paddd xmm14, xmm15
movdqa xmm13, xmm14
punpckldq xmm14, xmm5
punpckhdq xmm13, xmm5
movdqa xmm5, xmm7
punpckldq xmm11, xmm3
movdqa [rdi+0x70], xmm3
punpcklqdq xmm14, xmm13
movdqa xmm3, [rsp-0x48]
punpckldq xmm5, xmm14
punpckhdq xmm7, xmm14
movdqa xmm4, xmm3
movdqa [rdi+0x60], xmm14
movdqa xmm14, xmm3
punpckldq xmm4, xmm9
punpckhdq xmm14, xmm9
movdqa xmm3, [rsp-0x38]
paddd xmm4, [ed25519$packed32packed4p0]
psubd xmm4, xmm5
movdqa xmm12, xmm4
movdqa xmm13, xmm3
movdqa xmm9, xmm14
punpckhdq xmm3, xmm8
punpckldq xmm13, xmm8
movdqa xmm8, [ed25519$packed32packed4p1]
paddd xmm9, xmm8
psubd xmm9, xmm7
movdqa xmm7, xmm9
paddd xmm3, xmm8
psubd xmm3, xmm6
punpckhqdq xmm9, xmm3
punpcklqdq xmm7, xmm3
paddd xmm13, xmm8
paddd xmm2, xmm8
psubd xmm13, xmm11
movdqa xmm8, xmm4
movdqa xmm6, xmm0
psubd xmm2, xmm10
punpckhqdq xmm12, xmm13
movdqa xmm3, xmm7
pand xmm7, xmm1
punpcklqdq xmm8, xmm13
psrld xmm3, 0x1a
paddd xmm3, xmm9
movdqa xmm9, [ed25519$packedmask25252525]
movdqa xmm11, xmm7
movdqa xmm7, xmm3
pand xmm9, xmm3
movdqa xmm3, xmm0
psrld xmm7, 0x19
punpcklqdq xmm6, xmm2
movdqa xmm4, xmm8
punpckhqdq xmm3, xmm7
movdqa xmm5, xmm8
pand xmm4, xmm1
movdqa xmm10, xmm0
psrld xmm5, 0x1a
paddd xmm5, xmm12
paddd xmm6, xmm3
movdqa xmm3, xmm0
movdqa xmm8, [ed25519$packedmask25252525]
punpckhqdq xmm10, xmm2
punpcklqdq xmm3, xmm7
movdqa xmm2, xmm5
pand xmm8, xmm5
psrld xmm2, 0x19
paddd xmm2, xmm11
movdqa xmm11, xmm6
paddd xmm4, xmm3
movdqa xmm3, xmm6
movdqa xmm5, xmm2
pand xmm11, xmm1
psrld xmm3, 0x1a
paddd xmm3, xmm10
movdqa xmm10, [ed25519$packedmask25252525]
movdqa xmm6, xmm3
movdqa xmm7, xmm2
psrld xmm5, 0x1a
pand xmm10, xmm3
paddd xmm5, xmm9
psrld xmm6, 0x19
movdqa xmm9, xmm5
movdqa xmm3, xmm6
movdqa xmm2, xmm6
psrld xmm9, 0x19
pslld xmm3, 0x1
paddd xmm11, xmm9
pslld xmm2, 0x4
pslldq xmm9, 0x8
paddd xmm2, xmm3
paddd xmm2, xmm6
psrldq xmm2, 0x8
por xmm2, xmm9
pand xmm7, xmm1
pand xmm5, [ed25519$packedmask25252525]
paddd xmm4, xmm2
movdqa xmm3, xmm4
pand xmm4, xmm1
movdqa xmm2, xmm7
pand xmm1, xmm7
psrld xmm3, 0x1a
paddd xmm3, xmm8
psrld xmm2, 0x1a
movdqa xmm6, xmm4
paddd xmm2, xmm5
movdqa xmm5, xmm1
punpckhqdq xmm4, xmm3
punpcklqdq xmm6, xmm3
punpcklqdq xmm5, xmm2
movdqa xmm3, xmm11
punpckhqdq xmm1, xmm2
pshufd xmm6, xmm6, 0xd8
pshufd xmm5, xmm5, 0xd8
pshufd xmm4, xmm4, 0xd8
movdqa xmm2, xmm6
pshufd xmm1, xmm1, 0xd8
punpckhqdq xmm3, xmm10
punpcklqdq xmm2, xmm5
punpckhqdq xmm6, xmm5
pshufd xmm3, xmm3, 0xd8
movdqa [rdi], xmm2
movdqa xmm2, xmm4
punpckhqdq xmm4, xmm1
punpcklqdq xmm2, xmm1
movdqa [rdi+0x90], xmm6
movdqa [rdi+0x10], xmm2
movdqa xmm2, xmm3
punpckhqdq xmm3, xmm0
punpcklqdq xmm2, xmm0
movdqa [rdi+0xa0], xmm4
movdqa [rdi+0x20], xmm2
movdqa [rdi+0xb0], xmm3
add rsp, 0xd0
ret
end if
if used ed25519$pack | defined include_everything
; two arguments: rdi == output buffer (32 bytes), rsi == p
falign
ed25519$pack:
prolog ed25519$pack
push rbx r12
; TODO: cleanup/tigten the stack allocation
sub rsp, 0x210
mov rax, rsp
mov rbx, rdi
mov r12, rsi
and rax, 0xf
sub rsp, rax
mov [rsp+0x200], rax
; recip(rsp+0x60, rsi+0x60)
lea rdi, [rsp+0x110]
lea rsi, [rsi+0x60]
mov edx, 1
call curve25519$square_times
lea rdi, [rsp+0x140]
lea rsi, [rsp+0x110]
mov edx, 2
call curve25519$square_times
lea rdi, [rsp+0x170]
lea rsi, [rsp+0x140]
lea rdx, [r12+0x60]
call curve25519$mul
lea rdi, [rsp+0x110]
lea rsi, [rsp+0x170]
lea rdx, [rsp+0x110]
call curve25519$mul
lea rdi, [rsp+0x140]
lea rsi, [rsp+0x110]
mov edx, 1
call curve25519$square_times
lea rdi, [rsp+0x170]
lea rsi, [rsp+0x140]
lea rdx, [rsp+0x170]
call curve25519$mul
; recip 2^250 - 2^0
mov rdi, rsp
lea rsi, [rsp+0x170]
mov edx, 5
call curve25519$square_times
lea rdi, [rsp+0x170]
mov rsi, rsp
lea rdx, [rsp+0x170]
call curve25519$mul
mov rdi, rsp
lea rsi, [rsp+0x170]
mov edx, 10
call curve25519$square_times
lea rdi, [rsp+0x30]
mov rsi, rsp
lea rdx, [rsp+0x170]
call curve25519$mul
mov rdi, rsp
lea rsi, [rsp+0x30]
mov edx, 20
call curve25519$square_times
mov rdi, rsp
mov rsi, rsp
lea rdx, [rsp+0x30]
call curve25519$mul
mov rdi, rsp
mov rsi, rsp
mov edx, 10
call curve25519$square_times
lea rdi, [rsp+0x170]
mov rsi, rsp
lea rdx, [rsp+0x170]
call curve25519$mul
mov rdi, rsp
lea rsi, [rsp+0x170]
mov edx, 50
call curve25519$square_times
lea rdi, [rsp+0x30]
mov rsi, rsp
lea rdx, [rsp+0x170]
call curve25519$mul
mov rdi, rsp
lea rsi, [rsp+0x30]
mov edx, 100
call curve25519$square_times
mov rdi, rsp
mov rsi, rsp
lea rdx, [rsp+0x30]
call curve25519$mul
mov rdi, rsp
mov rsi, rsp
mov edx, 50
call curve25519$square_times
lea rdi, [rsp+0x170]
mov rsi, rsp
lea rdx, [rsp+0x170]
call curve25519$mul
; recip cont'd
lea rdi, [rsp+0x170]
lea rsi, [rsp+0x170]
mov edx, 5
call curve25519$square_times
lea rdi, [rsp+0x60]
lea rsi, [rsp+0x170]
lea rdx, [rsp+0x110]
call curve25519$mul
; (recip complete)
mov rdi, rsp
mov rsi, r12
lea rdx, [rsp+0x60]
call curve25519$mul
lea rdi, [rsp+0x30]
lea rsi, [r12+0x30]
lea rdx, [rsp+0x60]
call curve25519$mul
mov rdi, rbx
lea rsi, [rsp+0x30]
call curve25519$contract
lea rdi, [rsp+0x90]
mov rsi, rsp
call curve25519$contract
movzx eax, byte [rsp+0x90]
shl eax, 7
xor byte [rbx+31], al
; 0x0 == tx (t0)
; 0x30 == ty (c)
; 0x60 == zi
; 0x90 == parity
; 0x110 == a
; 0x140 == t0
; 0x170 == b
mov rcx, [rsp+0x200]
add rsp, rcx
add rsp, 0x210
pop r12 rbx
epilog
end if