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