	; Don't even think of reading this code
	; It was automatically generated by md5-586.pl
	; Which is a perl program used to generate the x86 assember for
	; any of elf, a.out, BSDI,Win32, or Solaris
	; eric <eay@cryptsoft.com>
	; 
	TITLE	md5-586.asm
        .386
.model FLAT
_TEXT	SEGMENT
PUBLIC	_md5_block_x86

_md5_block_x86 PROC NEAR
	push	esi
	push	edi
	mov	edi,		DWORD PTR 12[esp]
	mov	esi,		DWORD PTR 16[esp]
	mov	ecx,		DWORD PTR 20[esp]
	push	ebp
	push	ebx
	add	ecx,		esi
	sub	ecx,		64
	mov	eax,		DWORD PTR [edi]
	push	ecx
	mov	ebx,		DWORD PTR 4[edi]
	mov	ecx,		DWORD PTR 8[edi]
	mov	edx,		DWORD PTR 12[edi]
L000start:
	; 
	; R0 section
	mov	edi,		ecx
	mov	ebp,		DWORD PTR [esi]
	; R0 0
	xor	edi,		edx
	and	edi,		ebx
	lea	eax,		DWORD PTR 3614090360[ebp*1+eax]
	mov	ebp,		DWORD PTR 4[esi]
	xor	edi,		edx
	add	eax,		edi
	mov	edi,		ebx
	rol	eax,		7
	add	eax,		ebx
	; R0 1
	xor	edi,		ecx
	and	edi,		eax
	lea	edx,		DWORD PTR 3905402710[ebp*1+edx]
	mov	ebp,		DWORD PTR 8[esi]
	xor	edi,		ecx
	add	edx,		edi
	mov	edi,		eax
	rol	edx,		12
	add	edx,		eax
	; R0 2
	xor	edi,		ebx
	and	edi,		edx
	lea	ecx,		DWORD PTR 606105819[ebp*1+ecx]
	mov	ebp,		DWORD PTR 12[esi]
	xor	edi,		ebx
	add	ecx,		edi
	mov	edi,		edx
	rol	ecx,		17
	add	ecx,		edx
	; R0 3
	xor	edi,		eax
	and	edi,		ecx
	lea	ebx,		DWORD PTR 3250441966[ebp*1+ebx]
	mov	ebp,		DWORD PTR 16[esi]
	xor	edi,		eax
	add	ebx,		edi
	mov	edi,		ecx
	rol	ebx,		22
	add	ebx,		ecx
	; R0 4
	xor	edi,		edx
	and	edi,		ebx
	lea	eax,		DWORD PTR 4118548399[ebp*1+eax]
	mov	ebp,		DWORD PTR 20[esi]
	xor	edi,		edx
	add	eax,		edi
	mov	edi,		ebx
	rol	eax,		7
	add	eax,		ebx
	; R0 5
	xor	edi,		ecx
	and	edi,		eax
	lea	edx,		DWORD PTR 1200080426[ebp*1+edx]
	mov	ebp,		DWORD PTR 24[esi]
	xor	edi,		ecx
	add	edx,		edi
	mov	edi,		eax
	rol	edx,		12
	add	edx,		eax
	; R0 6
	xor	edi,		ebx
	and	edi,		edx
	lea	ecx,		DWORD PTR 2821735955[ebp*1+ecx]
	mov	ebp,		DWORD PTR 28[esi]
	xor	edi,		ebx
	add	ecx,		edi
	mov	edi,		edx
	rol	ecx,		17
	add	ecx,		edx
	; R0 7
	xor	edi,		eax
	and	edi,		ecx
	lea	ebx,		DWORD PTR 4249261313[ebp*1+ebx]
	mov	ebp,		DWORD PTR 32[esi]
	xor	edi,		eax
	add	ebx,		edi
	mov	edi,		ecx
	rol	ebx,		22
	add	ebx,		ecx
	; R0 8
	xor	edi,		edx
	and	edi,		ebx
	lea	eax,		DWORD PTR 1770035416[ebp*1+eax]
	mov	ebp,		DWORD PTR 36[esi]
	xor	edi,		edx
	add	eax,		edi
	mov	edi,		ebx
	rol	eax,		7
	add	eax,		ebx
	; R0 9
	xor	edi,		ecx
	and	edi,		eax
	lea	edx,		DWORD PTR 2336552879[ebp*1+edx]
	mov	ebp,		DWORD PTR 40[esi]
	xor	edi,		ecx
	add	edx,		edi
	mov	edi,		eax
	rol	edx,		12
	add	edx,		eax
	; R0 10
	xor	edi,		ebx
	and	edi,		edx
	lea	ecx,		DWORD PTR 4294925233[ebp*1+ecx]
	mov	ebp,		DWORD PTR 44[esi]
	xor	edi,		ebx
	add	ecx,		edi
	mov	edi,		edx
	rol	ecx,		17
	add	ecx,		edx
	; R0 11
	xor	edi,		eax
	and	edi,		ecx
	lea	ebx,		DWORD PTR 2304563134[ebp*1+ebx]
	mov	ebp,		DWORD PTR 48[esi]
	xor	edi,		eax
	add	ebx,		edi
	mov	edi,		ecx
	rol	ebx,		22
	add	ebx,		ecx
	; R0 12
	xor	edi,		edx
	and	edi,		ebx
	lea	eax,		DWORD PTR 1804603682[ebp*1+eax]
	mov	ebp,		DWORD PTR 52[esi]
	xor	edi,		edx
	add	eax,		edi
	mov	edi,		ebx
	rol	eax,		7
	add	eax,		ebx
	; R0 13
	xor	edi,		ecx
	and	edi,		eax
	lea	edx,		DWORD PTR 4254626195[ebp*1+edx]
	mov	ebp,		DWORD PTR 56[esi]
	xor	edi,		ecx
	add	edx,		edi
	mov	edi,		eax
	rol	edx,		12
	add	edx,		eax
	; R0 14
	xor	edi,		ebx
	and	edi,		edx
	lea	ecx,		DWORD PTR 2792965006[ebp*1+ecx]
	mov	ebp,		DWORD PTR 60[esi]
	xor	edi,		ebx
	add	ecx,		edi
	mov	edi,		edx
	rol	ecx,		17
	add	ecx,		edx
	; R0 15
	xor	edi,		eax
	and	edi,		ecx
	lea	ebx,		DWORD PTR 1236535329[ebp*1+ebx]
	mov	ebp,		DWORD PTR 4[esi]
	xor	edi,		eax
	add	ebx,		edi
	mov	edi,		ecx
	rol	ebx,		22
	add	ebx,		ecx
	; 
	; R1 section
	; R1 16
	lea	eax,		DWORD PTR 4129170786[ebp*1+eax]
	xor	edi,		ebx
	and	edi,		edx
	mov	ebp,		DWORD PTR 24[esi]
	xor	edi,		ecx
	add	eax,		edi
	mov	edi,		ebx
	rol	eax,		5
	add	eax,		ebx
	; R1 17
	lea	edx,		DWORD PTR 3225465664[ebp*1+edx]
	xor	edi,		eax
	and	edi,		ecx
	mov	ebp,		DWORD PTR 44[esi]
	xor	edi,		ebx
	add	edx,		edi
	mov	edi,		eax
	rol	edx,		9
	add	edx,		eax
	; R1 18
	lea	ecx,		DWORD PTR 643717713[ebp*1+ecx]
	xor	edi,		edx
	and	edi,		ebx
	mov	ebp,		DWORD PTR [esi]
	xor	edi,		eax
	add	ecx,		edi
	mov	edi,		edx
	rol	ecx,		14
	add	ecx,		edx
	; R1 19
	lea	ebx,		DWORD PTR 3921069994[ebp*1+ebx]
	xor	edi,		ecx
	and	edi,		eax
	mov	ebp,		DWORD PTR 20[esi]
	xor	edi,		edx
	add	ebx,		edi
	mov	edi,		ecx
	rol	ebx,		20
	add	ebx,		ecx
	; R1 20
	lea	eax,		DWORD PTR 3593408605[ebp*1+eax]
	xor	edi,		ebx
	and	edi,		edx
	mov	ebp,		DWORD PTR 40[esi]
	xor	edi,		ecx
	add	eax,		edi
	mov	edi,		ebx
	rol	eax,		5
	add	eax,		ebx
	; R1 21
	lea	edx,		DWORD PTR 38016083[ebp*1+edx]
	xor	edi,		eax
	and	edi,		ecx
	mov	ebp,		DWORD PTR 60[esi]
	xor	edi,		ebx
	add	edx,		edi
	mov	edi,		eax
	rol	edx,		9
	add	edx,		eax
	; R1 22
	lea	ecx,		DWORD PTR 3634488961[ebp*1+ecx]
	xor	edi,		edx
	and	edi,		ebx
	mov	ebp,		DWORD PTR 16[esi]
	xor	edi,		eax
	add	ecx,		edi
	mov	edi,		edx
	rol	ecx,		14
	add	ecx,		edx
	; R1 23
	lea	ebx,		DWORD PTR 3889429448[ebp*1+ebx]
	xor	edi,		ecx
	and	edi,		eax
	mov	ebp,		DWORD PTR 36[esi]
	xor	edi,		edx
	add	ebx,		edi
	mov	edi,		ecx
	rol	ebx,		20
	add	ebx,		ecx
	; R1 24
	lea	eax,		DWORD PTR 568446438[ebp*1+eax]
	xor	edi,		ebx
	and	edi,		edx
	mov	ebp,		DWORD PTR 56[esi]
	xor	edi,		ecx
	add	eax,		edi
	mov	edi,		ebx
	rol	eax,		5
	add	eax,		ebx
	; R1 25
	lea	edx,		DWORD PTR 3275163606[ebp*1+edx]
	xor	edi,		eax
	and	edi,		ecx
	mov	ebp,		DWORD PTR 12[esi]
	xor	edi,		ebx
	add	edx,		edi
	mov	edi,		eax
	rol	edx,		9
	add	edx,		eax
	; R1 26
	lea	ecx,		DWORD PTR 4107603335[ebp*1+ecx]
	xor	edi,		edx
	and	edi,		ebx
	mov	ebp,		DWORD PTR 32[esi]
	xor	edi,		eax
	add	ecx,		edi
	mov	edi,		edx
	rol	ecx,		14
	add	ecx,		edx
	; R1 27
	lea	ebx,		DWORD PTR 1163531501[ebp*1+ebx]
	xor	edi,		ecx
	and	edi,		eax
	mov	ebp,		DWORD PTR 52[esi]
	xor	edi,		edx
	add	ebx,		edi
	mov	edi,		ecx
	rol	ebx,		20
	add	ebx,		ecx
	; R1 28
	lea	eax,		DWORD PTR 2850285829[ebp*1+eax]
	xor	edi,		ebx
	and	edi,		edx
	mov	ebp,		DWORD PTR 8[esi]
	xor	edi,		ecx
	add	eax,		edi
	mov	edi,		ebx
	rol	eax,		5
	add	eax,		ebx
	; R1 29
	lea	edx,		DWORD PTR 4243563512[ebp*1+edx]
	xor	edi,		eax
	and	edi,		ecx
	mov	ebp,		DWORD PTR 28[esi]
	xor	edi,		ebx
	add	edx,		edi
	mov	edi,		eax
	rol	edx,		9
	add	edx,		eax
	; R1 30
	lea	ecx,		DWORD PTR 1735328473[ebp*1+ecx]
	xor	edi,		edx
	and	edi,		ebx
	mov	ebp,		DWORD PTR 48[esi]
	xor	edi,		eax
	add	ecx,		edi
	mov	edi,		edx
	rol	ecx,		14
	add	ecx,		edx
	; R1 31
	lea	ebx,		DWORD PTR 2368359562[ebp*1+ebx]
	xor	edi,		ecx
	and	edi,		eax
	mov	ebp,		DWORD PTR 20[esi]
	xor	edi,		edx
	add	ebx,		edi
	mov	edi,		ecx
	rol	ebx,		20
	add	ebx,		ecx
	; 
	; R2 section
	; R2 32
	xor	edi,		edx
	xor	edi,		ebx
	lea	eax,		DWORD PTR 4294588738[ebp*1+eax]
	add	eax,		edi
	mov	ebp,		DWORD PTR 32[esi]
	rol	eax,		4
	mov	edi,		ebx
	; R2 33
	lea	edx,		DWORD PTR 2272392833[ebp*1+edx]
	add	eax,		ebx
	xor	edi,		ecx
	xor	edi,		eax
	mov	ebp,		DWORD PTR 44[esi]
	add	edx,		edi
	mov	edi,		eax
	rol	edx,		11
	add	edx,		eax
	; R2 34
	xor	edi,		ebx
	xor	edi,		edx
	lea	ecx,		DWORD PTR 1839030562[ebp*1+ecx]
	add	ecx,		edi
	mov	ebp,		DWORD PTR 56[esi]
	rol	ecx,		16
	mov	edi,		edx
	; R2 35
	lea	ebx,		DWORD PTR 4259657740[ebp*1+ebx]
	add	ecx,		edx
	xor	edi,		eax
	xor	edi,		ecx
	mov	ebp,		DWORD PTR 4[esi]
	add	ebx,		edi
	mov	edi,		ecx
	rol	ebx,		23
	add	ebx,		ecx
	; R2 36
	xor	edi,		edx
	xor	edi,		ebx
	lea	eax,		DWORD PTR 2763975236[ebp*1+eax]
	add	eax,		edi
	mov	ebp,		DWORD PTR 16[esi]
	rol	eax,		4
	mov	edi,		ebx
	; R2 37
	lea	edx,		DWORD PTR 1272893353[ebp*1+edx]
	add	eax,		ebx
	xor	edi,		ecx
	xor	edi,		eax
	mov	ebp,		DWORD PTR 28[esi]
	add	edx,		edi
	mov	edi,		eax
	rol	edx,		11
	add	edx,		eax
	; R2 38
	xor	edi,		ebx
	xor	edi,		edx
	lea	ecx,		DWORD PTR 4139469664[ebp*1+ecx]
	add	ecx,		edi
	mov	ebp,		DWORD PTR 40[esi]
	rol	ecx,		16
	mov	edi,		edx
	; R2 39
	lea	ebx,		DWORD PTR 3200236656[ebp*1+ebx]
	add	ecx,		edx
	xor	edi,		eax
	xor	edi,		ecx
	mov	ebp,		DWORD PTR 52[esi]
	add	ebx,		edi
	mov	edi,		ecx
	rol	ebx,		23
	add	ebx,		ecx
	; R2 40
	xor	edi,		edx
	xor	edi,		ebx
	lea	eax,		DWORD PTR 681279174[ebp*1+eax]
	add	eax,		edi
	mov	ebp,		DWORD PTR [esi]
	rol	eax,		4
	mov	edi,		ebx
	; R2 41
	lea	edx,		DWORD PTR 3936430074[ebp*1+edx]
	add	eax,		ebx
	xor	edi,		ecx
	xor	edi,		eax
	mov	ebp,		DWORD PTR 12[esi]
	add	edx,		edi
	mov	edi,		eax
	rol	edx,		11
	add	edx,		eax
	; R2 42
	xor	edi,		ebx
	xor	edi,		edx
	lea	ecx,		DWORD PTR 3572445317[ebp*1+ecx]
	add	ecx,		edi
	mov	ebp,		DWORD PTR 24[esi]
	rol	ecx,		16
	mov	edi,		edx
	; R2 43
	lea	ebx,		DWORD PTR 76029189[ebp*1+ebx]
	add	ecx,		edx
	xor	edi,		eax
	xor	edi,		ecx
	mov	ebp,		DWORD PTR 36[esi]
	add	ebx,		edi
	mov	edi,		ecx
	rol	ebx,		23
	add	ebx,		ecx
	; R2 44
	xor	edi,		edx
	xor	edi,		ebx
	lea	eax,		DWORD PTR 3654602809[ebp*1+eax]
	add	eax,		edi
	mov	ebp,		DWORD PTR 48[esi]
	rol	eax,		4
	mov	edi,		ebx
	; R2 45
	lea	edx,		DWORD PTR 3873151461[ebp*1+edx]
	add	eax,		ebx
	xor	edi,		ecx
	xor	edi,		eax
	mov	ebp,		DWORD PTR 60[esi]
	add	edx,		edi
	mov	edi,		eax
	rol	edx,		11
	add	edx,		eax
	; R2 46
	xor	edi,		ebx
	xor	edi,		edx
	lea	ecx,		DWORD PTR 530742520[ebp*1+ecx]
	add	ecx,		edi
	mov	ebp,		DWORD PTR 8[esi]
	rol	ecx,		16
	mov	edi,		edx
	; R2 47
	lea	ebx,		DWORD PTR 3299628645[ebp*1+ebx]
	add	ecx,		edx
	xor	edi,		eax
	xor	edi,		ecx
	mov	ebp,		DWORD PTR [esi]
	add	ebx,		edi
	mov	edi,		-1
	rol	ebx,		23
	add	ebx,		ecx
	; 
	; R3 section
	; R3 48
	xor	edi,		edx
	or	edi,		ebx
	lea	eax,		DWORD PTR 4096336452[ebp*1+eax]
	xor	edi,		ecx
	mov	ebp,		DWORD PTR 28[esi]
	add	eax,		edi
	mov	edi,		-1
	rol	eax,		6
	xor	edi,		ecx
	add	eax,		ebx
	; R3 49
	or	edi,		eax
	lea	edx,		DWORD PTR 1126891415[ebp*1+edx]
	xor	edi,		ebx
	mov	ebp,		DWORD PTR 56[esi]
	add	edx,		edi
	mov	edi,		-1
	rol	edx,		10
	xor	edi,		ebx
	add	edx,		eax
	; R3 50
	or	edi,		edx
	lea	ecx,		DWORD PTR 2878612391[ebp*1+ecx]
	xor	edi,		eax
	mov	ebp,		DWORD PTR 20[esi]
	add	ecx,		edi
	mov	edi,		-1
	rol	ecx,		15
	xor	edi,		eax
	add	ecx,		edx
	; R3 51
	or	edi,		ecx
	lea	ebx,		DWORD PTR 4237533241[ebp*1+ebx]
	xor	edi,		edx
	mov	ebp,		DWORD PTR 48[esi]
	add	ebx,		edi
	mov	edi,		-1
	rol	ebx,		21
	xor	edi,		edx
	add	ebx,		ecx
	; R3 52
	or	edi,		ebx
	lea	eax,		DWORD PTR 1700485571[ebp*1+eax]
	xor	edi,		ecx
	mov	ebp,		DWORD PTR 12[esi]
	add	eax,		edi
	mov	edi,		-1
	rol	eax,		6
	xor	edi,		ecx
	add	eax,		ebx
	; R3 53
	or	edi,		eax
	lea	edx,		DWORD PTR 2399980690[ebp*1+edx]
	xor	edi,		ebx
	mov	ebp,		DWORD PTR 40[esi]
	add	edx,		edi
	mov	edi,		-1
	rol	edx,		10
	xor	edi,		ebx
	add	edx,		eax
	; R3 54
	or	edi,		edx
	lea	ecx,		DWORD PTR 4293915773[ebp*1+ecx]
	xor	edi,		eax
	mov	ebp,		DWORD PTR 4[esi]
	add	ecx,		edi
	mov	edi,		-1
	rol	ecx,		15
	xor	edi,		eax
	add	ecx,		edx
	; R3 55
	or	edi,		ecx
	lea	ebx,		DWORD PTR 2240044497[ebp*1+ebx]
	xor	edi,		edx
	mov	ebp,		DWORD PTR 32[esi]
	add	ebx,		edi
	mov	edi,		-1
	rol	ebx,		21
	xor	edi,		edx
	add	ebx,		ecx
	; R3 56
	or	edi,		ebx
	lea	eax,		DWORD PTR 1873313359[ebp*1+eax]
	xor	edi,		ecx
	mov	ebp,		DWORD PTR 60[esi]
	add	eax,		edi
	mov	edi,		-1
	rol	eax,		6
	xor	edi,		ecx
	add	eax,		ebx
	; R3 57
	or	edi,		eax
	lea	edx,		DWORD PTR 4264355552[ebp*1+edx]
	xor	edi,		ebx
	mov	ebp,		DWORD PTR 24[esi]
	add	edx,		edi
	mov	edi,		-1
	rol	edx,		10
	xor	edi,		ebx
	add	edx,		eax
	; R3 58
	or	edi,		edx
	lea	ecx,		DWORD PTR 2734768916[ebp*1+ecx]
	xor	edi,		eax
	mov	ebp,		DWORD PTR 52[esi]
	add	ecx,		edi
	mov	edi,		-1
	rol	ecx,		15
	xor	edi,		eax
	add	ecx,		edx
	; R3 59
	or	edi,		ecx
	lea	ebx,		DWORD PTR 1309151649[ebp*1+ebx]
	xor	edi,		edx
	mov	ebp,		DWORD PTR 16[esi]
	add	ebx,		edi
	mov	edi,		-1
	rol	ebx,		21
	xor	edi,		edx
	add	ebx,		ecx
	; R3 60
	or	edi,		ebx
	lea	eax,		DWORD PTR 4149444226[ebp*1+eax]
	xor	edi,		ecx
	mov	ebp,		DWORD PTR 44[esi]
	add	eax,		edi
	mov	edi,		-1
	rol	eax,		6
	xor	edi,		ecx
	add	eax,		ebx
	; R3 61
	or	edi,		eax
	lea	edx,		DWORD PTR 3174756917[ebp*1+edx]
	xor	edi,		ebx
	mov	ebp,		DWORD PTR 8[esi]
	add	edx,		edi
	mov	edi,		-1
	rol	edx,		10
	xor	edi,		ebx
	add	edx,		eax
	; R3 62
	or	edi,		edx
	lea	ecx,		DWORD PTR 718787259[ebp*1+ecx]
	xor	edi,		eax
	mov	ebp,		DWORD PTR 36[esi]
	add	ecx,		edi
	mov	edi,		-1
	rol	ecx,		15
	xor	edi,		eax
	add	ecx,		edx
	; R3 63
	or	edi,		ecx
	lea	ebx,		DWORD PTR 3951481745[ebp*1+ebx]
	xor	edi,		edx
	mov	ebp,		DWORD PTR 24[esp]
	add	ebx,		edi
	add	esi,		64
	rol	ebx,		21
	mov	edi,		DWORD PTR [ebp]
	add	ebx,		ecx
	add	eax,		edi
	mov	edi,		DWORD PTR 4[ebp]
	add	ebx,		edi
	mov	edi,		DWORD PTR 8[ebp]
	add	ecx,		edi
	mov	edi,		DWORD PTR 12[ebp]
	add	edx,		edi
	mov	DWORD PTR [ebp],eax
	mov	DWORD PTR 4[ebp],ebx
	mov	edi,		DWORD PTR [esp]
	mov	DWORD PTR 8[ebp],ecx
	mov	DWORD PTR 12[ebp],edx
	cmp	edi,		esi
	jge	L000start
	pop	eax
	pop	ebx
	pop	ebp
	pop	edi
	pop	esi
	ret
_md5_block_x86 ENDP
_TEXT	ENDS
END
