TITLE wp-mmx.asm IF @Version LT 800 ECHO MASM version 8.00 or later is strongly recommended. ENDIF .686 .XMM IF @Version LT 800 XMMWORD STRUCT 16 DQ 2 dup (?) XMMWORD ENDS ENDIF .MODEL FLAT OPTION DOTNAME IF @Version LT 800 .text$ SEGMENT PAGE 'CODE' ELSE .text$ SEGMENT ALIGN(64) 'CODE' ENDIF ALIGN 16 _whirlpool_block_mmx PROC PUBLIC $L_whirlpool_block_mmx_begin:: push ebp push ebx push esi push edi mov esi,DWORD PTR 20[esp] mov edi,DWORD PTR 24[esp] mov ebp,DWORD PTR 28[esp] mov eax,esp sub esp,148 and esp,-64 lea ebx,DWORD PTR 128[esp] mov DWORD PTR [ebx],esi mov DWORD PTR 4[ebx],edi mov DWORD PTR 8[ebx],ebp mov DWORD PTR 16[ebx],eax call $L000pic_point $L000pic_point: pop ebp lea ebp,DWORD PTR ($L001table-$L000pic_point)[ebp] xor ecx,ecx xor edx,edx movq mm0,QWORD PTR [esi] movq mm1,QWORD PTR 8[esi] movq mm2,QWORD PTR 16[esi] movq mm3,QWORD PTR 24[esi] movq mm4,QWORD PTR 32[esi] movq mm5,QWORD PTR 40[esi] movq mm6,QWORD PTR 48[esi] movq mm7,QWORD PTR 56[esi] $L002outerloop: movq QWORD PTR [esp],mm0 movq QWORD PTR 8[esp],mm1 movq QWORD PTR 16[esp],mm2 movq QWORD PTR 24[esp],mm3 movq QWORD PTR 32[esp],mm4 movq QWORD PTR 40[esp],mm5 movq QWORD PTR 48[esp],mm6 movq QWORD PTR 56[esp],mm7 pxor mm0,QWORD PTR [edi] pxor mm1,QWORD PTR 8[edi] pxor mm2,QWORD PTR 16[edi] pxor mm3,QWORD PTR 24[edi] pxor mm4,QWORD PTR 32[edi] pxor mm5,QWORD PTR 40[edi] pxor mm6,QWORD PTR 48[edi] pxor mm7,QWORD PTR 56[edi] movq QWORD PTR 64[esp],mm0 movq QWORD PTR 72[esp],mm1 movq QWORD PTR 80[esp],mm2 movq QWORD PTR 88[esp],mm3 movq QWORD PTR 96[esp],mm4 movq QWORD PTR 104[esp],mm5 movq QWORD PTR 112[esp],mm6 movq QWORD PTR 120[esp],mm7 xor esi,esi mov DWORD PTR 12[ebx],esi ALIGN 16 $L003round: movq mm0,QWORD PTR 4096[esi*8+ebp] mov eax,DWORD PTR [esp] mov ebx,DWORD PTR 4[esp] movzx ecx,al movzx edx,ah shr eax,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm0,QWORD PTR [esi*8+ebp] movq mm1,QWORD PTR 7[edi*8+ebp] mov eax,DWORD PTR 8[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh movq mm2,QWORD PTR 6[esi*8+ebp] movq mm3,QWORD PTR 5[edi*8+ebp] shr ebx,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh movq mm4,QWORD PTR 4[esi*8+ebp] movq mm5,QWORD PTR 3[edi*8+ebp] mov ebx,DWORD PTR 12[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah movq mm6,QWORD PTR 2[esi*8+ebp] movq mm7,QWORD PTR 1[edi*8+ebp] shr eax,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm1,QWORD PTR [esi*8+ebp] pxor mm2,QWORD PTR 7[edi*8+ebp] mov eax,DWORD PTR 16[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm3,QWORD PTR 6[esi*8+ebp] pxor mm4,QWORD PTR 5[edi*8+ebp] shr ebx,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm5,QWORD PTR 4[esi*8+ebp] pxor mm6,QWORD PTR 3[edi*8+ebp] mov ebx,DWORD PTR 20[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm7,QWORD PTR 2[esi*8+ebp] pxor mm0,QWORD PTR 1[edi*8+ebp] shr eax,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm2,QWORD PTR [esi*8+ebp] pxor mm3,QWORD PTR 7[edi*8+ebp] mov eax,DWORD PTR 24[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm4,QWORD PTR 6[esi*8+ebp] pxor mm5,QWORD PTR 5[edi*8+ebp] shr ebx,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm6,QWORD PTR 4[esi*8+ebp] pxor mm7,QWORD PTR 3[edi*8+ebp] mov ebx,DWORD PTR 28[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm0,QWORD PTR 2[esi*8+ebp] pxor mm1,QWORD PTR 1[edi*8+ebp] shr eax,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm3,QWORD PTR [esi*8+ebp] pxor mm4,QWORD PTR 7[edi*8+ebp] mov eax,DWORD PTR 32[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm5,QWORD PTR 6[esi*8+ebp] pxor mm6,QWORD PTR 5[edi*8+ebp] shr ebx,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm7,QWORD PTR 4[esi*8+ebp] pxor mm0,QWORD PTR 3[edi*8+ebp] mov ebx,DWORD PTR 36[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm1,QWORD PTR 2[esi*8+ebp] pxor mm2,QWORD PTR 1[edi*8+ebp] shr eax,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm4,QWORD PTR [esi*8+ebp] pxor mm5,QWORD PTR 7[edi*8+ebp] mov eax,DWORD PTR 40[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm6,QWORD PTR 6[esi*8+ebp] pxor mm7,QWORD PTR 5[edi*8+ebp] shr ebx,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm0,QWORD PTR 4[esi*8+ebp] pxor mm1,QWORD PTR 3[edi*8+ebp] mov ebx,DWORD PTR 44[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm2,QWORD PTR 2[esi*8+ebp] pxor mm3,QWORD PTR 1[edi*8+ebp] shr eax,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm5,QWORD PTR [esi*8+ebp] pxor mm6,QWORD PTR 7[edi*8+ebp] mov eax,DWORD PTR 48[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm7,QWORD PTR 6[esi*8+ebp] pxor mm0,QWORD PTR 5[edi*8+ebp] shr ebx,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm1,QWORD PTR 4[esi*8+ebp] pxor mm2,QWORD PTR 3[edi*8+ebp] mov ebx,DWORD PTR 52[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm3,QWORD PTR 2[esi*8+ebp] pxor mm4,QWORD PTR 1[edi*8+ebp] shr eax,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm6,QWORD PTR [esi*8+ebp] pxor mm7,QWORD PTR 7[edi*8+ebp] mov eax,DWORD PTR 56[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm0,QWORD PTR 6[esi*8+ebp] pxor mm1,QWORD PTR 5[edi*8+ebp] shr ebx,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm2,QWORD PTR 4[esi*8+ebp] pxor mm3,QWORD PTR 3[edi*8+ebp] mov ebx,DWORD PTR 60[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm4,QWORD PTR 2[esi*8+ebp] pxor mm5,QWORD PTR 1[edi*8+ebp] shr eax,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm7,QWORD PTR [esi*8+ebp] pxor mm0,QWORD PTR 7[edi*8+ebp] mov eax,DWORD PTR 64[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm1,QWORD PTR 6[esi*8+ebp] pxor mm2,QWORD PTR 5[edi*8+ebp] shr ebx,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm3,QWORD PTR 4[esi*8+ebp] pxor mm4,QWORD PTR 3[edi*8+ebp] mov ebx,DWORD PTR 68[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm5,QWORD PTR 2[esi*8+ebp] pxor mm6,QWORD PTR 1[edi*8+ebp] movq QWORD PTR [esp],mm0 movq QWORD PTR 8[esp],mm1 movq QWORD PTR 16[esp],mm2 movq QWORD PTR 24[esp],mm3 movq QWORD PTR 32[esp],mm4 movq QWORD PTR 40[esp],mm5 movq QWORD PTR 48[esp],mm6 movq QWORD PTR 56[esp],mm7 shr eax,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm0,QWORD PTR [esi*8+ebp] pxor mm1,QWORD PTR 7[edi*8+ebp] mov eax,DWORD PTR 72[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm2,QWORD PTR 6[esi*8+ebp] pxor mm3,QWORD PTR 5[edi*8+ebp] shr ebx,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm4,QWORD PTR 4[esi*8+ebp] pxor mm5,QWORD PTR 3[edi*8+ebp] mov ebx,DWORD PTR 76[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm6,QWORD PTR 2[esi*8+ebp] pxor mm7,QWORD PTR 1[edi*8+ebp] shr eax,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm1,QWORD PTR [esi*8+ebp] pxor mm2,QWORD PTR 7[edi*8+ebp] mov eax,DWORD PTR 80[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm3,QWORD PTR 6[esi*8+ebp] pxor mm4,QWORD PTR 5[edi*8+ebp] shr ebx,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm5,QWORD PTR 4[esi*8+ebp] pxor mm6,QWORD PTR 3[edi*8+ebp] mov ebx,DWORD PTR 84[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm7,QWORD PTR 2[esi*8+ebp] pxor mm0,QWORD PTR 1[edi*8+ebp] shr eax,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm2,QWORD PTR [esi*8+ebp] pxor mm3,QWORD PTR 7[edi*8+ebp] mov eax,DWORD PTR 88[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm4,QWORD PTR 6[esi*8+ebp] pxor mm5,QWORD PTR 5[edi*8+ebp] shr ebx,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm6,QWORD PTR 4[esi*8+ebp] pxor mm7,QWORD PTR 3[edi*8+ebp] mov ebx,DWORD PTR 92[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm0,QWORD PTR 2[esi*8+ebp] pxor mm1,QWORD PTR 1[edi*8+ebp] shr eax,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm3,QWORD PTR [esi*8+ebp] pxor mm4,QWORD PTR 7[edi*8+ebp] mov eax,DWORD PTR 96[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm5,QWORD PTR 6[esi*8+ebp] pxor mm6,QWORD PTR 5[edi*8+ebp] shr ebx,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm7,QWORD PTR 4[esi*8+ebp] pxor mm0,QWORD PTR 3[edi*8+ebp] mov ebx,DWORD PTR 100[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm1,QWORD PTR 2[esi*8+ebp] pxor mm2,QWORD PTR 1[edi*8+ebp] shr eax,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm4,QWORD PTR [esi*8+ebp] pxor mm5,QWORD PTR 7[edi*8+ebp] mov eax,DWORD PTR 104[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm6,QWORD PTR 6[esi*8+ebp] pxor mm7,QWORD PTR 5[edi*8+ebp] shr ebx,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm0,QWORD PTR 4[esi*8+ebp] pxor mm1,QWORD PTR 3[edi*8+ebp] mov ebx,DWORD PTR 108[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm2,QWORD PTR 2[esi*8+ebp] pxor mm3,QWORD PTR 1[edi*8+ebp] shr eax,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm5,QWORD PTR [esi*8+ebp] pxor mm6,QWORD PTR 7[edi*8+ebp] mov eax,DWORD PTR 112[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm7,QWORD PTR 6[esi*8+ebp] pxor mm0,QWORD PTR 5[edi*8+ebp] shr ebx,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm1,QWORD PTR 4[esi*8+ebp] pxor mm2,QWORD PTR 3[edi*8+ebp] mov ebx,DWORD PTR 116[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm3,QWORD PTR 2[esi*8+ebp] pxor mm4,QWORD PTR 1[edi*8+ebp] shr eax,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm6,QWORD PTR [esi*8+ebp] pxor mm7,QWORD PTR 7[edi*8+ebp] mov eax,DWORD PTR 120[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm0,QWORD PTR 6[esi*8+ebp] pxor mm1,QWORD PTR 5[edi*8+ebp] shr ebx,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm2,QWORD PTR 4[esi*8+ebp] pxor mm3,QWORD PTR 3[edi*8+ebp] mov ebx,DWORD PTR 124[esp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm4,QWORD PTR 2[esi*8+ebp] pxor mm5,QWORD PTR 1[edi*8+ebp] shr eax,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm7,QWORD PTR [esi*8+ebp] pxor mm0,QWORD PTR 7[edi*8+ebp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm1,QWORD PTR 6[esi*8+ebp] pxor mm2,QWORD PTR 5[edi*8+ebp] shr ebx,16 lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,bl lea edi,DWORD PTR [edx*1+edx] movzx edx,bh pxor mm3,QWORD PTR 4[esi*8+ebp] pxor mm4,QWORD PTR 3[edi*8+ebp] lea esi,DWORD PTR [ecx*1+ecx] movzx ecx,al lea edi,DWORD PTR [edx*1+edx] movzx edx,ah pxor mm5,QWORD PTR 2[esi*8+ebp] pxor mm6,QWORD PTR 1[edi*8+ebp] lea ebx,DWORD PTR 128[esp] mov esi,DWORD PTR 12[ebx] add esi,1 cmp esi,10 je $L004roundsdone mov DWORD PTR 12[ebx],esi movq QWORD PTR 64[esp],mm0 movq QWORD PTR 72[esp],mm1 movq QWORD PTR 80[esp],mm2 movq QWORD PTR 88[esp],mm3 movq QWORD PTR 96[esp],mm4 movq QWORD PTR 104[esp],mm5 movq QWORD PTR 112[esp],mm6 movq QWORD PTR 120[esp],mm7 jmp $L003round ALIGN 16 $L004roundsdone: mov esi,DWORD PTR [ebx] mov edi,DWORD PTR 4[ebx] mov eax,DWORD PTR 8[ebx] pxor mm0,QWORD PTR [edi] pxor mm1,QWORD PTR 8[edi] pxor mm2,QWORD PTR 16[edi] pxor mm3,QWORD PTR 24[edi] pxor mm4,QWORD PTR 32[edi] pxor mm5,QWORD PTR 40[edi] pxor mm6,QWORD PTR 48[edi] pxor mm7,QWORD PTR 56[edi] pxor mm0,QWORD PTR [esi] pxor mm1,QWORD PTR 8[esi] pxor mm2,QWORD PTR 16[esi] pxor mm3,QWORD PTR 24[esi] pxor mm4,QWORD PTR 32[esi] pxor mm5,QWORD PTR 40[esi] pxor mm6,QWORD PTR 48[esi] pxor mm7,QWORD PTR 56[esi] movq QWORD PTR [esi],mm0 movq QWORD PTR 8[esi],mm1 movq QWORD PTR 16[esi],mm2 movq QWORD PTR 24[esi],mm3 movq QWORD PTR 32[esi],mm4 movq QWORD PTR 40[esi],mm5 movq QWORD PTR 48[esi],mm6 movq QWORD PTR 56[esi],mm7 lea edi,DWORD PTR 64[edi] sub eax,1 jz $L005alldone mov DWORD PTR 4[ebx],edi mov DWORD PTR 8[ebx],eax jmp $L002outerloop $L005alldone: emms mov esp,DWORD PTR 16[ebx] pop edi pop esi pop ebx pop ebp ret ALIGN 64 $L001table: 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 _whirlpool_block_mmx ENDP .text$ ENDS END