| %ifidn __OUTPUT_FORMAT__,obj | 
 | section	code	use32 class=code align=64 | 
 | %elifidn __OUTPUT_FORMAT__,win32 | 
 | %ifdef __YASM_VERSION_ID__ | 
 | %if __YASM_VERSION_ID__ < 01010000h | 
 | %error yasm version 1.1.0 or later needed. | 
 | %endif | 
 | ; Yasm automatically includes .00 and complains about redefining it. | 
 | ; https://www.tortall.net/projects/yasm/manual/html/objfmt-win32-safeseh.html | 
 | %else | 
 | $@feat.00 equ 1 | 
 | %endif | 
 | section	.text	code align=64 | 
 | %else | 
 | section	.text	code | 
 | %endif | 
 | global	_bn_mul_add_words | 
 | align	16 | 
 | _bn_mul_add_words: | 
 | L$_bn_mul_add_words_begin: | 
 | 	push	ebp | 
 | 	push	ebx | 
 | 	push	esi | 
 | 	push	edi | 
 | 	;  | 
 | 	xor	esi,esi | 
 | 	mov	edi,DWORD [20+esp] | 
 | 	mov	ecx,DWORD [28+esp] | 
 | 	mov	ebx,DWORD [24+esp] | 
 | 	and	ecx,4294967288 | 
 | 	mov	ebp,DWORD [32+esp] | 
 | 	push	ecx | 
 | 	jz	NEAR L$000maw_finish | 
 | align	16 | 
 | L$001maw_loop: | 
 | 	; Round 0 | 
 | 	mov	eax,DWORD [ebx] | 
 | 	mul	ebp | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	add	eax,DWORD [edi] | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [edi],eax | 
 | 	mov	esi,edx | 
 | 	; Round 4 | 
 | 	mov	eax,DWORD [4+ebx] | 
 | 	mul	ebp | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	add	eax,DWORD [4+edi] | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [4+edi],eax | 
 | 	mov	esi,edx | 
 | 	; Round 8 | 
 | 	mov	eax,DWORD [8+ebx] | 
 | 	mul	ebp | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	add	eax,DWORD [8+edi] | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [8+edi],eax | 
 | 	mov	esi,edx | 
 | 	; Round 12 | 
 | 	mov	eax,DWORD [12+ebx] | 
 | 	mul	ebp | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	add	eax,DWORD [12+edi] | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [12+edi],eax | 
 | 	mov	esi,edx | 
 | 	; Round 16 | 
 | 	mov	eax,DWORD [16+ebx] | 
 | 	mul	ebp | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	add	eax,DWORD [16+edi] | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [16+edi],eax | 
 | 	mov	esi,edx | 
 | 	; Round 20 | 
 | 	mov	eax,DWORD [20+ebx] | 
 | 	mul	ebp | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	add	eax,DWORD [20+edi] | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [20+edi],eax | 
 | 	mov	esi,edx | 
 | 	; Round 24 | 
 | 	mov	eax,DWORD [24+ebx] | 
 | 	mul	ebp | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	add	eax,DWORD [24+edi] | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [24+edi],eax | 
 | 	mov	esi,edx | 
 | 	; Round 28 | 
 | 	mov	eax,DWORD [28+ebx] | 
 | 	mul	ebp | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	add	eax,DWORD [28+edi] | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [28+edi],eax | 
 | 	mov	esi,edx | 
 | 	;  | 
 | 	sub	ecx,8 | 
 | 	lea	ebx,[32+ebx] | 
 | 	lea	edi,[32+edi] | 
 | 	jnz	NEAR L$001maw_loop | 
 | L$000maw_finish: | 
 | 	mov	ecx,DWORD [32+esp] | 
 | 	and	ecx,7 | 
 | 	jnz	NEAR L$002maw_finish2 | 
 | 	jmp	NEAR L$003maw_end | 
 | L$002maw_finish2: | 
 | 	; Tail Round 0 | 
 | 	mov	eax,DWORD [ebx] | 
 | 	mul	ebp | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	add	eax,DWORD [edi] | 
 | 	adc	edx,0 | 
 | 	dec	ecx | 
 | 	mov	DWORD [edi],eax | 
 | 	mov	esi,edx | 
 | 	jz	NEAR L$003maw_end | 
 | 	; Tail Round 1 | 
 | 	mov	eax,DWORD [4+ebx] | 
 | 	mul	ebp | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	add	eax,DWORD [4+edi] | 
 | 	adc	edx,0 | 
 | 	dec	ecx | 
 | 	mov	DWORD [4+edi],eax | 
 | 	mov	esi,edx | 
 | 	jz	NEAR L$003maw_end | 
 | 	; Tail Round 2 | 
 | 	mov	eax,DWORD [8+ebx] | 
 | 	mul	ebp | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	add	eax,DWORD [8+edi] | 
 | 	adc	edx,0 | 
 | 	dec	ecx | 
 | 	mov	DWORD [8+edi],eax | 
 | 	mov	esi,edx | 
 | 	jz	NEAR L$003maw_end | 
 | 	; Tail Round 3 | 
 | 	mov	eax,DWORD [12+ebx] | 
 | 	mul	ebp | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	add	eax,DWORD [12+edi] | 
 | 	adc	edx,0 | 
 | 	dec	ecx | 
 | 	mov	DWORD [12+edi],eax | 
 | 	mov	esi,edx | 
 | 	jz	NEAR L$003maw_end | 
 | 	; Tail Round 4 | 
 | 	mov	eax,DWORD [16+ebx] | 
 | 	mul	ebp | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	add	eax,DWORD [16+edi] | 
 | 	adc	edx,0 | 
 | 	dec	ecx | 
 | 	mov	DWORD [16+edi],eax | 
 | 	mov	esi,edx | 
 | 	jz	NEAR L$003maw_end | 
 | 	; Tail Round 5 | 
 | 	mov	eax,DWORD [20+ebx] | 
 | 	mul	ebp | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	add	eax,DWORD [20+edi] | 
 | 	adc	edx,0 | 
 | 	dec	ecx | 
 | 	mov	DWORD [20+edi],eax | 
 | 	mov	esi,edx | 
 | 	jz	NEAR L$003maw_end | 
 | 	; Tail Round 6 | 
 | 	mov	eax,DWORD [24+ebx] | 
 | 	mul	ebp | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	add	eax,DWORD [24+edi] | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [24+edi],eax | 
 | 	mov	esi,edx | 
 | L$003maw_end: | 
 | 	mov	eax,esi | 
 | 	pop	ecx | 
 | 	pop	edi | 
 | 	pop	esi | 
 | 	pop	ebx | 
 | 	pop	ebp | 
 | 	ret | 
 | global	_bn_mul_words | 
 | align	16 | 
 | _bn_mul_words: | 
 | L$_bn_mul_words_begin: | 
 | 	push	ebp | 
 | 	push	ebx | 
 | 	push	esi | 
 | 	push	edi | 
 | 	;  | 
 | 	xor	esi,esi | 
 | 	mov	edi,DWORD [20+esp] | 
 | 	mov	ebx,DWORD [24+esp] | 
 | 	mov	ebp,DWORD [28+esp] | 
 | 	mov	ecx,DWORD [32+esp] | 
 | 	and	ebp,4294967288 | 
 | 	jz	NEAR L$004mw_finish | 
 | L$005mw_loop: | 
 | 	; Round 0 | 
 | 	mov	eax,DWORD [ebx] | 
 | 	mul	ecx | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [edi],eax | 
 | 	mov	esi,edx | 
 | 	; Round 4 | 
 | 	mov	eax,DWORD [4+ebx] | 
 | 	mul	ecx | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [4+edi],eax | 
 | 	mov	esi,edx | 
 | 	; Round 8 | 
 | 	mov	eax,DWORD [8+ebx] | 
 | 	mul	ecx | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [8+edi],eax | 
 | 	mov	esi,edx | 
 | 	; Round 12 | 
 | 	mov	eax,DWORD [12+ebx] | 
 | 	mul	ecx | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [12+edi],eax | 
 | 	mov	esi,edx | 
 | 	; Round 16 | 
 | 	mov	eax,DWORD [16+ebx] | 
 | 	mul	ecx | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [16+edi],eax | 
 | 	mov	esi,edx | 
 | 	; Round 20 | 
 | 	mov	eax,DWORD [20+ebx] | 
 | 	mul	ecx | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [20+edi],eax | 
 | 	mov	esi,edx | 
 | 	; Round 24 | 
 | 	mov	eax,DWORD [24+ebx] | 
 | 	mul	ecx | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [24+edi],eax | 
 | 	mov	esi,edx | 
 | 	; Round 28 | 
 | 	mov	eax,DWORD [28+ebx] | 
 | 	mul	ecx | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [28+edi],eax | 
 | 	mov	esi,edx | 
 | 	;  | 
 | 	add	ebx,32 | 
 | 	add	edi,32 | 
 | 	sub	ebp,8 | 
 | 	jz	NEAR L$004mw_finish | 
 | 	jmp	NEAR L$005mw_loop | 
 | L$004mw_finish: | 
 | 	mov	ebp,DWORD [28+esp] | 
 | 	and	ebp,7 | 
 | 	jnz	NEAR L$006mw_finish2 | 
 | 	jmp	NEAR L$007mw_end | 
 | L$006mw_finish2: | 
 | 	; Tail Round 0 | 
 | 	mov	eax,DWORD [ebx] | 
 | 	mul	ecx | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [edi],eax | 
 | 	mov	esi,edx | 
 | 	dec	ebp | 
 | 	jz	NEAR L$007mw_end | 
 | 	; Tail Round 1 | 
 | 	mov	eax,DWORD [4+ebx] | 
 | 	mul	ecx | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [4+edi],eax | 
 | 	mov	esi,edx | 
 | 	dec	ebp | 
 | 	jz	NEAR L$007mw_end | 
 | 	; Tail Round 2 | 
 | 	mov	eax,DWORD [8+ebx] | 
 | 	mul	ecx | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [8+edi],eax | 
 | 	mov	esi,edx | 
 | 	dec	ebp | 
 | 	jz	NEAR L$007mw_end | 
 | 	; Tail Round 3 | 
 | 	mov	eax,DWORD [12+ebx] | 
 | 	mul	ecx | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [12+edi],eax | 
 | 	mov	esi,edx | 
 | 	dec	ebp | 
 | 	jz	NEAR L$007mw_end | 
 | 	; Tail Round 4 | 
 | 	mov	eax,DWORD [16+ebx] | 
 | 	mul	ecx | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [16+edi],eax | 
 | 	mov	esi,edx | 
 | 	dec	ebp | 
 | 	jz	NEAR L$007mw_end | 
 | 	; Tail Round 5 | 
 | 	mov	eax,DWORD [20+ebx] | 
 | 	mul	ecx | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [20+edi],eax | 
 | 	mov	esi,edx | 
 | 	dec	ebp | 
 | 	jz	NEAR L$007mw_end | 
 | 	; Tail Round 6 | 
 | 	mov	eax,DWORD [24+ebx] | 
 | 	mul	ecx | 
 | 	add	eax,esi | 
 | 	adc	edx,0 | 
 | 	mov	DWORD [24+edi],eax | 
 | 	mov	esi,edx | 
 | L$007mw_end: | 
 | 	mov	eax,esi | 
 | 	pop	edi | 
 | 	pop	esi | 
 | 	pop	ebx | 
 | 	pop	ebp | 
 | 	ret | 
 | global	_bn_sqr_words | 
 | align	16 | 
 | _bn_sqr_words: | 
 | L$_bn_sqr_words_begin: | 
 | 	push	ebp | 
 | 	push	ebx | 
 | 	push	esi | 
 | 	push	edi | 
 | 	;  | 
 | 	mov	esi,DWORD [20+esp] | 
 | 	mov	edi,DWORD [24+esp] | 
 | 	mov	ebx,DWORD [28+esp] | 
 | 	and	ebx,4294967288 | 
 | 	jz	NEAR L$008sw_finish | 
 | L$009sw_loop: | 
 | 	; Round 0 | 
 | 	mov	eax,DWORD [edi] | 
 | 	mul	eax | 
 | 	mov	DWORD [esi],eax | 
 | 	mov	DWORD [4+esi],edx | 
 | 	; Round 4 | 
 | 	mov	eax,DWORD [4+edi] | 
 | 	mul	eax | 
 | 	mov	DWORD [8+esi],eax | 
 | 	mov	DWORD [12+esi],edx | 
 | 	; Round 8 | 
 | 	mov	eax,DWORD [8+edi] | 
 | 	mul	eax | 
 | 	mov	DWORD [16+esi],eax | 
 | 	mov	DWORD [20+esi],edx | 
 | 	; Round 12 | 
 | 	mov	eax,DWORD [12+edi] | 
 | 	mul	eax | 
 | 	mov	DWORD [24+esi],eax | 
 | 	mov	DWORD [28+esi],edx | 
 | 	; Round 16 | 
 | 	mov	eax,DWORD [16+edi] | 
 | 	mul	eax | 
 | 	mov	DWORD [32+esi],eax | 
 | 	mov	DWORD [36+esi],edx | 
 | 	; Round 20 | 
 | 	mov	eax,DWORD [20+edi] | 
 | 	mul	eax | 
 | 	mov	DWORD [40+esi],eax | 
 | 	mov	DWORD [44+esi],edx | 
 | 	; Round 24 | 
 | 	mov	eax,DWORD [24+edi] | 
 | 	mul	eax | 
 | 	mov	DWORD [48+esi],eax | 
 | 	mov	DWORD [52+esi],edx | 
 | 	; Round 28 | 
 | 	mov	eax,DWORD [28+edi] | 
 | 	mul	eax | 
 | 	mov	DWORD [56+esi],eax | 
 | 	mov	DWORD [60+esi],edx | 
 | 	;  | 
 | 	add	edi,32 | 
 | 	add	esi,64 | 
 | 	sub	ebx,8 | 
 | 	jnz	NEAR L$009sw_loop | 
 | L$008sw_finish: | 
 | 	mov	ebx,DWORD [28+esp] | 
 | 	and	ebx,7 | 
 | 	jz	NEAR L$010sw_end | 
 | 	; Tail Round 0 | 
 | 	mov	eax,DWORD [edi] | 
 | 	mul	eax | 
 | 	mov	DWORD [esi],eax | 
 | 	dec	ebx | 
 | 	mov	DWORD [4+esi],edx | 
 | 	jz	NEAR L$010sw_end | 
 | 	; Tail Round 1 | 
 | 	mov	eax,DWORD [4+edi] | 
 | 	mul	eax | 
 | 	mov	DWORD [8+esi],eax | 
 | 	dec	ebx | 
 | 	mov	DWORD [12+esi],edx | 
 | 	jz	NEAR L$010sw_end | 
 | 	; Tail Round 2 | 
 | 	mov	eax,DWORD [8+edi] | 
 | 	mul	eax | 
 | 	mov	DWORD [16+esi],eax | 
 | 	dec	ebx | 
 | 	mov	DWORD [20+esi],edx | 
 | 	jz	NEAR L$010sw_end | 
 | 	; Tail Round 3 | 
 | 	mov	eax,DWORD [12+edi] | 
 | 	mul	eax | 
 | 	mov	DWORD [24+esi],eax | 
 | 	dec	ebx | 
 | 	mov	DWORD [28+esi],edx | 
 | 	jz	NEAR L$010sw_end | 
 | 	; Tail Round 4 | 
 | 	mov	eax,DWORD [16+edi] | 
 | 	mul	eax | 
 | 	mov	DWORD [32+esi],eax | 
 | 	dec	ebx | 
 | 	mov	DWORD [36+esi],edx | 
 | 	jz	NEAR L$010sw_end | 
 | 	; Tail Round 5 | 
 | 	mov	eax,DWORD [20+edi] | 
 | 	mul	eax | 
 | 	mov	DWORD [40+esi],eax | 
 | 	dec	ebx | 
 | 	mov	DWORD [44+esi],edx | 
 | 	jz	NEAR L$010sw_end | 
 | 	; Tail Round 6 | 
 | 	mov	eax,DWORD [24+edi] | 
 | 	mul	eax | 
 | 	mov	DWORD [48+esi],eax | 
 | 	mov	DWORD [52+esi],edx | 
 | L$010sw_end: | 
 | 	pop	edi | 
 | 	pop	esi | 
 | 	pop	ebx | 
 | 	pop	ebp | 
 | 	ret | 
 | global	_bn_div_words | 
 | align	16 | 
 | _bn_div_words: | 
 | L$_bn_div_words_begin: | 
 | 	mov	edx,DWORD [4+esp] | 
 | 	mov	eax,DWORD [8+esp] | 
 | 	mov	ecx,DWORD [12+esp] | 
 | 	div	ecx | 
 | 	ret | 
 | global	_bn_add_words | 
 | align	16 | 
 | _bn_add_words: | 
 | L$_bn_add_words_begin: | 
 | 	push	ebp | 
 | 	push	ebx | 
 | 	push	esi | 
 | 	push	edi | 
 | 	;  | 
 | 	mov	ebx,DWORD [20+esp] | 
 | 	mov	esi,DWORD [24+esp] | 
 | 	mov	edi,DWORD [28+esp] | 
 | 	mov	ebp,DWORD [32+esp] | 
 | 	xor	eax,eax | 
 | 	and	ebp,4294967288 | 
 | 	jz	NEAR L$011aw_finish | 
 | L$012aw_loop: | 
 | 	; Round 0 | 
 | 	mov	ecx,DWORD [esi] | 
 | 	mov	edx,DWORD [edi] | 
 | 	add	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	add	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [ebx],ecx | 
 | 	; Round 1 | 
 | 	mov	ecx,DWORD [4+esi] | 
 | 	mov	edx,DWORD [4+edi] | 
 | 	add	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	add	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [4+ebx],ecx | 
 | 	; Round 2 | 
 | 	mov	ecx,DWORD [8+esi] | 
 | 	mov	edx,DWORD [8+edi] | 
 | 	add	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	add	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [8+ebx],ecx | 
 | 	; Round 3 | 
 | 	mov	ecx,DWORD [12+esi] | 
 | 	mov	edx,DWORD [12+edi] | 
 | 	add	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	add	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [12+ebx],ecx | 
 | 	; Round 4 | 
 | 	mov	ecx,DWORD [16+esi] | 
 | 	mov	edx,DWORD [16+edi] | 
 | 	add	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	add	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [16+ebx],ecx | 
 | 	; Round 5 | 
 | 	mov	ecx,DWORD [20+esi] | 
 | 	mov	edx,DWORD [20+edi] | 
 | 	add	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	add	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [20+ebx],ecx | 
 | 	; Round 6 | 
 | 	mov	ecx,DWORD [24+esi] | 
 | 	mov	edx,DWORD [24+edi] | 
 | 	add	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	add	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [24+ebx],ecx | 
 | 	; Round 7 | 
 | 	mov	ecx,DWORD [28+esi] | 
 | 	mov	edx,DWORD [28+edi] | 
 | 	add	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	add	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [28+ebx],ecx | 
 | 	;  | 
 | 	add	esi,32 | 
 | 	add	edi,32 | 
 | 	add	ebx,32 | 
 | 	sub	ebp,8 | 
 | 	jnz	NEAR L$012aw_loop | 
 | L$011aw_finish: | 
 | 	mov	ebp,DWORD [32+esp] | 
 | 	and	ebp,7 | 
 | 	jz	NEAR L$013aw_end | 
 | 	; Tail Round 0 | 
 | 	mov	ecx,DWORD [esi] | 
 | 	mov	edx,DWORD [edi] | 
 | 	add	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	add	ecx,edx | 
 | 	adc	eax,0 | 
 | 	dec	ebp | 
 | 	mov	DWORD [ebx],ecx | 
 | 	jz	NEAR L$013aw_end | 
 | 	; Tail Round 1 | 
 | 	mov	ecx,DWORD [4+esi] | 
 | 	mov	edx,DWORD [4+edi] | 
 | 	add	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	add	ecx,edx | 
 | 	adc	eax,0 | 
 | 	dec	ebp | 
 | 	mov	DWORD [4+ebx],ecx | 
 | 	jz	NEAR L$013aw_end | 
 | 	; Tail Round 2 | 
 | 	mov	ecx,DWORD [8+esi] | 
 | 	mov	edx,DWORD [8+edi] | 
 | 	add	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	add	ecx,edx | 
 | 	adc	eax,0 | 
 | 	dec	ebp | 
 | 	mov	DWORD [8+ebx],ecx | 
 | 	jz	NEAR L$013aw_end | 
 | 	; Tail Round 3 | 
 | 	mov	ecx,DWORD [12+esi] | 
 | 	mov	edx,DWORD [12+edi] | 
 | 	add	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	add	ecx,edx | 
 | 	adc	eax,0 | 
 | 	dec	ebp | 
 | 	mov	DWORD [12+ebx],ecx | 
 | 	jz	NEAR L$013aw_end | 
 | 	; Tail Round 4 | 
 | 	mov	ecx,DWORD [16+esi] | 
 | 	mov	edx,DWORD [16+edi] | 
 | 	add	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	add	ecx,edx | 
 | 	adc	eax,0 | 
 | 	dec	ebp | 
 | 	mov	DWORD [16+ebx],ecx | 
 | 	jz	NEAR L$013aw_end | 
 | 	; Tail Round 5 | 
 | 	mov	ecx,DWORD [20+esi] | 
 | 	mov	edx,DWORD [20+edi] | 
 | 	add	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	add	ecx,edx | 
 | 	adc	eax,0 | 
 | 	dec	ebp | 
 | 	mov	DWORD [20+ebx],ecx | 
 | 	jz	NEAR L$013aw_end | 
 | 	; Tail Round 6 | 
 | 	mov	ecx,DWORD [24+esi] | 
 | 	mov	edx,DWORD [24+edi] | 
 | 	add	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	add	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [24+ebx],ecx | 
 | L$013aw_end: | 
 | 	pop	edi | 
 | 	pop	esi | 
 | 	pop	ebx | 
 | 	pop	ebp | 
 | 	ret | 
 | global	_bn_sub_words | 
 | align	16 | 
 | _bn_sub_words: | 
 | L$_bn_sub_words_begin: | 
 | 	push	ebp | 
 | 	push	ebx | 
 | 	push	esi | 
 | 	push	edi | 
 | 	;  | 
 | 	mov	ebx,DWORD [20+esp] | 
 | 	mov	esi,DWORD [24+esp] | 
 | 	mov	edi,DWORD [28+esp] | 
 | 	mov	ebp,DWORD [32+esp] | 
 | 	xor	eax,eax | 
 | 	and	ebp,4294967288 | 
 | 	jz	NEAR L$014aw_finish | 
 | L$015aw_loop: | 
 | 	; Round 0 | 
 | 	mov	ecx,DWORD [esi] | 
 | 	mov	edx,DWORD [edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [ebx],ecx | 
 | 	; Round 1 | 
 | 	mov	ecx,DWORD [4+esi] | 
 | 	mov	edx,DWORD [4+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [4+ebx],ecx | 
 | 	; Round 2 | 
 | 	mov	ecx,DWORD [8+esi] | 
 | 	mov	edx,DWORD [8+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [8+ebx],ecx | 
 | 	; Round 3 | 
 | 	mov	ecx,DWORD [12+esi] | 
 | 	mov	edx,DWORD [12+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [12+ebx],ecx | 
 | 	; Round 4 | 
 | 	mov	ecx,DWORD [16+esi] | 
 | 	mov	edx,DWORD [16+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [16+ebx],ecx | 
 | 	; Round 5 | 
 | 	mov	ecx,DWORD [20+esi] | 
 | 	mov	edx,DWORD [20+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [20+ebx],ecx | 
 | 	; Round 6 | 
 | 	mov	ecx,DWORD [24+esi] | 
 | 	mov	edx,DWORD [24+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [24+ebx],ecx | 
 | 	; Round 7 | 
 | 	mov	ecx,DWORD [28+esi] | 
 | 	mov	edx,DWORD [28+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [28+ebx],ecx | 
 | 	;  | 
 | 	add	esi,32 | 
 | 	add	edi,32 | 
 | 	add	ebx,32 | 
 | 	sub	ebp,8 | 
 | 	jnz	NEAR L$015aw_loop | 
 | L$014aw_finish: | 
 | 	mov	ebp,DWORD [32+esp] | 
 | 	and	ebp,7 | 
 | 	jz	NEAR L$016aw_end | 
 | 	; Tail Round 0 | 
 | 	mov	ecx,DWORD [esi] | 
 | 	mov	edx,DWORD [edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	dec	ebp | 
 | 	mov	DWORD [ebx],ecx | 
 | 	jz	NEAR L$016aw_end | 
 | 	; Tail Round 1 | 
 | 	mov	ecx,DWORD [4+esi] | 
 | 	mov	edx,DWORD [4+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	dec	ebp | 
 | 	mov	DWORD [4+ebx],ecx | 
 | 	jz	NEAR L$016aw_end | 
 | 	; Tail Round 2 | 
 | 	mov	ecx,DWORD [8+esi] | 
 | 	mov	edx,DWORD [8+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	dec	ebp | 
 | 	mov	DWORD [8+ebx],ecx | 
 | 	jz	NEAR L$016aw_end | 
 | 	; Tail Round 3 | 
 | 	mov	ecx,DWORD [12+esi] | 
 | 	mov	edx,DWORD [12+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	dec	ebp | 
 | 	mov	DWORD [12+ebx],ecx | 
 | 	jz	NEAR L$016aw_end | 
 | 	; Tail Round 4 | 
 | 	mov	ecx,DWORD [16+esi] | 
 | 	mov	edx,DWORD [16+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	dec	ebp | 
 | 	mov	DWORD [16+ebx],ecx | 
 | 	jz	NEAR L$016aw_end | 
 | 	; Tail Round 5 | 
 | 	mov	ecx,DWORD [20+esi] | 
 | 	mov	edx,DWORD [20+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	dec	ebp | 
 | 	mov	DWORD [20+ebx],ecx | 
 | 	jz	NEAR L$016aw_end | 
 | 	; Tail Round 6 | 
 | 	mov	ecx,DWORD [24+esi] | 
 | 	mov	edx,DWORD [24+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [24+ebx],ecx | 
 | L$016aw_end: | 
 | 	pop	edi | 
 | 	pop	esi | 
 | 	pop	ebx | 
 | 	pop	ebp | 
 | 	ret | 
 | global	_bn_sub_part_words | 
 | align	16 | 
 | _bn_sub_part_words: | 
 | L$_bn_sub_part_words_begin: | 
 | 	push	ebp | 
 | 	push	ebx | 
 | 	push	esi | 
 | 	push	edi | 
 | 	;  | 
 | 	mov	ebx,DWORD [20+esp] | 
 | 	mov	esi,DWORD [24+esp] | 
 | 	mov	edi,DWORD [28+esp] | 
 | 	mov	ebp,DWORD [32+esp] | 
 | 	xor	eax,eax | 
 | 	and	ebp,4294967288 | 
 | 	jz	NEAR L$017aw_finish | 
 | L$018aw_loop: | 
 | 	; Round 0 | 
 | 	mov	ecx,DWORD [esi] | 
 | 	mov	edx,DWORD [edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [ebx],ecx | 
 | 	; Round 1 | 
 | 	mov	ecx,DWORD [4+esi] | 
 | 	mov	edx,DWORD [4+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [4+ebx],ecx | 
 | 	; Round 2 | 
 | 	mov	ecx,DWORD [8+esi] | 
 | 	mov	edx,DWORD [8+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [8+ebx],ecx | 
 | 	; Round 3 | 
 | 	mov	ecx,DWORD [12+esi] | 
 | 	mov	edx,DWORD [12+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [12+ebx],ecx | 
 | 	; Round 4 | 
 | 	mov	ecx,DWORD [16+esi] | 
 | 	mov	edx,DWORD [16+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [16+ebx],ecx | 
 | 	; Round 5 | 
 | 	mov	ecx,DWORD [20+esi] | 
 | 	mov	edx,DWORD [20+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [20+ebx],ecx | 
 | 	; Round 6 | 
 | 	mov	ecx,DWORD [24+esi] | 
 | 	mov	edx,DWORD [24+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [24+ebx],ecx | 
 | 	; Round 7 | 
 | 	mov	ecx,DWORD [28+esi] | 
 | 	mov	edx,DWORD [28+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [28+ebx],ecx | 
 | 	;  | 
 | 	add	esi,32 | 
 | 	add	edi,32 | 
 | 	add	ebx,32 | 
 | 	sub	ebp,8 | 
 | 	jnz	NEAR L$018aw_loop | 
 | L$017aw_finish: | 
 | 	mov	ebp,DWORD [32+esp] | 
 | 	and	ebp,7 | 
 | 	jz	NEAR L$019aw_end | 
 | 	; Tail Round 0 | 
 | 	mov	ecx,DWORD [esi] | 
 | 	mov	edx,DWORD [edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [ebx],ecx | 
 | 	add	esi,4 | 
 | 	add	edi,4 | 
 | 	add	ebx,4 | 
 | 	dec	ebp | 
 | 	jz	NEAR L$019aw_end | 
 | 	; Tail Round 1 | 
 | 	mov	ecx,DWORD [esi] | 
 | 	mov	edx,DWORD [edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [ebx],ecx | 
 | 	add	esi,4 | 
 | 	add	edi,4 | 
 | 	add	ebx,4 | 
 | 	dec	ebp | 
 | 	jz	NEAR L$019aw_end | 
 | 	; Tail Round 2 | 
 | 	mov	ecx,DWORD [esi] | 
 | 	mov	edx,DWORD [edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [ebx],ecx | 
 | 	add	esi,4 | 
 | 	add	edi,4 | 
 | 	add	ebx,4 | 
 | 	dec	ebp | 
 | 	jz	NEAR L$019aw_end | 
 | 	; Tail Round 3 | 
 | 	mov	ecx,DWORD [esi] | 
 | 	mov	edx,DWORD [edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [ebx],ecx | 
 | 	add	esi,4 | 
 | 	add	edi,4 | 
 | 	add	ebx,4 | 
 | 	dec	ebp | 
 | 	jz	NEAR L$019aw_end | 
 | 	; Tail Round 4 | 
 | 	mov	ecx,DWORD [esi] | 
 | 	mov	edx,DWORD [edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [ebx],ecx | 
 | 	add	esi,4 | 
 | 	add	edi,4 | 
 | 	add	ebx,4 | 
 | 	dec	ebp | 
 | 	jz	NEAR L$019aw_end | 
 | 	; Tail Round 5 | 
 | 	mov	ecx,DWORD [esi] | 
 | 	mov	edx,DWORD [edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [ebx],ecx | 
 | 	add	esi,4 | 
 | 	add	edi,4 | 
 | 	add	ebx,4 | 
 | 	dec	ebp | 
 | 	jz	NEAR L$019aw_end | 
 | 	; Tail Round 6 | 
 | 	mov	ecx,DWORD [esi] | 
 | 	mov	edx,DWORD [edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [ebx],ecx | 
 | 	add	esi,4 | 
 | 	add	edi,4 | 
 | 	add	ebx,4 | 
 | L$019aw_end: | 
 | 	cmp	DWORD [36+esp],0 | 
 | 	je	NEAR L$020pw_end | 
 | 	mov	ebp,DWORD [36+esp] | 
 | 	cmp	ebp,0 | 
 | 	je	NEAR L$020pw_end | 
 | 	jge	NEAR L$021pw_pos | 
 | 	; pw_neg | 
 | 	mov	edx,0 | 
 | 	sub	edx,ebp | 
 | 	mov	ebp,edx | 
 | 	and	ebp,4294967288 | 
 | 	jz	NEAR L$022pw_neg_finish | 
 | L$023pw_neg_loop: | 
 | 	; dl<0 Round 0 | 
 | 	mov	ecx,0 | 
 | 	mov	edx,DWORD [edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [ebx],ecx | 
 | 	; dl<0 Round 1 | 
 | 	mov	ecx,0 | 
 | 	mov	edx,DWORD [4+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [4+ebx],ecx | 
 | 	; dl<0 Round 2 | 
 | 	mov	ecx,0 | 
 | 	mov	edx,DWORD [8+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [8+ebx],ecx | 
 | 	; dl<0 Round 3 | 
 | 	mov	ecx,0 | 
 | 	mov	edx,DWORD [12+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [12+ebx],ecx | 
 | 	; dl<0 Round 4 | 
 | 	mov	ecx,0 | 
 | 	mov	edx,DWORD [16+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [16+ebx],ecx | 
 | 	; dl<0 Round 5 | 
 | 	mov	ecx,0 | 
 | 	mov	edx,DWORD [20+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [20+ebx],ecx | 
 | 	; dl<0 Round 6 | 
 | 	mov	ecx,0 | 
 | 	mov	edx,DWORD [24+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [24+ebx],ecx | 
 | 	; dl<0 Round 7 | 
 | 	mov	ecx,0 | 
 | 	mov	edx,DWORD [28+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [28+ebx],ecx | 
 | 	;  | 
 | 	add	edi,32 | 
 | 	add	ebx,32 | 
 | 	sub	ebp,8 | 
 | 	jnz	NEAR L$023pw_neg_loop | 
 | L$022pw_neg_finish: | 
 | 	mov	edx,DWORD [36+esp] | 
 | 	mov	ebp,0 | 
 | 	sub	ebp,edx | 
 | 	and	ebp,7 | 
 | 	jz	NEAR L$020pw_end | 
 | 	; dl<0 Tail Round 0 | 
 | 	mov	ecx,0 | 
 | 	mov	edx,DWORD [edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	dec	ebp | 
 | 	mov	DWORD [ebx],ecx | 
 | 	jz	NEAR L$020pw_end | 
 | 	; dl<0 Tail Round 1 | 
 | 	mov	ecx,0 | 
 | 	mov	edx,DWORD [4+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	dec	ebp | 
 | 	mov	DWORD [4+ebx],ecx | 
 | 	jz	NEAR L$020pw_end | 
 | 	; dl<0 Tail Round 2 | 
 | 	mov	ecx,0 | 
 | 	mov	edx,DWORD [8+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	dec	ebp | 
 | 	mov	DWORD [8+ebx],ecx | 
 | 	jz	NEAR L$020pw_end | 
 | 	; dl<0 Tail Round 3 | 
 | 	mov	ecx,0 | 
 | 	mov	edx,DWORD [12+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	dec	ebp | 
 | 	mov	DWORD [12+ebx],ecx | 
 | 	jz	NEAR L$020pw_end | 
 | 	; dl<0 Tail Round 4 | 
 | 	mov	ecx,0 | 
 | 	mov	edx,DWORD [16+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	dec	ebp | 
 | 	mov	DWORD [16+ebx],ecx | 
 | 	jz	NEAR L$020pw_end | 
 | 	; dl<0 Tail Round 5 | 
 | 	mov	ecx,0 | 
 | 	mov	edx,DWORD [20+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	dec	ebp | 
 | 	mov	DWORD [20+ebx],ecx | 
 | 	jz	NEAR L$020pw_end | 
 | 	; dl<0 Tail Round 6 | 
 | 	mov	ecx,0 | 
 | 	mov	edx,DWORD [24+edi] | 
 | 	sub	ecx,eax | 
 | 	mov	eax,0 | 
 | 	adc	eax,eax | 
 | 	sub	ecx,edx | 
 | 	adc	eax,0 | 
 | 	mov	DWORD [24+ebx],ecx | 
 | 	jmp	NEAR L$020pw_end | 
 | L$021pw_pos: | 
 | 	and	ebp,4294967288 | 
 | 	jz	NEAR L$024pw_pos_finish | 
 | L$025pw_pos_loop: | 
 | 	; dl>0 Round 0 | 
 | 	mov	ecx,DWORD [esi] | 
 | 	sub	ecx,eax | 
 | 	mov	DWORD [ebx],ecx | 
 | 	jnc	NEAR L$026pw_nc0 | 
 | 	; dl>0 Round 1 | 
 | 	mov	ecx,DWORD [4+esi] | 
 | 	sub	ecx,eax | 
 | 	mov	DWORD [4+ebx],ecx | 
 | 	jnc	NEAR L$027pw_nc1 | 
 | 	; dl>0 Round 2 | 
 | 	mov	ecx,DWORD [8+esi] | 
 | 	sub	ecx,eax | 
 | 	mov	DWORD [8+ebx],ecx | 
 | 	jnc	NEAR L$028pw_nc2 | 
 | 	; dl>0 Round 3 | 
 | 	mov	ecx,DWORD [12+esi] | 
 | 	sub	ecx,eax | 
 | 	mov	DWORD [12+ebx],ecx | 
 | 	jnc	NEAR L$029pw_nc3 | 
 | 	; dl>0 Round 4 | 
 | 	mov	ecx,DWORD [16+esi] | 
 | 	sub	ecx,eax | 
 | 	mov	DWORD [16+ebx],ecx | 
 | 	jnc	NEAR L$030pw_nc4 | 
 | 	; dl>0 Round 5 | 
 | 	mov	ecx,DWORD [20+esi] | 
 | 	sub	ecx,eax | 
 | 	mov	DWORD [20+ebx],ecx | 
 | 	jnc	NEAR L$031pw_nc5 | 
 | 	; dl>0 Round 6 | 
 | 	mov	ecx,DWORD [24+esi] | 
 | 	sub	ecx,eax | 
 | 	mov	DWORD [24+ebx],ecx | 
 | 	jnc	NEAR L$032pw_nc6 | 
 | 	; dl>0 Round 7 | 
 | 	mov	ecx,DWORD [28+esi] | 
 | 	sub	ecx,eax | 
 | 	mov	DWORD [28+ebx],ecx | 
 | 	jnc	NEAR L$033pw_nc7 | 
 | 	;  | 
 | 	add	esi,32 | 
 | 	add	ebx,32 | 
 | 	sub	ebp,8 | 
 | 	jnz	NEAR L$025pw_pos_loop | 
 | L$024pw_pos_finish: | 
 | 	mov	ebp,DWORD [36+esp] | 
 | 	and	ebp,7 | 
 | 	jz	NEAR L$020pw_end | 
 | 	; dl>0 Tail Round 0 | 
 | 	mov	ecx,DWORD [esi] | 
 | 	sub	ecx,eax | 
 | 	mov	DWORD [ebx],ecx | 
 | 	jnc	NEAR L$034pw_tail_nc0 | 
 | 	dec	ebp | 
 | 	jz	NEAR L$020pw_end | 
 | 	; dl>0 Tail Round 1 | 
 | 	mov	ecx,DWORD [4+esi] | 
 | 	sub	ecx,eax | 
 | 	mov	DWORD [4+ebx],ecx | 
 | 	jnc	NEAR L$035pw_tail_nc1 | 
 | 	dec	ebp | 
 | 	jz	NEAR L$020pw_end | 
 | 	; dl>0 Tail Round 2 | 
 | 	mov	ecx,DWORD [8+esi] | 
 | 	sub	ecx,eax | 
 | 	mov	DWORD [8+ebx],ecx | 
 | 	jnc	NEAR L$036pw_tail_nc2 | 
 | 	dec	ebp | 
 | 	jz	NEAR L$020pw_end | 
 | 	; dl>0 Tail Round 3 | 
 | 	mov	ecx,DWORD [12+esi] | 
 | 	sub	ecx,eax | 
 | 	mov	DWORD [12+ebx],ecx | 
 | 	jnc	NEAR L$037pw_tail_nc3 | 
 | 	dec	ebp | 
 | 	jz	NEAR L$020pw_end | 
 | 	; dl>0 Tail Round 4 | 
 | 	mov	ecx,DWORD [16+esi] | 
 | 	sub	ecx,eax | 
 | 	mov	DWORD [16+ebx],ecx | 
 | 	jnc	NEAR L$038pw_tail_nc4 | 
 | 	dec	ebp | 
 | 	jz	NEAR L$020pw_end | 
 | 	; dl>0 Tail Round 5 | 
 | 	mov	ecx,DWORD [20+esi] | 
 | 	sub	ecx,eax | 
 | 	mov	DWORD [20+ebx],ecx | 
 | 	jnc	NEAR L$039pw_tail_nc5 | 
 | 	dec	ebp | 
 | 	jz	NEAR L$020pw_end | 
 | 	; dl>0 Tail Round 6 | 
 | 	mov	ecx,DWORD [24+esi] | 
 | 	sub	ecx,eax | 
 | 	mov	DWORD [24+ebx],ecx | 
 | 	jnc	NEAR L$040pw_tail_nc6 | 
 | 	mov	eax,1 | 
 | 	jmp	NEAR L$020pw_end | 
 | L$041pw_nc_loop: | 
 | 	mov	ecx,DWORD [esi] | 
 | 	mov	DWORD [ebx],ecx | 
 | L$026pw_nc0: | 
 | 	mov	ecx,DWORD [4+esi] | 
 | 	mov	DWORD [4+ebx],ecx | 
 | L$027pw_nc1: | 
 | 	mov	ecx,DWORD [8+esi] | 
 | 	mov	DWORD [8+ebx],ecx | 
 | L$028pw_nc2: | 
 | 	mov	ecx,DWORD [12+esi] | 
 | 	mov	DWORD [12+ebx],ecx | 
 | L$029pw_nc3: | 
 | 	mov	ecx,DWORD [16+esi] | 
 | 	mov	DWORD [16+ebx],ecx | 
 | L$030pw_nc4: | 
 | 	mov	ecx,DWORD [20+esi] | 
 | 	mov	DWORD [20+ebx],ecx | 
 | L$031pw_nc5: | 
 | 	mov	ecx,DWORD [24+esi] | 
 | 	mov	DWORD [24+ebx],ecx | 
 | L$032pw_nc6: | 
 | 	mov	ecx,DWORD [28+esi] | 
 | 	mov	DWORD [28+ebx],ecx | 
 | L$033pw_nc7: | 
 | 	;  | 
 | 	add	esi,32 | 
 | 	add	ebx,32 | 
 | 	sub	ebp,8 | 
 | 	jnz	NEAR L$041pw_nc_loop | 
 | 	mov	ebp,DWORD [36+esp] | 
 | 	and	ebp,7 | 
 | 	jz	NEAR L$042pw_nc_end | 
 | 	mov	ecx,DWORD [esi] | 
 | 	mov	DWORD [ebx],ecx | 
 | L$034pw_tail_nc0: | 
 | 	dec	ebp | 
 | 	jz	NEAR L$042pw_nc_end | 
 | 	mov	ecx,DWORD [4+esi] | 
 | 	mov	DWORD [4+ebx],ecx | 
 | L$035pw_tail_nc1: | 
 | 	dec	ebp | 
 | 	jz	NEAR L$042pw_nc_end | 
 | 	mov	ecx,DWORD [8+esi] | 
 | 	mov	DWORD [8+ebx],ecx | 
 | L$036pw_tail_nc2: | 
 | 	dec	ebp | 
 | 	jz	NEAR L$042pw_nc_end | 
 | 	mov	ecx,DWORD [12+esi] | 
 | 	mov	DWORD [12+ebx],ecx | 
 | L$037pw_tail_nc3: | 
 | 	dec	ebp | 
 | 	jz	NEAR L$042pw_nc_end | 
 | 	mov	ecx,DWORD [16+esi] | 
 | 	mov	DWORD [16+ebx],ecx | 
 | L$038pw_tail_nc4: | 
 | 	dec	ebp | 
 | 	jz	NEAR L$042pw_nc_end | 
 | 	mov	ecx,DWORD [20+esi] | 
 | 	mov	DWORD [20+ebx],ecx | 
 | L$039pw_tail_nc5: | 
 | 	dec	ebp | 
 | 	jz	NEAR L$042pw_nc_end | 
 | 	mov	ecx,DWORD [24+esi] | 
 | 	mov	DWORD [24+ebx],ecx | 
 | L$040pw_tail_nc6: | 
 | L$042pw_nc_end: | 
 | 	mov	eax,0 | 
 | L$020pw_end: | 
 | 	pop	edi | 
 | 	pop	esi | 
 | 	pop	ebx | 
 | 	pop	ebp | 
 | 	ret |