%ifidn __OUTPUT_FORMAT__,obj section code use32 class=code align=64 %elifidn __OUTPUT_FORMAT__,win32 $@feat.00 equ 1 section .text code align=64 %else section .text code %endif global _whirlpool_block_mmx align 16 _whirlpool_block_mmx: L$_whirlpool_block_mmx_begin: push ebp push ebx push esi push edi mov esi,DWORD [20+esp] mov edi,DWORD [24+esp] mov ebp,DWORD [28+esp] mov eax,esp sub esp,148 and esp,-64 lea ebx,[128+esp] mov DWORD [ebx],esi mov DWORD [4+ebx],edi mov DWORD [8+ebx],ebp mov DWORD [16+ebx],eax call L$000pic_point L$000pic_point: pop ebp lea ebp,[(L$001table-L$000pic_point)+ebp] xor ecx,ecx xor edx,edx 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] L$002outerloop: movq [esp],mm0 movq [8+esp],mm1 movq [16+esp],mm2 movq [24+esp],mm3 movq [32+esp],mm4 movq [40+esp],mm5 movq [48+esp],mm6 movq [56+esp],mm7 pxor mm0,[edi] pxor mm1,[8+edi] pxor mm2,[16+edi] pxor mm3,[24+edi] pxor mm4,[32+edi] pxor mm5,[40+edi] pxor mm6,[48+edi] pxor mm7,[56+edi] movq [64+esp],mm0 movq [72+esp],mm1 movq [80+esp],mm2 movq [88+esp],mm3 movq [96+esp],mm4 movq [104+esp],mm5 movq [112+esp],mm6 movq [120+esp],mm7 xor esi,esi mov DWORD [12+ebx],esi align 16 L$003round: movq mm0,[4096+esi*8+ebp] mov eax,DWORD [esp] mov ebx,DWORD [4+esp] movzx ecx,al movzx edx,ah shr eax,16 lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm0,[esi*8+ebp] movq mm1,[7+edi*8+ebp] mov eax,DWORD [8+esp] lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh movq mm2,[6+esi*8+ebp] movq mm3,[5+edi*8+ebp] shr ebx,16 lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh movq mm4,[4+esi*8+ebp] movq mm5,[3+edi*8+ebp] mov ebx,DWORD [12+esp] lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah movq mm6,[2+esi*8+ebp] movq mm7,[1+edi*8+ebp] shr eax,16 lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm1,[esi*8+ebp] pxor mm2,[7+edi*8+ebp] mov eax,DWORD [16+esp] lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm3,[6+esi*8+ebp] pxor mm4,[5+edi*8+ebp] shr ebx,16 lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm5,[4+esi*8+ebp] pxor mm6,[3+edi*8+ebp] mov ebx,DWORD [20+esp] lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm7,[2+esi*8+ebp] pxor mm0,[1+edi*8+ebp] shr eax,16 lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm2,[esi*8+ebp] pxor mm3,[7+edi*8+ebp] mov eax,DWORD [24+esp] lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm4,[6+esi*8+ebp] pxor mm5,[5+edi*8+ebp] shr ebx,16 lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm6,[4+esi*8+ebp] pxor mm7,[3+edi*8+ebp] mov ebx,DWORD [28+esp] lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm0,[2+esi*8+ebp] pxor mm1,[1+edi*8+ebp] shr eax,16 lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm3,[esi*8+ebp] pxor mm4,[7+edi*8+ebp] mov eax,DWORD [32+esp] lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm5,[6+esi*8+ebp] pxor mm6,[5+edi*8+ebp] shr ebx,16 lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm7,[4+esi*8+ebp] pxor mm0,[3+edi*8+ebp] mov ebx,DWORD [36+esp] lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm1,[2+esi*8+ebp] pxor mm2,[1+edi*8+ebp] shr eax,16 lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm4,[esi*8+ebp] pxor mm5,[7+edi*8+ebp] mov eax,DWORD [40+esp] lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm6,[6+esi*8+ebp] pxor mm7,[5+edi*8+ebp] shr ebx,16 lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm0,[4+esi*8+ebp] pxor mm1,[3+edi*8+ebp] mov ebx,DWORD [44+esp] lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm2,[2+esi*8+ebp] pxor mm3,[1+edi*8+ebp] shr eax,16 lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm5,[esi*8+ebp] pxor mm6,[7+edi*8+ebp] mov eax,DWORD [48+esp] lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm7,[6+esi*8+ebp] pxor mm0,[5+edi*8+ebp] shr ebx,16 lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm1,[4+esi*8+ebp] pxor mm2,[3+edi*8+ebp] mov ebx,DWORD [52+esp] lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm3,[2+esi*8+ebp] pxor mm4,[1+edi*8+ebp] shr eax,16 lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm6,[esi*8+ebp] pxor mm7,[7+edi*8+ebp] mov eax,DWORD [56+esp] lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm0,[6+esi*8+ebp] pxor mm1,[5+edi*8+ebp] shr ebx,16 lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm2,[4+esi*8+ebp] pxor mm3,[3+edi*8+ebp] mov ebx,DWORD [60+esp] lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm4,[2+esi*8+ebp] pxor mm5,[1+edi*8+ebp] shr eax,16 lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm7,[esi*8+ebp] pxor mm0,[7+edi*8+ebp] mov eax,DWORD [64+esp] lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm1,[6+esi*8+ebp] pxor mm2,[5+edi*8+ebp] shr ebx,16 lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm3,[4+esi*8+ebp] pxor mm4,[3+edi*8+ebp] mov ebx,DWORD [68+esp] lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm5,[2+esi*8+ebp] pxor mm6,[1+edi*8+ebp] movq [esp],mm0 movq [8+esp],mm1 movq [16+esp],mm2 movq [24+esp],mm3 movq [32+esp],mm4 movq [40+esp],mm5 movq [48+esp],mm6 movq [56+esp],mm7 shr eax,16 lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm0,[esi*8+ebp] pxor mm1,[7+edi*8+ebp] mov eax,DWORD [72+esp] lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm2,[6+esi*8+ebp] pxor mm3,[5+edi*8+ebp] shr ebx,16 lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm4,[4+esi*8+ebp] pxor mm5,[3+edi*8+ebp] mov ebx,DWORD [76+esp] lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm6,[2+esi*8+ebp] pxor mm7,[1+edi*8+ebp] shr eax,16 lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm1,[esi*8+ebp] pxor mm2,[7+edi*8+ebp] mov eax,DWORD [80+esp] lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm3,[6+esi*8+ebp] pxor mm4,[5+edi*8+ebp] shr ebx,16 lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm5,[4+esi*8+ebp] pxor mm6,[3+edi*8+ebp] mov ebx,DWORD [84+esp] lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm7,[2+esi*8+ebp] pxor mm0,[1+edi*8+ebp] shr eax,16 lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm2,[esi*8+ebp] pxor mm3,[7+edi*8+ebp] mov eax,DWORD [88+esp] lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm4,[6+esi*8+ebp] pxor mm5,[5+edi*8+ebp] shr ebx,16 lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm6,[4+esi*8+ebp] pxor mm7,[3+edi*8+ebp] mov ebx,DWORD [92+esp] lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm0,[2+esi*8+ebp] pxor mm1,[1+edi*8+ebp] shr eax,16 lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm3,[esi*8+ebp] pxor mm4,[7+edi*8+ebp] mov eax,DWORD [96+esp] lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm5,[6+esi*8+ebp] pxor mm6,[5+edi*8+ebp] shr ebx,16 lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm7,[4+esi*8+ebp] pxor mm0,[3+edi*8+ebp] mov ebx,DWORD [100+esp] lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm1,[2+esi*8+ebp] pxor mm2,[1+edi*8+ebp] shr eax,16 lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm4,[esi*8+ebp] pxor mm5,[7+edi*8+ebp] mov eax,DWORD [104+esp] lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm6,[6+esi*8+ebp] pxor mm7,[5+edi*8+ebp] shr ebx,16 lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm0,[4+esi*8+ebp] pxor mm1,[3+edi*8+ebp] mov ebx,DWORD [108+esp] lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm2,[2+esi*8+ebp] pxor mm3,[1+edi*8+ebp] shr eax,16 lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm5,[esi*8+ebp] pxor mm6,[7+edi*8+ebp] mov eax,DWORD [112+esp] lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm7,[6+esi*8+ebp] pxor mm0,[5+edi*8+ebp] shr ebx,16 lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm1,[4+esi*8+ebp] pxor mm2,[3+edi*8+ebp] mov ebx,DWORD [116+esp] lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm3,[2+esi*8+ebp] pxor mm4,[1+edi*8+ebp] shr eax,16 lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm6,[esi*8+ebp] pxor mm7,[7+edi*8+ebp] mov eax,DWORD [120+esp] lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm0,[6+esi*8+ebp] pxor mm1,[5+edi*8+ebp] shr ebx,16 lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm2,[4+esi*8+ebp] pxor mm3,[3+edi*8+ebp] mov ebx,DWORD [124+esp] lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm4,[2+esi*8+ebp] pxor mm5,[1+edi*8+ebp] shr eax,16 lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm7,[esi*8+ebp] pxor mm0,[7+edi*8+ebp] lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm1,[6+esi*8+ebp] pxor mm2,[5+edi*8+ebp] shr ebx,16 lea esi,[ecx*1+ecx] movzx ecx,bl lea edi,[edx*1+edx] movzx edx,bh pxor mm3,[4+esi*8+ebp] pxor mm4,[3+edi*8+ebp] lea esi,[ecx*1+ecx] movzx ecx,al lea edi,[edx*1+edx] movzx edx,ah pxor mm5,[2+esi*8+ebp] pxor mm6,[1+edi*8+ebp] lea ebx,[128+esp] mov esi,DWORD [12+ebx] add esi,1 cmp esi,10 je NEAR L$004roundsdone mov DWORD [12+ebx],esi movq [64+esp],mm0 movq [72+esp],mm1 movq [80+esp],mm2 movq [88+esp],mm3 movq [96+esp],mm4 movq [104+esp],mm5 movq [112+esp],mm6 movq [120+esp],mm7 jmp NEAR L$003round align 16 L$004roundsdone: mov esi,DWORD [ebx] mov edi,DWORD [4+ebx] mov eax,DWORD [8+ebx] pxor mm0,[edi] pxor mm1,[8+edi] pxor mm2,[16+edi] pxor mm3,[24+edi] pxor mm4,[32+edi] pxor mm5,[40+edi] pxor mm6,[48+edi] pxor mm7,[56+edi] pxor mm0,[esi] pxor mm1,[8+esi] pxor mm2,[16+esi] pxor mm3,[24+esi] pxor mm4,[32+esi] pxor mm5,[40+esi] pxor mm6,[48+esi] pxor mm7,[56+esi] 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 lea edi,[64+edi] sub eax,1 jz NEAR L$005alldone mov DWORD [4+ebx],edi mov DWORD [8+ebx],eax jmp NEAR L$002outerloop L$005alldone: emms mov esp,DWORD [16+ebx] pop edi pop esi pop ebx pop ebp ret align 64 L$001table: db 24,24,96,24,192,120,48,216 db 24,24,96,24,192,120,48,216 db 35,35,140,35,5,175,70,38 db 35,35,140,35,5,175,70,38 db 198,198,63,198,126,249,145,184 db 198,198,63,198,126,249,145,184 db 232,232,135,232,19,111,205,251 db 232,232,135,232,19,111,205,251 db 135,135,38,135,76,161,19,203 db 135,135,38,135,76,161,19,203 db 184,184,218,184,169,98,109,17 db 184,184,218,184,169,98,109,17 db 1,1,4,1,8,5,2,9 db 1,1,4,1,8,5,2,9 db 79,79,33,79,66,110,158,13 db 79,79,33,79,66,110,158,13 db 54,54,216,54,173,238,108,155 db 54,54,216,54,173,238,108,155 db 166,166,162,166,89,4,81,255 db 166,166,162,166,89,4,81,255 db 210,210,111,210,222,189,185,12 db 210,210,111,210,222,189,185,12 db 245,245,243,245,251,6,247,14 db 245,245,243,245,251,6,247,14 db 121,121,249,121,239,128,242,150 db 121,121,249,121,239,128,242,150 db 111,111,161,111,95,206,222,48 db 111,111,161,111,95,206,222,48 db 145,145,126,145,252,239,63,109 db 145,145,126,145,252,239,63,109 db 82,82,85,82,170,7,164,248 db 82,82,85,82,170,7,164,248 db 96,96,157,96,39,253,192,71 db 96,96,157,96,39,253,192,71 db 188,188,202,188,137,118,101,53 db 188,188,202,188,137,118,101,53 db 155,155,86,155,172,205,43,55 db 155,155,86,155,172,205,43,55 db 142,142,2,142,4,140,1,138 db 142,142,2,142,4,140,1,138 db 163,163,182,163,113,21,91,210 db 163,163,182,163,113,21,91,210 db 12,12,48,12,96,60,24,108 db 12,12,48,12,96,60,24,108 db 123,123,241,123,255,138,246,132 db 123,123,241,123,255,138,246,132 db 53,53,212,53,181,225,106,128 db 53,53,212,53,181,225,106,128 db 29,29,116,29,232,105,58,245 db 29,29,116,29,232,105,58,245 db 224,224,167,224,83,71,221,179 db 224,224,167,224,83,71,221,179 db 215,215,123,215,246,172,179,33 db 215,215,123,215,246,172,179,33 db 194,194,47,194,94,237,153,156 db 194,194,47,194,94,237,153,156 db 46,46,184,46,109,150,92,67 db 46,46,184,46,109,150,92,67 db 75,75,49,75,98,122,150,41 db 75,75,49,75,98,122,150,41 db 254,254,223,254,163,33,225,93 db 254,254,223,254,163,33,225,93 db 87,87,65,87,130,22,174,213 db 87,87,65,87,130,22,174,213 db 21,21,84,21,168,65,42,189 db 21,21,84,21,168,65,42,189 db 119,119,193,119,159,182,238,232 db 119,119,193,119,159,182,238,232 db 55,55,220,55,165,235,110,146 db 55,55,220,55,165,235,110,146 db 229,229,179,229,123,86,215,158 db 229,229,179,229,123,86,215,158 db 159,159,70,159,140,217,35,19 db 159,159,70,159,140,217,35,19 db 240,240,231,240,211,23,253,35 db 240,240,231,240,211,23,253,35 db 74,74,53,74,106,127,148,32 db 74,74,53,74,106,127,148,32 db 218,218,79,218,158,149,169,68 db 218,218,79,218,158,149,169,68 db 88,88,125,88,250,37,176,162 db 88,88,125,88,250,37,176,162 db 201,201,3,201,6,202,143,207 db 201,201,3,201,6,202,143,207 db 41,41,164,41,85,141,82,124 db 41,41,164,41,85,141,82,124 db 10,10,40,10,80,34,20,90 db 10,10,40,10,80,34,20,90 db 177,177,254,177,225,79,127,80 db 177,177,254,177,225,79,127,80 db 160,160,186,160,105,26,93,201 db 160,160,186,160,105,26,93,201 db 107,107,177,107,127,218,214,20 db 107,107,177,107,127,218,214,20 db 133,133,46,133,92,171,23,217 db 133,133,46,133,92,171,23,217 db 189,189,206,189,129,115,103,60 db 189,189,206,189,129,115,103,60 db 93,93,105,93,210,52,186,143 db 93,93,105,93,210,52,186,143 db 16,16,64,16,128,80,32,144 db 16,16,64,16,128,80,32,144 db 244,244,247,244,243,3,245,7 db 244,244,247,244,243,3,245,7 db 203,203,11,203,22,192,139,221 db 203,203,11,203,22,192,139,221 db 62,62,248,62,237,198,124,211 db 62,62,248,62,237,198,124,211 db 5,5,20,5,40,17,10,45 db 5,5,20,5,40,17,10,45 db 103,103,129,103,31,230,206,120 db 103,103,129,103,31,230,206,120 db 228,228,183,228,115,83,213,151 db 228,228,183,228,115,83,213,151 db 39,39,156,39,37,187,78,2 db 39,39,156,39,37,187,78,2 db 65,65,25,65,50,88,130,115 db 65,65,25,65,50,88,130,115 db 139,139,22,139,44,157,11,167 db 139,139,22,139,44,157,11,167 db 167,167,166,167,81,1,83,246 db 167,167,166,167,81,1,83,246 db 125,125,233,125,207,148,250,178 db 125,125,233,125,207,148,250,178 db 149,149,110,149,220,251,55,73 db 149,149,110,149,220,251,55,73 db 216,216,71,216,142,159,173,86 db 216,216,71,216,142,159,173,86 db 251,251,203,251,139,48,235,112 db 251,251,203,251,139,48,235,112 db 238,238,159,238,35,113,193,205 db 238,238,159,238,35,113,193,205 db 124,124,237,124,199,145,248,187 db 124,124,237,124,199,145,248,187 db 102,102,133,102,23,227,204,113 db 102,102,133,102,23,227,204,113 db 221,221,83,221,166,142,167,123 db 221,221,83,221,166,142,167,123 db 23,23,92,23,184,75,46,175 db 23,23,92,23,184,75,46,175 db 71,71,1,71,2,70,142,69 db 71,71,1,71,2,70,142,69 db 158,158,66,158,132,220,33,26 db 158,158,66,158,132,220,33,26 db 202,202,15,202,30,197,137,212 db 202,202,15,202,30,197,137,212 db 45,45,180,45,117,153,90,88 db 45,45,180,45,117,153,90,88 db 191,191,198,191,145,121,99,46 db 191,191,198,191,145,121,99,46 db 7,7,28,7,56,27,14,63 db 7,7,28,7,56,27,14,63 db 173,173,142,173,1,35,71,172 db 173,173,142,173,1,35,71,172 db 90,90,117,90,234,47,180,176 db 90,90,117,90,234,47,180,176 db 131,131,54,131,108,181,27,239 db 131,131,54,131,108,181,27,239 db 51,51,204,51,133,255,102,182 db 51,51,204,51,133,255,102,182 db 99,99,145,99,63,242,198,92 db 99,99,145,99,63,242,198,92 db 2,2,8,2,16,10,4,18 db 2,2,8,2,16,10,4,18 db 170,170,146,170,57,56,73,147 db 170,170,146,170,57,56,73,147 db 113,113,217,113,175,168,226,222 db 113,113,217,113,175,168,226,222 db 200,200,7,200,14,207,141,198 db 200,200,7,200,14,207,141,198 db 25,25,100,25,200,125,50,209 db 25,25,100,25,200,125,50,209 db 73,73,57,73,114,112,146,59 db 73,73,57,73,114,112,146,59 db 217,217,67,217,134,154,175,95 db 217,217,67,217,134,154,175,95 db 242,242,239,242,195,29,249,49 db 242,242,239,242,195,29,249,49 db 227,227,171,227,75,72,219,168 db 227,227,171,227,75,72,219,168 db 91,91,113,91,226,42,182,185 db 91,91,113,91,226,42,182,185 db 136,136,26,136,52,146,13,188 db 136,136,26,136,52,146,13,188 db 154,154,82,154,164,200,41,62 db 154,154,82,154,164,200,41,62 db 38,38,152,38,45,190,76,11 db 38,38,152,38,45,190,76,11 db 50,50,200,50,141,250,100,191 db 50,50,200,50,141,250,100,191 db 176,176,250,176,233,74,125,89 db 176,176,250,176,233,74,125,89 db 233,233,131,233,27,106,207,242 db 233,233,131,233,27,106,207,242 db 15,15,60,15,120,51,30,119 db 15,15,60,15,120,51,30,119 db 213,213,115,213,230,166,183,51 db 213,213,115,213,230,166,183,51 db 128,128,58,128,116,186,29,244 db 128,128,58,128,116,186,29,244 db 190,190,194,190,153,124,97,39 db 190,190,194,190,153,124,97,39 db 205,205,19,205,38,222,135,235 db 205,205,19,205,38,222,135,235 db 52,52,208,52,189,228,104,137 db 52,52,208,52,189,228,104,137 db 72,72,61,72,122,117,144,50 db 72,72,61,72,122,117,144,50 db 255,255,219,255,171,36,227,84 db 255,255,219,255,171,36,227,84 db 122,122,245,122,247,143,244,141 db 122,122,245,122,247,143,244,141 db 144,144,122,144,244,234,61,100 db 144,144,122,144,244,234,61,100 db 95,95,97,95,194,62,190,157 db 95,95,97,95,194,62,190,157 db 32,32,128,32,29,160,64,61 db 32,32,128,32,29,160,64,61 db 104,104,189,104,103,213,208,15 db 104,104,189,104,103,213,208,15 db 26,26,104,26,208,114,52,202 db 26,26,104,26,208,114,52,202 db 174,174,130,174,25,44,65,183 db 174,174,130,174,25,44,65,183 db 180,180,234,180,201,94,117,125 db 180,180,234,180,201,94,117,125 db 84,84,77,84,154,25,168,206 db 84,84,77,84,154,25,168,206 db 147,147,118,147,236,229,59,127 db 147,147,118,147,236,229,59,127 db 34,34,136,34,13,170,68,47 db 34,34,136,34,13,170,68,47 db 100,100,141,100,7,233,200,99 db 100,100,141,100,7,233,200,99 db 241,241,227,241,219,18,255,42 db 241,241,227,241,219,18,255,42 db 115,115,209,115,191,162,230,204 db 115,115,209,115,191,162,230,204 db 18,18,72,18,144,90,36,130 db 18,18,72,18,144,90,36,130 db 64,64,29,64,58,93,128,122 db 64,64,29,64,58,93,128,122 db 8,8,32,8,64,40,16,72 db 8,8,32,8,64,40,16,72 db 195,195,43,195,86,232,155,149 db 195,195,43,195,86,232,155,149 db 236,236,151,236,51,123,197,223 db 236,236,151,236,51,123,197,223 db 219,219,75,219,150,144,171,77 db 219,219,75,219,150,144,171,77 db 161,161,190,161,97,31,95,192 db 161,161,190,161,97,31,95,192 db 141,141,14,141,28,131,7,145 db 141,141,14,141,28,131,7,145 db 61,61,244,61,245,201,122,200 db 61,61,244,61,245,201,122,200 db 151,151,102,151,204,241,51,91 db 151,151,102,151,204,241,51,91 db 0,0,0,0,0,0,0,0 db 0,0,0,0,0,0,0,0 db 207,207,27,207,54,212,131,249 db 207,207,27,207,54,212,131,249 db 43,43,172,43,69,135,86,110 db 43,43,172,43,69,135,86,110 db 118,118,197,118,151,179,236,225 db 118,118,197,118,151,179,236,225 db 130,130,50,130,100,176,25,230 db 130,130,50,130,100,176,25,230 db 214,214,127,214,254,169,177,40 db 214,214,127,214,254,169,177,40 db 27,27,108,27,216,119,54,195 db 27,27,108,27,216,119,54,195 db 181,181,238,181,193,91,119,116 db 181,181,238,181,193,91,119,116 db 175,175,134,175,17,41,67,190 db 175,175,134,175,17,41,67,190 db 106,106,181,106,119,223,212,29 db 106,106,181,106,119,223,212,29 db 80,80,93,80,186,13,160,234 db 80,80,93,80,186,13,160,234 db 69,69,9,69,18,76,138,87 db 69,69,9,69,18,76,138,87 db 243,243,235,243,203,24,251,56 db 243,243,235,243,203,24,251,56 db 48,48,192,48,157,240,96,173 db 48,48,192,48,157,240,96,173 db 239,239,155,239,43,116,195,196 db 239,239,155,239,43,116,195,196 db 63,63,252,63,229,195,126,218 db 63,63,252,63,229,195,126,218 db 85,85,73,85,146,28,170,199 db 85,85,73,85,146,28,170,199 db 162,162,178,162,121,16,89,219 db 162,162,178,162,121,16,89,219 db 234,234,143,234,3,101,201,233 db 234,234,143,234,3,101,201,233 db 101,101,137,101,15,236,202,106 db 101,101,137,101,15,236,202,106 db 186,186,210,186,185,104,105,3 db 186,186,210,186,185,104,105,3 db 47,47,188,47,101,147,94,74 db 47,47,188,47,101,147,94,74 db 192,192,39,192,78,231,157,142 db 192,192,39,192,78,231,157,142 db 222,222,95,222,190,129,161,96 db 222,222,95,222,190,129,161,96 db 28,28,112,28,224,108,56,252 db 28,28,112,28,224,108,56,252 db 253,253,211,253,187,46,231,70 db 253,253,211,253,187,46,231,70 db 77,77,41,77,82,100,154,31 db 77,77,41,77,82,100,154,31 db 146,146,114,146,228,224,57,118 db 146,146,114,146,228,224,57,118 db 117,117,201,117,143,188,234,250 db 117,117,201,117,143,188,234,250 db 6,6,24,6,48,30,12,54 db 6,6,24,6,48,30,12,54 db 138,138,18,138,36,152,9,174 db 138,138,18,138,36,152,9,174 db 178,178,242,178,249,64,121,75 db 178,178,242,178,249,64,121,75 db 230,230,191,230,99,89,209,133 db 230,230,191,230,99,89,209,133 db 14,14,56,14,112,54,28,126 db 14,14,56,14,112,54,28,126 db 31,31,124,31,248,99,62,231 db 31,31,124,31,248,99,62,231 db 98,98,149,98,55,247,196,85 db 98,98,149,98,55,247,196,85 db 212,212,119,212,238,163,181,58 db 212,212,119,212,238,163,181,58 db 168,168,154,168,41,50,77,129 db 168,168,154,168,41,50,77,129 db 150,150,98,150,196,244,49,82 db 150,150,98,150,196,244,49,82 db 249,249,195,249,155,58,239,98 db 249,249,195,249,155,58,239,98 db 197,197,51,197,102,246,151,163 db 197,197,51,197,102,246,151,163 db 37,37,148,37,53,177,74,16 db 37,37,148,37,53,177,74,16 db 89,89,121,89,242,32,178,171 db 89,89,121,89,242,32,178,171 db 132,132,42,132,84,174,21,208 db 132,132,42,132,84,174,21,208 db 114,114,213,114,183,167,228,197 db 114,114,213,114,183,167,228,197 db 57,57,228,57,213,221,114,236 db 57,57,228,57,213,221,114,236 db 76,76,45,76,90,97,152,22 db 76,76,45,76,90,97,152,22 db 94,94,101,94,202,59,188,148 db 94,94,101,94,202,59,188,148 db 120,120,253,120,231,133,240,159 db 120,120,253,120,231,133,240,159 db 56,56,224,56,221,216,112,229 db 56,56,224,56,221,216,112,229 db 140,140,10,140,20,134,5,152 db 140,140,10,140,20,134,5,152 db 209,209,99,209,198,178,191,23 db 209,209,99,209,198,178,191,23 db 165,165,174,165,65,11,87,228 db 165,165,174,165,65,11,87,228 db 226,226,175,226,67,77,217,161 db 226,226,175,226,67,77,217,161 db 97,97,153,97,47,248,194,78 db 97,97,153,97,47,248,194,78 db 179,179,246,179,241,69,123,66 db 179,179,246,179,241,69,123,66 db 33,33,132,33,21,165,66,52 db 33,33,132,33,21,165,66,52 db 156,156,74,156,148,214,37,8 db 156,156,74,156,148,214,37,8 db 30,30,120,30,240,102,60,238 db 30,30,120,30,240,102,60,238 db 67,67,17,67,34,82,134,97 db 67,67,17,67,34,82,134,97 db 199,199,59,199,118,252,147,177 db 199,199,59,199,118,252,147,177 db 252,252,215,252,179,43,229,79 db 252,252,215,252,179,43,229,79 db 4,4,16,4,32,20,8,36 db 4,4,16,4,32,20,8,36 db 81,81,89,81,178,8,162,227 db 81,81,89,81,178,8,162,227 db 153,153,94,153,188,199,47,37 db 153,153,94,153,188,199,47,37 db 109,109,169,109,79,196,218,34 db 109,109,169,109,79,196,218,34 db 13,13,52,13,104,57,26,101 db 13,13,52,13,104,57,26,101 db 250,250,207,250,131,53,233,121 db 250,250,207,250,131,53,233,121 db 223,223,91,223,182,132,163,105 db 223,223,91,223,182,132,163,105 db 126,126,229,126,215,155,252,169 db 126,126,229,126,215,155,252,169 db 36,36,144,36,61,180,72,25 db 36,36,144,36,61,180,72,25 db 59,59,236,59,197,215,118,254 db 59,59,236,59,197,215,118,254 db 171,171,150,171,49,61,75,154 db 171,171,150,171,49,61,75,154 db 206,206,31,206,62,209,129,240 db 206,206,31,206,62,209,129,240 db 17,17,68,17,136,85,34,153 db 17,17,68,17,136,85,34,153 db 143,143,6,143,12,137,3,131 db 143,143,6,143,12,137,3,131 db 78,78,37,78,74,107,156,4 db 78,78,37,78,74,107,156,4 db 183,183,230,183,209,81,115,102 db 183,183,230,183,209,81,115,102 db 235,235,139,235,11,96,203,224 db 235,235,139,235,11,96,203,224 db 60,60,240,60,253,204,120,193 db 60,60,240,60,253,204,120,193 db 129,129,62,129,124,191,31,253 db 129,129,62,129,124,191,31,253 db 148,148,106,148,212,254,53,64 db 148,148,106,148,212,254,53,64 db 247,247,251,247,235,12,243,28 db 247,247,251,247,235,12,243,28 db 185,185,222,185,161,103,111,24 db 185,185,222,185,161,103,111,24 db 19,19,76,19,152,95,38,139 db 19,19,76,19,152,95,38,139 db 44,44,176,44,125,156,88,81 db 44,44,176,44,125,156,88,81 db 211,211,107,211,214,184,187,5 db 211,211,107,211,214,184,187,5 db 231,231,187,231,107,92,211,140 db 231,231,187,231,107,92,211,140 db 110,110,165,110,87,203,220,57 db 110,110,165,110,87,203,220,57 db 196,196,55,196,110,243,149,170 db 196,196,55,196,110,243,149,170 db 3,3,12,3,24,15,6,27 db 3,3,12,3,24,15,6,27 db 86,86,69,86,138,19,172,220 db 86,86,69,86,138,19,172,220 db 68,68,13,68,26,73,136,94 db 68,68,13,68,26,73,136,94 db 127,127,225,127,223,158,254,160 db 127,127,225,127,223,158,254,160 db 169,169,158,169,33,55,79,136 db 169,169,158,169,33,55,79,136 db 42,42,168,42,77,130,84,103 db 42,42,168,42,77,130,84,103 db 187,187,214,187,177,109,107,10 db 187,187,214,187,177,109,107,10 db 193,193,35,193,70,226,159,135 db 193,193,35,193,70,226,159,135 db 83,83,81,83,162,2,166,241 db 83,83,81,83,162,2,166,241 db 220,220,87,220,174,139,165,114 db 220,220,87,220,174,139,165,114 db 11,11,44,11,88,39,22,83 db 11,11,44,11,88,39,22,83 db 157,157,78,157,156,211,39,1 db 157,157,78,157,156,211,39,1 db 108,108,173,108,71,193,216,43 db 108,108,173,108,71,193,216,43 db 49,49,196,49,149,245,98,164 db 49,49,196,49,149,245,98,164 db 116,116,205,116,135,185,232,243 db 116,116,205,116,135,185,232,243 db 246,246,255,246,227,9,241,21 db 246,246,255,246,227,9,241,21 db 70,70,5,70,10,67,140,76 db 70,70,5,70,10,67,140,76 db 172,172,138,172,9,38,69,165 db 172,172,138,172,9,38,69,165 db 137,137,30,137,60,151,15,181 db 137,137,30,137,60,151,15,181 db 20,20,80,20,160,68,40,180 db 20,20,80,20,160,68,40,180 db 225,225,163,225,91,66,223,186 db 225,225,163,225,91,66,223,186 db 22,22,88,22,176,78,44,166 db 22,22,88,22,176,78,44,166 db 58,58,232,58,205,210,116,247 db 58,58,232,58,205,210,116,247 db 105,105,185,105,111,208,210,6 db 105,105,185,105,111,208,210,6 db 9,9,36,9,72,45,18,65 db 9,9,36,9,72,45,18,65 db 112,112,221,112,167,173,224,215 db 112,112,221,112,167,173,224,215 db 182,182,226,182,217,84,113,111 db 182,182,226,182,217,84,113,111 db 208,208,103,208,206,183,189,30 db 208,208,103,208,206,183,189,30 db 237,237,147,237,59,126,199,214 db 237,237,147,237,59,126,199,214 db 204,204,23,204,46,219,133,226 db 204,204,23,204,46,219,133,226 db 66,66,21,66,42,87,132,104 db 66,66,21,66,42,87,132,104 db 152,152,90,152,180,194,45,44 db 152,152,90,152,180,194,45,44 db 164,164,170,164,73,14,85,237 db 164,164,170,164,73,14,85,237 db 40,40,160,40,93,136,80,117 db 40,40,160,40,93,136,80,117 db 92,92,109,92,218,49,184,134 db 92,92,109,92,218,49,184,134 db 248,248,199,248,147,63,237,107 db 248,248,199,248,147,63,237,107 db 134,134,34,134,68,164,17,194 db 134,134,34,134,68,164,17,194 db 24,35,198,232,135,184,1,79 db 54,166,210,245,121,111,145,82 db 96,188,155,142,163,12,123,53 db 29,224,215,194,46,75,254,87 db 21,119,55,229,159,240,74,218 db 88,201,41,10,177,160,107,133 db 189,93,16,244,203,62,5,103 db 228,39,65,139,167,125,149,216 db 251,238,124,102,221,23,71,158 db 202,45,191,7,173,90,131,51