407873:	8b 75 0c             	mov    0xc(%ebp),%esi
407876:	83 c4 10             	add    $0x10,%esp
407879:	83 c8 ff             	or     $0xffffffff,%eax
40787c:	85 f6                	test   %esi,%esi
40787e:	74 23                	je     0x4078a3
407880:	8b 55 08             	mov    0x8(%ebp),%edx
407883:	57                   	push   %edi
407884:	0f b6 3a             	movzbl (%edx),%edi
407887:	8b c8                	mov    %eax,%ecx
407889:	c1 e9 18             	shr    $0x18,%ecx
40788c:	33 cf                	xor    %edi,%ecx
40788e:	81 e1 ff 00 00 00    	and    $0xff,%ecx
407894:	c1 e0 08             	shl    $0x8,%eax
407897:	33 84 8d 00 fc ff ff 	xor    -0x400(%ebp,%ecx,4),%eax
40789e:	42                   	inc    %edx
40789f:	4e                   	dec    %esi
4078a0:	75 e2                	jne    0x407884
4078a2:	5f                   	pop    %edi
4078a3:	f7 d0                	not    %eax
4078a5:	5e                   	pop    %esi
4078a6:	8b e5                	mov    %ebp,%esp
4078a8:	5d                   	pop    %ebp
4078a9:	c3                   	ret
4078aa:	5a                   	pop    %edx
4078ab:	6b f8 c5             	imul   $0xffffffc5,%eax,%edi
4078ae:	f5                   	cmc
4078af:	ca 55 8b             	lret   $0x8b55
4078b2:	ec                   	in     (%dx),%al
4078b3:	8b 45 08             	mov    0x8(%ebp),%eax
4078b6:	33 c9                	xor    %ecx,%ecx
4078b8:	89 48 14             	mov    %ecx,0x14(%eax)
4078bb:	89 48 18             	mov    %ecx,0x18(%eax)
4078be:	89 48 5c             	mov    %ecx,0x5c(%eax)
4078c1:	c7 00 01 23 45 67    	movl   $0x67452301,(%eax)
4078c7:	c7 40 04 89 ab cd ef 	movl   $0xefcdab89,0x4(%eax)
4078ce:	c7 40 08 fe dc ba 98 	movl   $0x98badcfe,0x8(%eax)
4078d5:	c7 40 0c 76 54 32 10 	movl   $0x10325476,0xc(%eax)
4078dc:	c7 40 10 f0 e1 d2 c3 	movl   $0xc3d2e1f0,0x10(%eax)
4078e3:	89 48 60             	mov    %ecx,0x60(%eax)
4078e6:	89 48 64             	mov    %ecx,0x64(%eax)
4078e9:	5d                   	pop    %ebp
4078ea:	c3                   	ret
4078eb:	89 46 14             	mov    %eax,0x14(%esi)
4078ee:	cd a9                	int    $0xa9
4078f0:	55                   	push   %ebp
4078f1:	8b ec                	mov    %esp,%ebp
4078f3:	81 ec 4c 01 00 00    	sub    $0x14c,%esp
4078f9:	53                   	push   %ebx
4078fa:	56                   	push   %esi
4078fb:	8b 75 08             	mov    0x8(%ebp),%esi
4078fe:	57                   	push   %edi
4078ff:	33 c9                	xor    %ecx,%ecx
407901:	8d 46 1d             	lea    0x1d(%esi),%eax
407904:	0f b6 50 ff          	movzbl -0x1(%eax),%edx
407908:	0f b6 38             	movzbl (%eax),%edi
40790b:	c1 e2 08             	shl    $0x8,%edx
40790e:	0b d7                	or     %edi,%edx
407910:	0f b6 78 01          	movzbl 0x1(%eax),%edi
407914:	c1 e2 08             	shl    $0x8,%edx
407917:	0b d7                	or     %edi,%edx
407919:	0f b6 78 02          	movzbl 0x2(%eax),%edi
40791d:	c1 e2 08             	shl    $0x8,%edx
407920:	0b d7                	or     %edi,%edx
407922:	0f b6 78 04          	movzbl 0x4(%eax),%edi
407926:	89 94 8d b4 fe ff ff 	mov    %edx,-0x14c(%ebp,%ecx,4)
40792d:	0f b6 50 03          	movzbl 0x3(%eax),%edx
407931:	c1 e2 08             	shl    $0x8,%edx
407934:	0b d7                	or     %edi,%edx
407936:	0f b6 78 05          	movzbl 0x5(%eax),%edi
40793a:	c1 e2 08             	shl    $0x8,%edx
40793d:	0b d7                	or     %edi,%edx
40793f:	0f b6 78 06          	movzbl 0x6(%eax),%edi
407943:	c1 e2 08             	shl    $0x8,%edx
407946:	0b d7                	or     %edi,%edx
407948:	0f b6 78 08          	movzbl 0x8(%eax),%edi
40794c:	89 94 8d b8 fe ff ff 	mov    %edx,-0x148(%ebp,%ecx,4)
407953:	0f b6 50 07          	movzbl 0x7(%eax),%edx
407957:	c1 e2 08             	shl    $0x8,%edx
40795a:	0b d7                	or     %edi,%edx
40795c:	0f b6 78 09          	movzbl 0x9(%eax),%edi
407960:	c1 e2 08             	shl    $0x8,%edx
407963:	0b d7                	or     %edi,%edx
407965:	0f b6 78 0a          	movzbl 0xa(%eax),%edi
407969:	c1 e2 08             	shl    $0x8,%edx
40796c:	0b d7                	or     %edi,%edx
40796e:	0f b6 78 0c          	movzbl 0xc(%eax),%edi
407972:	89 94 8d bc fe ff ff 	mov    %edx,-0x144(%ebp,%ecx,4)
407979:	0f b6 50 0b          	movzbl 0xb(%eax),%edx
40797d:	c1 e2 08             	shl    $0x8,%edx
407980:	0b d7                	or     %edi,%edx
407982:	0f b6 78 0d          	movzbl 0xd(%eax),%edi
407986:	c1 e2 08             	shl    $0x8,%edx
407989:	0b d7                	or     %edi,%edx
40798b:	0f b6 78 0e          	movzbl 0xe(%eax),%edi
40798f:	c1 e2 08             	shl    $0x8,%edx
407992:	0b d7                	or     %edi,%edx
407994:	89 94 8d c0 fe ff ff 	mov    %edx,-0x140(%ebp,%ecx,4)
40799b:	83 c1 04             	add    $0x4,%ecx
40799e:	83 c0 10             	add    $0x10,%eax
4079a1:	83 f9 10             	cmp    $0x10,%ecx
4079a4:	0f 8c 5a ff ff ff    	jl     0x407904
4079aa:	8d 85 d4 fe ff ff    	lea    -0x12c(%ebp),%eax
4079b0:	c7 45 fc 10 00 00 00 	movl   $0x10,-0x4(%ebp)
4079b7:	8b 48 e0             	mov    -0x20(%eax),%ecx
4079ba:	33 48 14             	xor    0x14(%eax),%ecx
4079bd:	8b 58 e4             	mov    -0x1c(%eax),%ebx
4079c0:	33 58 18             	xor    0x18(%eax),%ebx
4079c3:	33 08                	xor    (%eax),%ecx
4079c5:	33 58 04             	xor    0x4(%eax),%ebx
4079c8:	8b 50 e8             	mov    -0x18(%eax),%edx
4079cb:	8b 78 ec             	mov    -0x14(%eax),%edi
4079ce:	33 ca                	xor    %edx,%ecx
4079d0:	33 df                	xor    %edi,%ebx
4079d2:	d1 c1                	rol    $1,%ecx
4079d4:	d1 c3                	rol    $1,%ebx
4079d6:	89 58 24             	mov    %ebx,0x24(%eax)
4079d9:	8b 58 1c             	mov    0x1c(%eax),%ebx
4079dc:	33 58 f0             	xor    -0x10(%eax),%ebx
4079df:	89 48 20             	mov    %ecx,0x20(%eax)
4079e2:	33 58 08             	xor    0x8(%eax),%ebx
4079e5:	83 c0 10             	add    $0x10,%eax
4079e8:	33 da                	xor    %edx,%ebx
4079ea:	8b 50 e4             	mov    -0x1c(%eax),%edx
4079ed:	33 50 fc             	xor    -0x4(%eax),%edx
4079f0:	d1 c3                	rol    $1,%ebx
4079f2:	33 d1                	xor    %ecx,%edx
4079f4:	33 d7                	xor    %edi,%edx
4079f6:	d1 c2                	rol    $1,%edx
4079f8:	ff 4d fc             	decl   -0x4(%ebp)
4079fb:	89 58 18             	mov    %ebx,0x18(%eax)
4079fe:	89 50 1c             	mov    %edx,0x1c(%eax)
407a01:	75 b4                	jne    0x4079b7
407a03:	8b 1e                	mov    (%esi),%ebx
407a05:	8b 46 04             	mov    0x4(%esi),%eax
407a08:	8b 4e 08             	mov    0x8(%esi),%ecx
407a0b:	8b 56 0c             	mov    0xc(%esi),%edx
407a0e:	8b 76 10             	mov    0x10(%esi),%esi
407a11:	89 5d f8             	mov    %ebx,-0x8(%ebp)
407a14:	89 75 f4             	mov    %esi,-0xc(%ebp)
407a17:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
407a1e:	8b ff                	mov    %edi,%edi
407a20:	8b f0                	mov    %eax,%esi
407a22:	f7 d6                	not    %esi
407a24:	23 f2                	and    %edx,%esi
407a26:	c1 c3 05             	rol    $0x5,%ebx
407a29:	8b f9                	mov    %ecx,%edi
407a2b:	23 f8                	and    %eax,%edi
407a2d:	0b f7                	or     %edi,%esi
407a2f:	8b 7d fc             	mov    -0x4(%ebp),%edi
407a32:	03 de                	add    %esi,%ebx
407a34:	03 9c bd b4 fe ff ff 	add    -0x14c(%ebp,%edi,4),%ebx
407a3b:	8b 75 f4             	mov    -0xc(%ebp),%esi
407a3e:	8d b4 33 99 79 82 5a 	lea    0x5a827999(%ebx,%esi,1),%esi
407a45:	8b 5d f8             	mov    -0x8(%ebp),%ebx
407a48:	c1 c8 02             	ror    $0x2,%eax
407a4b:	89 55 f4             	mov    %edx,-0xc(%ebp)
407a4e:	8b d3                	mov    %ebx,%edx
407a50:	f7 d2                	not    %edx
407a52:	23 d1                	and    %ecx,%edx
407a54:	89 75 f8             	mov    %esi,-0x8(%ebp)
407a57:	c1 c6 05             	rol    $0x5,%esi
407a5a:	89 4d fc             	mov    %ecx,-0x4(%ebp)
407a5d:	8b c8                	mov    %eax,%ecx
407a5f:	23 cb                	and    %ebx,%ecx
407a61:	0b d1                	or     %ecx,%edx
407a63:	8b 4d fc             	mov    -0x4(%ebp),%ecx
407a66:	03 f2                	add    %edx,%esi
407a68:	03 b4 bd b8 fe ff ff 	add    -0x148(%ebp,%edi,4),%esi
407a6f:	8b 55 f4             	mov    -0xc(%ebp),%edx
407a72:	8d 94 16 99 79 82 5a 	lea    0x5a827999(%esi,%edx,1),%edx
407a79:	8b f0                	mov    %eax,%esi
407a7b:	c1 cb 02             	ror    $0x2,%ebx
407a7e:	89 4d f4             	mov    %ecx,-0xc(%ebp)
407a81:	8b 4d f8             	mov    -0x8(%ebp),%ecx
407a84:	8b c1                	mov    %ecx,%eax
407a86:	f7 d0                	not    %eax
407a88:	23 c6                	and    %esi,%eax
407a8a:	89 5d fc             	mov    %ebx,-0x4(%ebp)
407a8d:	23 d9                	and    %ecx,%ebx
407a8f:	0b c3                	or     %ebx,%eax
407a91:	8b 5d fc             	mov    -0x4(%ebp),%ebx
407a94:	89 55 f8             	mov    %edx,-0x8(%ebp)
407a97:	c1 c2 05             	rol    $0x5,%edx
407a9a:	03 d0                	add    %eax,%edx
407a9c:	03 94 bd bc fe ff ff 	add    -0x144(%ebp,%edi,4),%edx
407aa3:	8b 45 f4             	mov    -0xc(%ebp),%eax
407aa6:	8d 84 02 99 79 82 5a 	lea    0x5a827999(%edx,%eax,1),%eax
407aad:	8b 55 f8             	mov    -0x8(%ebp),%edx
407ab0:	89 75 f4             	mov    %esi,-0xc(%ebp)
407ab3:	c1 c9 02             	ror    $0x2,%ecx
407ab6:	8b f2                	mov    %edx,%esi
407ab8:	f7 d6                	not    %esi
407aba:	23 f3                	and    %ebx,%esi
407abc:	89 4d fc             	mov    %ecx,-0x4(%ebp)
407abf:	23 ca                	and    %edx,%ecx
407ac1:	0b f1                	or     %ecx,%esi
407ac3:	8b 4d f4             	mov    -0xc(%ebp),%ecx
407ac6:	89 45 f8             	mov    %eax,-0x8(%ebp)
407ac9:	c1 c0 05             	rol    $0x5,%eax
407acc:	03 c6                	add    %esi,%eax
407ace:	03 84 bd c0 fe ff ff 	add    -0x140(%ebp,%edi,4),%eax
407ad5:	89 5d f4             	mov    %ebx,-0xc(%ebp)
407ad8:	8d b4 08 99 79 82 5a 	lea    0x5a827999(%eax,%ecx,1),%esi
407adf:	8b 4d f8             	mov    -0x8(%ebp),%ecx
407ae2:	8b 45 fc             	mov    -0x4(%ebp),%eax
407ae5:	c1 ca 02             	ror    $0x2,%edx
407ae8:	8b d9                	mov    %ecx,%ebx
407aea:	89 55 fc             	mov    %edx,-0x4(%ebp)
407aed:	89 75 f8             	mov    %esi,-0x8(%ebp)
407af0:	f7 d3                	not    %ebx
407af2:	23 d1                	and    %ecx,%edx
407af4:	23 d8                	and    %eax,%ebx
407af6:	c1 c6 05             	rol    $0x5,%esi
407af9:	0b da                	or     %edx,%ebx
407afb:	8b 55 f4             	mov    -0xc(%ebp),%edx
407afe:	03 f3                	add    %ebx,%esi
407b00:	03 b4 bd c4 fe ff ff 	add    -0x13c(%ebp,%edi,4),%esi
407b07:	89 45 f4             	mov    %eax,-0xc(%ebp)
407b0a:	8b 45 f8             	mov    -0x8(%ebp),%eax
407b0d:	8d b4 16 99 79 82 5a 	lea    0x5a827999(%esi,%edx,1),%esi
407b14:	8b 55 fc             	mov    -0x4(%ebp),%edx
407b17:	c1 c9 02             	ror    $0x2,%ecx
407b1a:	83 c7 05             	add    $0x5,%edi
407b1d:	8b de                	mov    %esi,%ebx
407b1f:	89 5d f8             	mov    %ebx,-0x8(%ebp)
407b22:	89 7d fc             	mov    %edi,-0x4(%ebp)
407b25:	83 ff 14             	cmp    $0x14,%edi
407b28:	0f 8c f2 fe ff ff    	jl     0x407a20
407b2e:	bf 14 00 00 00       	mov    $0x14,%edi
407b33:	c1 c6 05             	rol    $0x5,%esi
407b36:	8b da                	mov    %edx,%ebx
407b38:	33 d9                	xor    %ecx,%ebx
407b3a:	33 d8                	xor    %eax,%ebx
407b3c:	03 f3                	add    %ebx,%esi
407b3e:	03 b4 bd b4 fe ff ff 	add    -0x14c(%ebp,%edi,4),%esi
407b45:	8b 5d f4             	mov    -0xc(%ebp),%ebx
407b48:	c1 c8 02             	ror    $0x2,%eax
407b4b:	89 55 f4             	mov    %edx,-0xc(%ebp)
407b4e:	8d b4 1e a1 eb d9 6e 	lea    0x6ed9eba1(%esi,%ebx,1),%esi
407b55:	8b 5d f8             	mov    -0x8(%ebp),%ebx
407b58:	89 75 f8             	mov    %esi,-0x8(%ebp)
407b5b:	c1 c6 05             	rol    $0x5,%esi
407b5e:	8b d1                	mov    %ecx,%edx
407b60:	33 d0                	xor    %eax,%edx
407b62:	33 d3                	xor    %ebx,%edx
407b64:	03 f2                	add    %edx,%esi
407b66:	03 b4 bd b8 fe ff ff 	add    -0x148(%ebp,%edi,4),%esi
407b6d:	8b 55 f4             	mov    -0xc(%ebp),%edx
407b70:	8d 94 16 a1 eb d9 6e 	lea    0x6ed9eba1(%esi,%edx,1),%edx
407b77:	c1 cb 02             	ror    $0x2,%ebx
407b7a:	8b f0                	mov    %eax,%esi
407b7c:	33 c3                	xor    %ebx,%eax
407b7e:	89 4d f4             	mov    %ecx,-0xc(%ebp)
407b81:	8b 4d f8             	mov    -0x8(%ebp),%ecx
407b84:	33 c1                	xor    %ecx,%eax
407b86:	89 55 f8             	mov    %edx,-0x8(%ebp)
407b89:	c1 c2 05             	rol    $0x5,%edx
407b8c:	03 d0                	add    %eax,%edx
407b8e:	03 94 bd bc fe ff ff 	add    -0x144(%ebp,%edi,4),%edx
407b95:	8b 45 f4             	mov    -0xc(%ebp),%eax
407b98:	c1 c9 02             	ror    $0x2,%ecx
407b9b:	8d 84 02 a1 eb d9 6e 	lea    0x6ed9eba1(%edx,%eax,1),%eax
407ba2:	8b 55 f8             	mov    -0x8(%ebp),%edx
407ba5:	89 5d fc             	mov    %ebx,-0x4(%ebp)
407ba8:	89 4d fc             	mov    %ecx,-0x4(%ebp)
407bab:	89 45 f8             	mov    %eax,-0x8(%ebp)
407bae:	c1 c0 05             	rol    $0x5,%eax
407bb1:	8b cb                	mov    %ebx,%ecx
407bb3:	33 4d fc             	xor    -0x4(%ebp),%ecx
407bb6:	83 c7 05             	add    $0x5,%edi
407bb9:	33 ca                	xor    %edx,%ecx
407bbb:	03 c1                	add    %ecx,%eax
407bbd:	03 84 bd ac fe ff ff 	add    -0x154(%ebp,%edi,4),%eax
407bc4:	8b 4d f8             	mov    -0x8(%ebp),%ecx
407bc7:	c1 ca 02             	ror    $0x2,%edx
407bca:	8d b4 30 a1 eb d9 6e 	lea    0x6ed9eba1(%eax,%esi,1),%esi
407bd1:	8b 45 fc             	mov    -0x4(%ebp),%eax
407bd4:	89 55 fc             	mov    %edx,-0x4(%ebp)
407bd7:	89 75 f8             	mov    %esi,-0x8(%ebp)
407bda:	8b d0                	mov    %eax,%edx
407bdc:	33 55 fc             	xor    -0x4(%ebp),%edx
407bdf:	c1 c6 05             	rol    $0x5,%esi
407be2:	33 d1                	xor    %ecx,%edx
407be4:	03 f2                	add    %edx,%esi
407be6:	03 b4 bd b0 fe ff ff 	add    -0x150(%ebp,%edi,4),%esi
407bed:	8b 55 fc             	mov    -0x4(%ebp),%edx
407bf0:	8d b4 1e a1 eb d9 6e 	lea    0x6ed9eba1(%esi,%ebx,1),%esi
407bf7:	89 45 f4             	mov    %eax,-0xc(%ebp)
407bfa:	8b 45 f8             	mov    -0x8(%ebp),%eax
407bfd:	c1 c9 02             	ror    $0x2,%ecx
407c00:	89 75 f8             	mov    %esi,-0x8(%ebp)
407c03:	83 ff 28             	cmp    $0x28,%edi
407c06:	0f 8c 27 ff ff ff    	jl     0x407b33
407c0c:	c7 45 fc 28 00 00 00 	movl   $0x28,-0x4(%ebp)
407c13:	c1 c6 05             	rol    $0x5,%esi
407c16:	03 75 f4             	add    -0xc(%ebp),%esi
407c19:	89 55 f4             	mov    %edx,-0xc(%ebp)
407c1c:	8b f9                	mov    %ecx,%edi
407c1e:	0b f8                	or     %eax,%edi
407c20:	23 fa                	and    %edx,%edi
407c22:	8b d9                	mov    %ecx,%ebx
407c24:	23 d8                	and    %eax,%ebx
407c26:	0b fb                	or     %ebx,%edi
407c28:	8b 5d fc             	mov    -0x4(%ebp),%ebx
407c2b:	03 bc 9d b4 fe ff ff 	add    -0x14c(%ebp,%ebx,4),%edi
407c32:	c1 c8 02             	ror    $0x2,%eax
407c35:	8d b4 37 dc bc 1b 8f 	lea    -0x70e44324(%edi,%esi,1),%esi
407c3c:	8b 7d f8             	mov    -0x8(%ebp),%edi
407c3f:	89 75 f8             	mov    %esi,-0x8(%ebp)
407c42:	c1 c6 05             	rol    $0x5,%esi
407c45:	03 75 f4             	add    -0xc(%ebp),%esi
407c48:	8b d0                	mov    %eax,%edx
407c4a:	0b d7                	or     %edi,%edx
407c4c:	23 d1                	and    %ecx,%edx
407c4e:	8b d8                	mov    %eax,%ebx
407c50:	23 df                	and    %edi,%ebx
407c52:	0b d3                	or     %ebx,%edx
407c54:	8b 5d fc             	mov    -0x4(%ebp),%ebx
407c57:	03 94 9d b8 fe ff ff 	add    -0x148(%ebp,%ebx,4),%edx
407c5e:	c1 cf 02             	ror    $0x2,%edi
407c61:	8d 94 32 dc bc 1b 8f 	lea    -0x70e44324(%edx,%esi,1),%edx
407c68:	8b f7                	mov    %edi,%esi
407c6a:	89 4d f4             	mov    %ecx,-0xc(%ebp)
407c6d:	8b 4d f8             	mov    -0x8(%ebp),%ecx
407c70:	0b f1                	or     %ecx,%esi
407c72:	23 f0                	and    %eax,%esi
407c74:	89 55 f8             	mov    %edx,-0x8(%ebp)
407c77:	c1 c2 05             	rol    $0x5,%edx
407c7a:	03 55 f4             	add    -0xc(%ebp),%edx
407c7d:	89 45 fc             	mov    %eax,-0x4(%ebp)
407c80:	8b c7                	mov    %edi,%eax
407c82:	23 c1                	and    %ecx,%eax
407c84:	0b f0                	or     %eax,%esi
407c86:	03 b4 9d bc fe ff ff 	add    -0x144(%ebp,%ebx,4),%esi
407c8d:	8b 45 fc             	mov    -0x4(%ebp),%eax
407c90:	8d 94 16 dc bc 1b 8f 	lea    -0x70e44324(%esi,%edx,1),%edx
407c97:	c1 c9 02             	ror    $0x2,%ecx
407c9a:	89 45 f4             	mov    %eax,-0xc(%ebp)
407c9d:	8b 45 f8             	mov    -0x8(%ebp),%eax
407ca0:	89 7d fc             	mov    %edi,-0x4(%ebp)
407ca3:	8b f1                	mov    %ecx,%esi
407ca5:	0b f0                	or     %eax,%esi
407ca7:	23 f7                	and    %edi,%esi
407ca9:	89 55 f8             	mov    %edx,-0x8(%ebp)
407cac:	c1 c2 05             	rol    $0x5,%edx
407caf:	03 55 f4             	add    -0xc(%ebp),%edx
407cb2:	8b f9                	mov    %ecx,%edi
407cb4:	23 f8                	and    %eax,%edi
407cb6:	0b f7                	or     %edi,%esi
407cb8:	03 b4 9d c0 fe ff ff 	add    -0x140(%ebp,%ebx,4),%esi