You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1105 lines
30 KiB

.file "wp-mmx.s"
.text
.globl _whirlpool_block_mmx
.align 4
_whirlpool_block_mmx:
L_whirlpool_block_mmx_begin:
pushl %ebp
pushl %ebx
pushl %esi
pushl %edi
movl 20(%esp),%esi
movl 24(%esp),%edi
movl 28(%esp),%ebp
movl %esp,%eax
subl $148,%esp
andl $-64,%esp
leal 128(%esp),%ebx
movl %esi,(%ebx)
movl %edi,4(%ebx)
movl %ebp,8(%ebx)
movl %eax,16(%ebx)
call L000pic_point
L000pic_point:
popl %ebp
leal L001table-L000pic_point(%ebp),%ebp
xorl %ecx,%ecx
xorl %edx,%edx
movq (%esi),%mm0
movq 8(%esi),%mm1
movq 16(%esi),%mm2
movq 24(%esi),%mm3
movq 32(%esi),%mm4
movq 40(%esi),%mm5
movq 48(%esi),%mm6
movq 56(%esi),%mm7
L002outerloop:
movq %mm0,(%esp)
movq %mm1,8(%esp)
movq %mm2,16(%esp)
movq %mm3,24(%esp)
movq %mm4,32(%esp)
movq %mm5,40(%esp)
movq %mm6,48(%esp)
movq %mm7,56(%esp)
pxor (%edi),%mm0
pxor 8(%edi),%mm1
pxor 16(%edi),%mm2
pxor 24(%edi),%mm3
pxor 32(%edi),%mm4
pxor 40(%edi),%mm5
pxor 48(%edi),%mm6
pxor 56(%edi),%mm7
movq %mm0,64(%esp)
movq %mm1,72(%esp)
movq %mm2,80(%esp)
movq %mm3,88(%esp)
movq %mm4,96(%esp)
movq %mm5,104(%esp)
movq %mm6,112(%esp)
movq %mm7,120(%esp)
xorl %esi,%esi
movl %esi,12(%ebx)
.align 4,0x90
L003round:
movq 4096(%ebp,%esi,8),%mm0
movl (%esp),%eax
movl 4(%esp),%ebx
movzbl %al,%ecx
movzbl %ah,%edx
shrl $16,%eax
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor (%ebp,%esi,8),%mm0
movq 7(%ebp,%edi,8),%mm1
movl 8(%esp),%eax
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
movq 6(%ebp,%esi,8),%mm2
movq 5(%ebp,%edi,8),%mm3
shrl $16,%ebx
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
movq 4(%ebp,%esi,8),%mm4
movq 3(%ebp,%edi,8),%mm5
movl 12(%esp),%ebx
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
movq 2(%ebp,%esi,8),%mm6
movq 1(%ebp,%edi,8),%mm7
shrl $16,%eax
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor (%ebp,%esi,8),%mm1
pxor 7(%ebp,%edi,8),%mm2
movl 16(%esp),%eax
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 6(%ebp,%esi,8),%mm3
pxor 5(%ebp,%edi,8),%mm4
shrl $16,%ebx
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 4(%ebp,%esi,8),%mm5
pxor 3(%ebp,%edi,8),%mm6
movl 20(%esp),%ebx
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor 2(%ebp,%esi,8),%mm7
pxor 1(%ebp,%edi,8),%mm0
shrl $16,%eax
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor (%ebp,%esi,8),%mm2
pxor 7(%ebp,%edi,8),%mm3
movl 24(%esp),%eax
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 6(%ebp,%esi,8),%mm4
pxor 5(%ebp,%edi,8),%mm5
shrl $16,%ebx
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 4(%ebp,%esi,8),%mm6
pxor 3(%ebp,%edi,8),%mm7
movl 28(%esp),%ebx
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor 2(%ebp,%esi,8),%mm0
pxor 1(%ebp,%edi,8),%mm1
shrl $16,%eax
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor (%ebp,%esi,8),%mm3
pxor 7(%ebp,%edi,8),%mm4
movl 32(%esp),%eax
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 6(%ebp,%esi,8),%mm5
pxor 5(%ebp,%edi,8),%mm6
shrl $16,%ebx
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 4(%ebp,%esi,8),%mm7
pxor 3(%ebp,%edi,8),%mm0
movl 36(%esp),%ebx
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor 2(%ebp,%esi,8),%mm1
pxor 1(%ebp,%edi,8),%mm2
shrl $16,%eax
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor (%ebp,%esi,8),%mm4
pxor 7(%ebp,%edi,8),%mm5
movl 40(%esp),%eax
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 6(%ebp,%esi,8),%mm6
pxor 5(%ebp,%edi,8),%mm7
shrl $16,%ebx
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 4(%ebp,%esi,8),%mm0
pxor 3(%ebp,%edi,8),%mm1
movl 44(%esp),%ebx
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor 2(%ebp,%esi,8),%mm2
pxor 1(%ebp,%edi,8),%mm3
shrl $16,%eax
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor (%ebp,%esi,8),%mm5
pxor 7(%ebp,%edi,8),%mm6
movl 48(%esp),%eax
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 6(%ebp,%esi,8),%mm7
pxor 5(%ebp,%edi,8),%mm0
shrl $16,%ebx
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 4(%ebp,%esi,8),%mm1
pxor 3(%ebp,%edi,8),%mm2
movl 52(%esp),%ebx
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor 2(%ebp,%esi,8),%mm3
pxor 1(%ebp,%edi,8),%mm4
shrl $16,%eax
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor (%ebp,%esi,8),%mm6
pxor 7(%ebp,%edi,8),%mm7
movl 56(%esp),%eax
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 6(%ebp,%esi,8),%mm0
pxor 5(%ebp,%edi,8),%mm1
shrl $16,%ebx
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 4(%ebp,%esi,8),%mm2
pxor 3(%ebp,%edi,8),%mm3
movl 60(%esp),%ebx
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor 2(%ebp,%esi,8),%mm4
pxor 1(%ebp,%edi,8),%mm5
shrl $16,%eax
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor (%ebp,%esi,8),%mm7
pxor 7(%ebp,%edi,8),%mm0
movl 64(%esp),%eax
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 6(%ebp,%esi,8),%mm1
pxor 5(%ebp,%edi,8),%mm2
shrl $16,%ebx
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 4(%ebp,%esi,8),%mm3
pxor 3(%ebp,%edi,8),%mm4
movl 68(%esp),%ebx
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor 2(%ebp,%esi,8),%mm5
pxor 1(%ebp,%edi,8),%mm6
movq %mm0,(%esp)
movq %mm1,8(%esp)
movq %mm2,16(%esp)
movq %mm3,24(%esp)
movq %mm4,32(%esp)
movq %mm5,40(%esp)
movq %mm6,48(%esp)
movq %mm7,56(%esp)
shrl $16,%eax
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor (%ebp,%esi,8),%mm0
pxor 7(%ebp,%edi,8),%mm1
movl 72(%esp),%eax
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 6(%ebp,%esi,8),%mm2
pxor 5(%ebp,%edi,8),%mm3
shrl $16,%ebx
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 4(%ebp,%esi,8),%mm4
pxor 3(%ebp,%edi,8),%mm5
movl 76(%esp),%ebx
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor 2(%ebp,%esi,8),%mm6
pxor 1(%ebp,%edi,8),%mm7
shrl $16,%eax
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor (%ebp,%esi,8),%mm1
pxor 7(%ebp,%edi,8),%mm2
movl 80(%esp),%eax
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 6(%ebp,%esi,8),%mm3
pxor 5(%ebp,%edi,8),%mm4
shrl $16,%ebx
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 4(%ebp,%esi,8),%mm5
pxor 3(%ebp,%edi,8),%mm6
movl 84(%esp),%ebx
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor 2(%ebp,%esi,8),%mm7
pxor 1(%ebp,%edi,8),%mm0
shrl $16,%eax
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor (%ebp,%esi,8),%mm2
pxor 7(%ebp,%edi,8),%mm3
movl 88(%esp),%eax
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 6(%ebp,%esi,8),%mm4
pxor 5(%ebp,%edi,8),%mm5
shrl $16,%ebx
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 4(%ebp,%esi,8),%mm6
pxor 3(%ebp,%edi,8),%mm7
movl 92(%esp),%ebx
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor 2(%ebp,%esi,8),%mm0
pxor 1(%ebp,%edi,8),%mm1
shrl $16,%eax
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor (%ebp,%esi,8),%mm3
pxor 7(%ebp,%edi,8),%mm4
movl 96(%esp),%eax
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 6(%ebp,%esi,8),%mm5
pxor 5(%ebp,%edi,8),%mm6
shrl $16,%ebx
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 4(%ebp,%esi,8),%mm7
pxor 3(%ebp,%edi,8),%mm0
movl 100(%esp),%ebx
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor 2(%ebp,%esi,8),%mm1
pxor 1(%ebp,%edi,8),%mm2
shrl $16,%eax
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor (%ebp,%esi,8),%mm4
pxor 7(%ebp,%edi,8),%mm5
movl 104(%esp),%eax
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 6(%ebp,%esi,8),%mm6
pxor 5(%ebp,%edi,8),%mm7
shrl $16,%ebx
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 4(%ebp,%esi,8),%mm0
pxor 3(%ebp,%edi,8),%mm1
movl 108(%esp),%ebx
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor 2(%ebp,%esi,8),%mm2
pxor 1(%ebp,%edi,8),%mm3
shrl $16,%eax
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor (%ebp,%esi,8),%mm5
pxor 7(%ebp,%edi,8),%mm6
movl 112(%esp),%eax
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 6(%ebp,%esi,8),%mm7
pxor 5(%ebp,%edi,8),%mm0
shrl $16,%ebx
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 4(%ebp,%esi,8),%mm1
pxor 3(%ebp,%edi,8),%mm2
movl 116(%esp),%ebx
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor 2(%ebp,%esi,8),%mm3
pxor 1(%ebp,%edi,8),%mm4
shrl $16,%eax
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor (%ebp,%esi,8),%mm6
pxor 7(%ebp,%edi,8),%mm7
movl 120(%esp),%eax
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 6(%ebp,%esi,8),%mm0
pxor 5(%ebp,%edi,8),%mm1
shrl $16,%ebx
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 4(%ebp,%esi,8),%mm2
pxor 3(%ebp,%edi,8),%mm3
movl 124(%esp),%ebx
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor 2(%ebp,%esi,8),%mm4
pxor 1(%ebp,%edi,8),%mm5
shrl $16,%eax
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor (%ebp,%esi,8),%mm7
pxor 7(%ebp,%edi,8),%mm0
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 6(%ebp,%esi,8),%mm1
pxor 5(%ebp,%edi,8),%mm2
shrl $16,%ebx
leal (%ecx,%ecx,1),%esi
movzbl %bl,%ecx
leal (%edx,%edx,1),%edi
movzbl %bh,%edx
pxor 4(%ebp,%esi,8),%mm3
pxor 3(%ebp,%edi,8),%mm4
leal (%ecx,%ecx,1),%esi
movzbl %al,%ecx
leal (%edx,%edx,1),%edi
movzbl %ah,%edx
pxor 2(%ebp,%esi,8),%mm5
pxor 1(%ebp,%edi,8),%mm6
leal 128(%esp),%ebx
movl 12(%ebx),%esi
addl $1,%esi
cmpl $10,%esi
je L004roundsdone
movl %esi,12(%ebx)
movq %mm0,64(%esp)
movq %mm1,72(%esp)
movq %mm2,80(%esp)
movq %mm3,88(%esp)
movq %mm4,96(%esp)
movq %mm5,104(%esp)
movq %mm6,112(%esp)
movq %mm7,120(%esp)
jmp L003round
.align 4,0x90
L004roundsdone:
movl (%ebx),%esi
movl 4(%ebx),%edi
movl 8(%ebx),%eax
pxor (%edi),%mm0
pxor 8(%edi),%mm1
pxor 16(%edi),%mm2
pxor 24(%edi),%mm3
pxor 32(%edi),%mm4
pxor 40(%edi),%mm5
pxor 48(%edi),%mm6
pxor 56(%edi),%mm7
pxor (%esi),%mm0
pxor 8(%esi),%mm1
pxor 16(%esi),%mm2
pxor 24(%esi),%mm3
pxor 32(%esi),%mm4
pxor 40(%esi),%mm5
pxor 48(%esi),%mm6
pxor 56(%esi),%mm7
movq %mm0,(%esi)
movq %mm1,8(%esi)
movq %mm2,16(%esi)
movq %mm3,24(%esi)
movq %mm4,32(%esi)
movq %mm5,40(%esi)
movq %mm6,48(%esi)
movq %mm7,56(%esi)
leal 64(%edi),%edi
subl $1,%eax
jz L005alldone
movl %edi,4(%ebx)
movl %eax,8(%ebx)
jmp L002outerloop
L005alldone:
emms
movl 16(%ebx),%esp
popl %edi
popl %esi
popl %ebx
popl %ebp
ret
.align 6,0x90
L001table:
.byte 24,24,96,24,192,120,48,216
.byte 24,24,96,24,192,120,48,216
.byte 35,35,140,35,5,175,70,38
.byte 35,35,140,35,5,175,70,38
.byte 198,198,63,198,126,249,145,184
.byte 198,198,63,198,126,249,145,184
.byte 232,232,135,232,19,111,205,251
.byte 232,232,135,232,19,111,205,251
.byte 135,135,38,135,76,161,19,203
.byte 135,135,38,135,76,161,19,203
.byte 184,184,218,184,169,98,109,17
.byte 184,184,218,184,169,98,109,17
.byte 1,1,4,1,8,5,2,9
.byte 1,1,4,1,8,5,2,9
.byte 79,79,33,79,66,110,158,13
.byte 79,79,33,79,66,110,158,13
.byte 54,54,216,54,173,238,108,155
.byte 54,54,216,54,173,238,108,155
.byte 166,166,162,166,89,4,81,255
.byte 166,166,162,166,89,4,81,255
.byte 210,210,111,210,222,189,185,12
.byte 210,210,111,210,222,189,185,12
.byte 245,245,243,245,251,6,247,14
.byte 245,245,243,245,251,6,247,14
.byte 121,121,249,121,239,128,242,150
.byte 121,121,249,121,239,128,242,150
.byte 111,111,161,111,95,206,222,48
.byte 111,111,161,111,95,206,222,48
.byte 145,145,126,145,252,239,63,109
.byte 145,145,126,145,252,239,63,109
.byte 82,82,85,82,170,7,164,248
.byte 82,82,85,82,170,7,164,248
.byte 96,96,157,96,39,253,192,71
.byte 96,96,157,96,39,253,192,71
.byte 188,188,202,188,137,118,101,53
.byte 188,188,202,188,137,118,101,53
.byte 155,155,86,155,172,205,43,55
.byte 155,155,86,155,172,205,43,55
.byte 142,142,2,142,4,140,1,138
.byte 142,142,2,142,4,140,1,138
.byte 163,163,182,163,113,21,91,210
.byte 163,163,182,163,113,21,91,210
.byte 12,12,48,12,96,60,24,108
.byte 12,12,48,12,96,60,24,108
.byte 123,123,241,123,255,138,246,132
.byte 123,123,241,123,255,138,246,132
.byte 53,53,212,53,181,225,106,128
.byte 53,53,212,53,181,225,106,128
.byte 29,29,116,29,232,105,58,245
.byte 29,29,116,29,232,105,58,245
.byte 224,224,167,224,83,71,221,179
.byte 224,224,167,224,83,71,221,179
.byte 215,215,123,215,246,172,179,33
.byte 215,215,123,215,246,172,179,33
.byte 194,194,47,194,94,237,153,156
.byte 194,194,47,194,94,237,153,156
.byte 46,46,184,46,109,150,92,67
.byte 46,46,184,46,109,150,92,67
.byte 75,75,49,75,98,122,150,41
.byte 75,75,49,75,98,122,150,41
.byte 254,254,223,254,163,33,225,93
.byte 254,254,223,254,163,33,225,93
.byte 87,87,65,87,130,22,174,213
.byte 87,87,65,87,130,22,174,213
.byte 21,21,84,21,168,65,42,189
.byte 21,21,84,21,168,65,42,189
.byte 119,119,193,119,159,182,238,232
.byte 119,119,193,119,159,182,238,232
.byte 55,55,220,55,165,235,110,146
.byte 55,55,220,55,165,235,110,146
.byte 229,229,179,229,123,86,215,158
.byte 229,229,179,229,123,86,215,158
.byte 159,159,70,159,140,217,35,19
.byte 159,159,70,159,140,217,35,19
.byte 240,240,231,240,211,23,253,35
.byte 240,240,231,240,211,23,253,35
.byte 74,74,53,74,106,127,148,32
.byte 74,74,53,74,106,127,148,32
.byte 218,218,79,218,158,149,169,68
.byte 218,218,79,218,158,149,169,68
.byte 88,88,125,88,250,37,176,162
.byte 88,88,125,88,250,37,176,162
.byte 201,201,3,201,6,202,143,207
.byte 201,201,3,201,6,202,143,207
.byte 41,41,164,41,85,141,82,124
.byte 41,41,164,41,85,141,82,124
.byte 10,10,40,10,80,34,20,90
.byte 10,10,40,10,80,34,20,90
.byte 177,177,254,177,225,79,127,80
.byte 177,177,254,177,225,79,127,80
.byte 160,160,186,160,105,26,93,201
.byte 160,160,186,160,105,26,93,201
.byte 107,107,177,107,127,218,214,20
.byte 107,107,177,107,127,218,214,20
.byte 133,133,46,133,92,171,23,217
.byte 133,133,46,133,92,171,23,217
.byte 189,189,206,189,129,115,103,60
.byte 189,189,206,189,129,115,103,60
.byte 93,93,105,93,210,52,186,143
.byte 93,93,105,93,210,52,186,143
.byte 16,16,64,16,128,80,32,144
.byte 16,16,64,16,128,80,32,144
.byte 244,244,247,244,243,3,245,7
.byte 244,244,247,244,243,3,245,7
.byte 203,203,11,203,22,192,139,221
.byte 203,203,11,203,22,192,139,221
.byte 62,62,248,62,237,198,124,211
.byte 62,62,248,62,237,198,124,211
.byte 5,5,20,5,40,17,10,45
.byte 5,5,20,5,40,17,10,45
.byte 103,103,129,103,31,230,206,120
.byte 103,103,129,103,31,230,206,120
.byte 228,228,183,228,115,83,213,151
.byte 228,228,183,228,115,83,213,151
.byte 39,39,156,39,37,187,78,2
.byte 39,39,156,39,37,187,78,2
.byte 65,65,25,65,50,88,130,115
.byte 65,65,25,65,50,88,130,115
.byte 139,139,22,139,44,157,11,167
.byte 139,139,22,139,44,157,11,167
.byte 167,167,166,167,81,1,83,246
.byte 167,167,166,167,81,1,83,246
.byte 125,125,233,125,207,148,250,178
.byte 125,125,233,125,207,148,250,178
.byte 149,149,110,149,220,251,55,73
.byte 149,149,110,149,220,251,55,73
.byte 216,216,71,216,142,159,173,86
.byte 216,216,71,216,142,159,173,86
.byte 251,251,203,251,139,48,235,112
.byte 251,251,203,251,139,48,235,112
.byte 238,238,159,238,35,113,193,205
.byte 238,238,159,238,35,113,193,205
.byte 124,124,237,124,199,145,248,187
.byte 124,124,237,124,199,145,248,187
.byte 102,102,133,102,23,227,204,113
.byte 102,102,133,102,23,227,204,113
.byte 221,221,83,221,166,142,167,123
.byte 221,221,83,221,166,142,167,123
.byte 23,23,92,23,184,75,46,175
.byte 23,23,92,23,184,75,46,175
.byte 71,71,1,71,2,70,142,69
.byte 71,71,1,71,2,70,142,69
.byte 158,158,66,158,132,220,33,26
.byte 158,158,66,158,132,220,33,26
.byte 202,202,15,202,30,197,137,212
.byte 202,202,15,202,30,197,137,212
.byte 45,45,180,45,117,153,90,88
.byte 45,45,180,45,117,153,90,88
.byte 191,191,198,191,145,121,99,46
.byte 191,191,198,191,145,121,99,46
.byte 7,7,28,7,56,27,14,63
.byte 7,7,28,7,56,27,14,63
.byte 173,173,142,173,1,35,71,172
.byte 173,173,142,173,1,35,71,172
.byte 90,90,117,90,234,47,180,176
.byte 90,90,117,90,234,47,180,176
.byte 131,131,54,131,108,181,27,239
.byte 131,131,54,131,108,181,27,239
.byte 51,51,204,51,133,255,102,182
.byte 51,51,204,51,133,255,102,182
.byte 99,99,145,99,63,242,198,92
.byte 99,99,145,99,63,242,198,92
.byte 2,2,8,2,16,10,4,18
.byte 2,2,8,2,16,10,4,18
.byte 170,170,146,170,57,56,73,147
.byte 170,170,146,170,57,56,73,147
.byte 113,113,217,113,175,168,226,222
.byte 113,113,217,113,175,168,226,222
.byte 200,200,7,200,14,207,141,198
.byte 200,200,7,200,14,207,141,198
.byte 25,25,100,25,200,125,50,209
.byte 25,25,100,25,200,125,50,209
.byte 73,73,57,73,114,112,146,59
.byte 73,73,57,73,114,112,146,59
.byte 217,217,67,217,134,154,175,95
.byte 217,217,67,217,134,154,175,95
.byte 242,242,239,242,195,29,249,49
.byte 242,242,239,242,195,29,249,49
.byte 227,227,171,227,75,72,219,168
.byte 227,227,171,227,75,72,219,168
.byte 91,91,113,91,226,42,182,185
.byte 91,91,113,91,226,42,182,185
.byte 136,136,26,136,52,146,13,188
.byte 136,136,26,136,52,146,13,188
.byte 154,154,82,154,164,200,41,62
.byte 154,154,82,154,164,200,41,62
.byte 38,38,152,38,45,190,76,11
.byte 38,38,152,38,45,190,76,11
.byte 50,50,200,50,141,250,100,191
.byte 50,50,200,50,141,250,100,191
.byte 176,176,250,176,233,74,125,89
.byte 176,176,250,176,233,74,125,89
.byte 233,233,131,233,27,106,207,242
.byte 233,233,131,233,27,106,207,242
.byte 15,15,60,15,120,51,30,119
.byte 15,15,60,15,120,51,30,119
.byte 213,213,115,213,230,166,183,51
.byte 213,213,115,213,230,166,183,51
.byte 128,128,58,128,116,186,29,244
.byte 128,128,58,128,116,186,29,244
.byte 190,190,194,190,153,124,97,39
.byte 190,190,194,190,153,124,97,39
.byte 205,205,19,205,38,222,135,235
.byte 205,205,19,205,38,222,135,235
.byte 52,52,208,52,189,228,104,137
.byte 52,52,208,52,189,228,104,137
.byte 72,72,61,72,122,117,144,50
.byte 72,72,61,72,122,117,144,50
.byte 255,255,219,255,171,36,227,84
.byte 255,255,219,255,171,36,227,84
.byte 122,122,245,122,247,143,244,141
.byte 122,122,245,122,247,143,244,141
.byte 144,144,122,144,244,234,61,100
.byte 144,144,122,144,244,234,61,100
.byte 95,95,97,95,194,62,190,157
.byte 95,95,97,95,194,62,190,157
.byte 32,32,128,32,29,160,64,61
.byte 32,32,128,32,29,160,64,61
.byte 104,104,189,104,103,213,208,15
.byte 104,104,189,104,103,213,208,15
.byte 26,26,104,26,208,114,52,202
.byte 26,26,104,26,208,114,52,202
.byte 174,174,130,174,25,44,65,183
.byte 174,174,130,174,25,44,65,183
.byte 180,180,234,180,201,94,117,125
.byte 180,180,234,180,201,94,117,125
.byte 84,84,77,84,154,25,168,206
.byte 84,84,77,84,154,25,168,206
.byte 147,147,118,147,236,229,59,127
.byte 147,147,118,147,236,229,59,127
.byte 34,34,136,34,13,170,68,47
.byte 34,34,136,34,13,170,68,47
.byte 100,100,141,100,7,233,200,99
.byte 100,100,141,100,7,233,200,99
.byte 241,241,227,241,219,18,255,42
.byte 241,241,227,241,219,18,255,42
.byte 115,115,209,115,191,162,230,204
.byte 115,115,209,115,191,162,230,204
.byte 18,18,72,18,144,90,36,130
.byte 18,18,72,18,144,90,36,130
.byte 64,64,29,64,58,93,128,122
.byte 64,64,29,64,58,93,128,122
.byte 8,8,32,8,64,40,16,72
.byte 8,8,32,8,64,40,16,72
.byte 195,195,43,195,86,232,155,149
.byte 195,195,43,195,86,232,155,149
.byte 236,236,151,236,51,123,197,223
.byte 236,236,151,236,51,123,197,223
.byte 219,219,75,219,150,144,171,77
.byte 219,219,75,219,150,144,171,77
.byte 161,161,190,161,97,31,95,192
.byte 161,161,190,161,97,31,95,192
.byte 141,141,14,141,28,131,7,145
.byte 141,141,14,141,28,131,7,145
.byte 61,61,244,61,245,201,122,200
.byte 61,61,244,61,245,201,122,200
.byte 151,151,102,151,204,241,51,91
.byte 151,151,102,151,204,241,51,91
.byte 0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0
.byte 207,207,27,207,54,212,131,249
.byte 207,207,27,207,54,212,131,249
.byte 43,43,172,43,69,135,86,110
.byte 43,43,172,43,69,135,86,110
.byte 118,118,197,118,151,179,236,225
.byte 118,118,197,118,151,179,236,225
.byte 130,130,50,130,100,176,25,230
.byte 130,130,50,130,100,176,25,230
.byte 214,214,127,214,254,169,177,40
.byte 214,214,127,214,254,169,177,40
.byte 27,27,108,27,216,119,54,195
.byte 27,27,108,27,216,119,54,195
.byte 181,181,238,181,193,91,119,116
.byte 181,181,238,181,193,91,119,116
.byte 175,175,134,175,17,41,67,190
.byte 175,175,134,175,17,41,67,190
.byte 106,106,181,106,119,223,212,29
.byte 106,106,181,106,119,223,212,29
.byte 80,80,93,80,186,13,160,234
.byte 80,80,93,80,186,13,160,234
.byte 69,69,9,69,18,76,138,87
.byte 69,69,9,69,18,76,138,87
.byte 243,243,235,243,203,24,251,56
.byte 243,243,235,243,203,24,251,56
.byte 48,48,192,48,157,240,96,173
.byte 48,48,192,48,157,240,96,173
.byte 239,239,155,239,43,116,195,196
.byte 239,239,155,239,43,116,195,196
.byte 63,63,252,63,229,195,126,218
.byte 63,63,252,63,229,195,126,218
.byte 85,85,73,85,146,28,170,199
.byte 85,85,73,85,146,28,170,199
.byte 162,162,178,162,121,16,89,219
.byte 162,162,178,162,121,16,89,219
.byte 234,234,143,234,3,101,201,233
.byte 234,234,143,234,3,101,201,233
.byte 101,101,137,101,15,236,202,106
.byte 101,101,137,101,15,236,202,106
.byte 186,186,210,186,185,104,105,3
.byte 186,186,210,186,185,104,105,3
.byte 47,47,188,47,101,147,94,74
.byte 47,47,188,47,101,147,94,74
.byte 192,192,39,192,78,231,157,142
.byte 192,192,39,192,78,231,157,142
.byte 222,222,95,222,190,129,161,96
.byte 222,222,95,222,190,129,161,96
.byte 28,28,112,28,224,108,56,252
.byte 28,28,112,28,224,108,56,252
.byte 253,253,211,253,187,46,231,70
.byte 253,253,211,253,187,46,231,70
.byte 77,77,41,77,82,100,154,31
.byte 77,77,41,77,82,100,154,31
.byte 146,146,114,146,228,224,57,118
.byte 146,146,114,146,228,224,57,118
.byte 117,117,201,117,143,188,234,250
.byte 117,117,201,117,143,188,234,250
.byte 6,6,24,6,48,30,12,54
.byte 6,6,24,6,48,30,12,54
.byte 138,138,18,138,36,152,9,174
.byte 138,138,18,138,36,152,9,174
.byte 178,178,242,178,249,64,121,75
.byte 178,178,242,178,249,64,121,75
.byte 230,230,191,230,99,89,209,133
.byte 230,230,191,230,99,89,209,133
.byte 14,14,56,14,112,54,28,126
.byte 14,14,56,14,112,54,28,126
.byte 31,31,124,31,248,99,62,231
.byte 31,31,124,31,248,99,62,231
.byte 98,98,149,98,55,247,196,85
.byte 98,98,149,98,55,247,196,85
.byte 212,212,119,212,238,163,181,58
.byte 212,212,119,212,238,163,181,58
.byte 168,168,154,168,41,50,77,129
.byte 168,168,154,168,41,50,77,129
.byte 150,150,98,150,196,244,49,82
.byte 150,150,98,150,196,244,49,82
.byte 249,249,195,249,155,58,239,98
.byte 249,249,195,249,155,58,239,98
.byte 197,197,51,197,102,246,151,163
.byte 197,197,51,197,102,246,151,163
.byte 37,37,148,37,53,177,74,16
.byte 37,37,148,37,53,177,74,16
.byte 89,89,121,89,242,32,178,171
.byte 89,89,121,89,242,32,178,171
.byte 132,132,42,132,84,174,21,208
.byte 132,132,42,132,84,174,21,208
.byte 114,114,213,114,183,167,228,197
.byte 114,114,213,114,183,167,228,197
.byte 57,57,228,57,213,221,114,236
.byte 57,57,228,57,213,221,114,236
.byte 76,76,45,76,90,97,152,22
.byte 76,76,45,76,90,97,152,22
.byte 94,94,101,94,202,59,188,148
.byte 94,94,101,94,202,59,188,148
.byte 120,120,253,120,231,133,240,159
.byte 120,120,253,120,231,133,240,159
.byte 56,56,224,56,221,216,112,229
.byte 56,56,224,56,221,216,112,229
.byte 140,140,10,140,20,134,5,152
.byte 140,140,10,140,20,134,5,152
.byte 209,209,99,209,198,178,191,23
.byte 209,209,99,209,198,178,191,23
.byte 165,165,174,165,65,11,87,228
.byte 165,165,174,165,65,11,87,228
.byte 226,226,175,226,67,77,217,161
.byte 226,226,175,226,67,77,217,161
.byte 97,97,153,97,47,248,194,78
.byte 97,97,153,97,47,248,194,78
.byte 179,179,246,179,241,69,123,66
.byte 179,179,246,179,241,69,123,66
.byte 33,33,132,33,21,165,66,52
.byte 33,33,132,33,21,165,66,52
.byte 156,156,74,156,148,214,37,8
.byte 156,156,74,156,148,214,37,8
.byte 30,30,120,30,240,102,60,238
.byte 30,30,120,30,240,102,60,238
.byte 67,67,17,67,34,82,134,97
.byte 67,67,17,67,34,82,134,97
.byte 199,199,59,199,118,252,147,177
.byte 199,199,59,199,118,252,147,177
.byte 252,252,215,252,179,43,229,79
.byte 252,252,215,252,179,43,229,79
.byte 4,4,16,4,32,20,8,36
.byte 4,4,16,4,32,20,8,36
.byte 81,81,89,81,178,8,162,227
.byte 81,81,89,81,178,8,162,227
.byte 153,153,94,153,188,199,47,37
.byte 153,153,94,153,188,199,47,37
.byte 109,109,169,109,79,196,218,34
.byte 109,109,169,109,79,196,218,34
.byte 13,13,52,13,104,57,26,101
.byte 13,13,52,13,104,57,26,101
.byte 250,250,207,250,131,53,233,121
.byte 250,250,207,250,131,53,233,121
.byte 223,223,91,223,182,132,163,105
.byte 223,223,91,223,182,132,163,105
.byte 126,126,229,126,215,155,252,169
.byte 126,126,229,126,215,155,252,169
.byte 36,36,144,36,61,180,72,25
.byte 36,36,144,36,61,180,72,25
.byte 59,59,236,59,197,215,118,254
.byte 59,59,236,59,197,215,118,254
.byte 171,171,150,171,49,61,75,154
.byte 171,171,150,171,49,61,75,154
.byte 206,206,31,206,62,209,129,240
.byte 206,206,31,206,62,209,129,240
.byte 17,17,68,17,136,85,34,153
.byte 17,17,68,17,136,85,34,153
.byte 143,143,6,143,12,137,3,131
.byte 143,143,6,143,12,137,3,131
.byte 78,78,37,78,74,107,156,4
.byte 78,78,37,78,74,107,156,4
.byte 183,183,230,183,209,81,115,102
.byte 183,183,230,183,209,81,115,102
.byte 235,235,139,235,11,96,203,224
.byte 235,235,139,235,11,96,203,224
.byte 60,60,240,60,253,204,120,193
.byte 60,60,240,60,253,204,120,193
.byte 129,129,62,129,124,191,31,253
.byte 129,129,62,129,124,191,31,253
.byte 148,148,106,148,212,254,53,64
.byte 148,148,106,148,212,254,53,64
.byte 247,247,251,247,235,12,243,28
.byte 247,247,251,247,235,12,243,28
.byte 185,185,222,185,161,103,111,24
.byte 185,185,222,185,161,103,111,24
.byte 19,19,76,19,152,95,38,139
.byte 19,19,76,19,152,95,38,139
.byte 44,44,176,44,125,156,88,81
.byte 44,44,176,44,125,156,88,81
.byte 211,211,107,211,214,184,187,5
.byte 211,211,107,211,214,184,187,5
.byte 231,231,187,231,107,92,211,140
.byte 231,231,187,231,107,92,211,140
.byte 110,110,165,110,87,203,220,57
.byte 110,110,165,110,87,203,220,57
.byte 196,196,55,196,110,243,149,170
.byte 196,196,55,196,110,243,149,170
.byte 3,3,12,3,24,15,6,27
.byte 3,3,12,3,24,15,6,27
.byte 86,86,69,86,138,19,172,220
.byte 86,86,69,86,138,19,172,220
.byte 68,68,13,68,26,73,136,94
.byte 68,68,13,68,26,73,136,94
.byte 127,127,225,127,223,158,254,160
.byte 127,127,225,127,223,158,254,160
.byte 169,169,158,169,33,55,79,136
.byte 169,169,158,169,33,55,79,136
.byte 42,42,168,42,77,130,84,103
.byte 42,42,168,42,77,130,84,103
.byte 187,187,214,187,177,109,107,10
.byte 187,187,214,187,177,109,107,10
.byte 193,193,35,193,70,226,159,135
.byte 193,193,35,193,70,226,159,135
.byte 83,83,81,83,162,2,166,241
.byte 83,83,81,83,162,2,166,241
.byte 220,220,87,220,174,139,165,114
.byte 220,220,87,220,174,139,165,114
.byte 11,11,44,11,88,39,22,83
.byte 11,11,44,11,88,39,22,83
.byte 157,157,78,157,156,211,39,1
.byte 157,157,78,157,156,211,39,1
.byte 108,108,173,108,71,193,216,43
.byte 108,108,173,108,71,193,216,43
.byte 49,49,196,49,149,245,98,164
.byte 49,49,196,49,149,245,98,164
.byte 116,116,205,116,135,185,232,243
.byte 116,116,205,116,135,185,232,243
.byte 246,246,255,246,227,9,241,21
.byte 246,246,255,246,227,9,241,21
.byte 70,70,5,70,10,67,140,76
.byte 70,70,5,70,10,67,140,76
.byte 172,172,138,172,9,38,69,165
.byte 172,172,138,172,9,38,69,165
.byte 137,137,30,137,60,151,15,181
.byte 137,137,30,137,60,151,15,181
.byte 20,20,80,20,160,68,40,180
.byte 20,20,80,20,160,68,40,180
.byte 225,225,163,225,91,66,223,186
.byte 225,225,163,225,91,66,223,186
.byte 22,22,88,22,176,78,44,166
.byte 22,22,88,22,176,78,44,166
.byte 58,58,232,58,205,210,116,247
.byte 58,58,232,58,205,210,116,247
.byte 105,105,185,105,111,208,210,6
.byte 105,105,185,105,111,208,210,6
.byte 9,9,36,9,72,45,18,65
.byte 9,9,36,9,72,45,18,65
.byte 112,112,221,112,167,173,224,215
.byte 112,112,221,112,167,173,224,215
.byte 182,182,226,182,217,84,113,111
.byte 182,182,226,182,217,84,113,111
.byte 208,208,103,208,206,183,189,30
.byte 208,208,103,208,206,183,189,30
.byte 237,237,147,237,59,126,199,214
.byte 237,237,147,237,59,126,199,214
.byte 204,204,23,204,46,219,133,226
.byte 204,204,23,204,46,219,133,226
.byte 66,66,21,66,42,87,132,104
.byte 66,66,21,66,42,87,132,104
.byte 152,152,90,152,180,194,45,44
.byte 152,152,90,152,180,194,45,44
.byte 164,164,170,164,73,14,85,237
.byte 164,164,170,164,73,14,85,237
.byte 40,40,160,40,93,136,80,117
.byte 40,40,160,40,93,136,80,117
.byte 92,92,109,92,218,49,184,134
.byte 92,92,109,92,218,49,184,134
.byte 248,248,199,248,147,63,237,107
.byte 248,248,199,248,147,63,237,107
.byte 134,134,34,134,68,164,17,194
.byte 134,134,34,134,68,164,17,194
.byte 24,35,198,232,135,184,1,79
.byte 54,166,210,245,121,111,145,82
.byte 96,188,155,142,163,12,123,53
.byte 29,224,215,194,46,75,254,87
.byte 21,119,55,229,159,240,74,218
.byte 88,201,41,10,177,160,107,133
.byte 189,93,16,244,203,62,5,103
.byte 228,39,65,139,167,125,149,216
.byte 251,238,124,102,221,23,71,158
.byte 202,45,191,7,173,90,131,51