408b8f:	a8 01                	test   $0x1,%al
408b91:	0f 85 1c 02 00 00    	jne    0x408db3
408b97:	83 7d 08 ff          	cmpl   $0xffffffff,0x8(%ebp)
408b9b:	75 05                	jne    0x408ba2
408b9d:	39 4d 0c             	cmp    %ecx,0xc(%ebp)
408ba0:	74 0f                	je     0x408bb1
408ba2:	8b 45 08             	mov    0x8(%ebp),%eax
408ba5:	23 45 0c             	and    0xc(%ebp),%eax
408ba8:	83 f8 ff             	cmp    $0xffffffff,%eax
408bab:	0f 85 02 02 00 00    	jne    0x408db3
408bb1:	8b 7e 04             	mov    0x4(%esi),%edi
408bb4:	8b f2                	mov    %edx,%esi
408bb6:	d1 ee                	shr    $1,%esi
408bb8:	6a 2d                	push   $0x2d
408bba:	5a                   	pop    %edx
408bbb:	74 18                	je     0x408bd5
408bbd:	0f b7 07             	movzwl (%edi),%eax
408bc0:	4e                   	dec    %esi
408bc1:	83 c7 02             	add    $0x2,%edi
408bc4:	89 45 e0             	mov    %eax,-0x20(%ebp)
408bc7:	83 f8 20             	cmp    $0x20,%eax
408bca:	77 12                	ja     0x408bde
408bcc:	85 f6                	test   %esi,%esi
408bce:	75 ed                	jne    0x408bbd
408bd0:	89 4d e0             	mov    %ecx,-0x20(%ebp)
408bd3:	eb 26                	jmp    0x408bfb
408bd5:	8b 45 dc             	mov    -0x24(%ebp),%eax
408bd8:	83 ce ff             	or     $0xffffffff,%esi
408bdb:	89 45 e0             	mov    %eax,-0x20(%ebp)
408bde:	0f b7 c8             	movzwl %ax,%ecx
408be1:	66 3b c2             	cmp    %dx,%ax
408be4:	74 06                	je     0x408bec
408be6:	66 83 f8 2b          	cmp    $0x2b,%ax
408bea:	75 0f                	jne    0x408bfb
408bec:	85 f6                	test   %esi,%esi
408bee:	74 09                	je     0x408bf9
408bf0:	0f b7 0f             	movzwl (%edi),%ecx
408bf3:	4e                   	dec    %esi
408bf4:	83 c7 02             	add    $0x2,%edi
408bf7:	eb 02                	jmp    0x408bfb
408bf9:	33 c9                	xor    %ecx,%ecx
408bfb:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
408bff:	8b d7                	mov    %edi,%edx
408c01:	c7 45 f8 0a 00 00 00 	movl   $0xa,-0x8(%ebp)
408c08:	8b de                	mov    %esi,%ebx
408c0a:	66 83 f9 30          	cmp    $0x30,%cx
408c0e:	75 5b                	jne    0x408c6b
408c10:	85 f6                	test   %esi,%esi
408c12:	74 55                	je     0x408c69
408c14:	0f b7 07             	movzwl (%edi),%eax
408c17:	4e                   	dec    %esi
408c18:	6a 02                	push   $0x2
408c1a:	59                   	pop    %ecx
408c1b:	03 f9                	add    %ecx,%edi
408c1d:	83 f8 78             	cmp    $0x78,%eax
408c20:	75 10                	jne    0x408c32
408c22:	c7 45 f8 10 00 00 00 	movl   $0x10,-0x8(%ebp)
408c29:	c7 45 f4 04 00 00 00 	movl   $0x4,-0xc(%ebp)
408c30:	eb 2a                	jmp    0x408c5c
408c32:	83 f8 6f             	cmp    $0x6f,%eax
408c35:	75 10                	jne    0x408c47
408c37:	c7 45 f8 08 00 00 00 	movl   $0x8,-0x8(%ebp)
408c3e:	c7 45 f4 03 00 00 00 	movl   $0x3,-0xc(%ebp)
408c45:	eb 15                	jmp    0x408c5c
408c47:	83 f8 62             	cmp    $0x62,%eax
408c4a:	75 0c                	jne    0x408c58
408c4c:	89 4d f8             	mov    %ecx,-0x8(%ebp)
408c4f:	c7 45 f4 01 00 00 00 	movl   $0x1,-0xc(%ebp)
408c56:	eb 04                	jmp    0x408c5c
408c58:	8b f3                	mov    %ebx,%esi
408c5a:	8b fa                	mov    %edx,%edi
408c5c:	85 f6                	test   %esi,%esi
408c5e:	74 09                	je     0x408c69
408c60:	0f b7 0f             	movzwl (%edi),%ecx
408c63:	4e                   	dec    %esi
408c64:	83 c7 02             	add    $0x2,%edi
408c67:	eb 02                	jmp    0x408c6b
408c69:	33 c9                	xor    %ecx,%ecx
408c6b:	33 c0                	xor    %eax,%eax
408c6d:	33 db                	xor    %ebx,%ebx
408c6f:	89 45 fc             	mov    %eax,-0x4(%ebp)
408c72:	66 85 c9             	test   %cx,%cx
408c75:	0f 84 23 01 00 00    	je     0x408d9e
408c7b:	8d 41 d0             	lea    -0x30(%ecx),%eax
408c7e:	6a 05                	push   $0x5
408c80:	5a                   	pop    %edx
408c81:	66 83 f8 09          	cmp    $0x9,%ax
408c85:	77 09                	ja     0x408c90
408c87:	0f b7 c1             	movzwl %cx,%eax
408c8a:	99                   	cltd
408c8b:	83 c0 d0             	add    $0xffffffd0,%eax
408c8e:	eb 24                	jmp    0x408cb4
408c90:	8d 41 bf             	lea    -0x41(%ecx),%eax
408c93:	66 3b c2             	cmp    %dx,%ax
408c96:	77 09                	ja     0x408ca1
408c98:	0f b7 c1             	movzwl %cx,%eax
408c9b:	99                   	cltd
408c9c:	83 c0 c9             	add    $0xffffffc9,%eax
408c9f:	eb 13                	jmp    0x408cb4
408ca1:	8d 41 9f             	lea    -0x61(%ecx),%eax
408ca4:	66 3b c2             	cmp    %dx,%ax
408ca7:	0f 87 e8 00 00 00    	ja     0x408d95
408cad:	0f b7 c1             	movzwl %cx,%eax
408cb0:	99                   	cltd
408cb1:	83 c0 a9             	add    $0xffffffa9,%eax
408cb4:	8b ca                	mov    %edx,%ecx
408cb6:	89 45 e4             	mov    %eax,-0x1c(%ebp)
408cb9:	83 d1 ff             	adc    $0xffffffff,%ecx
408cbc:	89 4d e8             	mov    %ecx,-0x18(%ebp)
408cbf:	85 c9                	test   %ecx,%ecx
408cc1:	0f 87 ce 00 00 00    	ja     0x408d95
408cc7:	8b 4d f8             	mov    -0x8(%ebp),%ecx
408cca:	72 08                	jb     0x408cd4
408ccc:	3b c1                	cmp    %ecx,%eax
408cce:	0f 83 c1 00 00 00    	jae    0x408d95
408cd4:	8b 45 f4             	mov    -0xc(%ebp),%eax
408cd7:	83 c8 00             	or     $0x0,%eax
408cda:	75 56                	jne    0x408d32
408cdc:	50                   	push   %eax
408cdd:	51                   	push   %ecx
408cde:	ff 75 0c             	push   0xc(%ebp)
408ce1:	ff 75 08             	push   0x8(%ebp)
408ce4:	e8 97 38 01 00       	call   0x41c580
408ce9:	8b c8                	mov    %eax,%ecx
408ceb:	3b da                	cmp    %edx,%ebx
408ced:	0f 87 81 00 00 00    	ja     0x408d74
408cf3:	8b 45 fc             	mov    -0x4(%ebp),%eax
408cf6:	72 04                	jb     0x408cfc
408cf8:	3b c1                	cmp    %ecx,%eax
408cfa:	77 78                	ja     0x408d74
408cfc:	53                   	push   %ebx
408cfd:	50                   	push   %eax
408cfe:	6a 00                	push   $0x0
408d00:	ff 75 f8             	push   -0x8(%ebp)
408d03:	e8 18 38 01 00       	call   0x41c520
408d08:	8b 4d 08             	mov    0x8(%ebp),%ecx
408d0b:	89 55 dc             	mov    %edx,-0x24(%ebp)
408d0e:	8b 55 e4             	mov    -0x1c(%ebp),%edx
408d11:	2b ca                	sub    %edx,%ecx
408d13:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
408d16:	8b 4d 0c             	mov    0xc(%ebp),%ecx
408d19:	1b 4d e8             	sbb    -0x18(%ebp),%ecx
408d1c:	39 4d dc             	cmp    %ecx,-0x24(%ebp)
408d1f:	77 53                	ja     0x408d74
408d21:	72 05                	jb     0x408d28
408d23:	3b 45 e4             	cmp    -0x1c(%ebp),%eax
408d26:	77 4c                	ja     0x408d74
408d28:	8b 5d dc             	mov    -0x24(%ebp),%ebx
408d2b:	03 c2                	add    %edx,%eax
408d2d:	13 5d e8             	adc    -0x18(%ebp),%ebx
408d30:	eb 2f                	jmp    0x408d61
408d32:	8b 45 08             	mov    0x8(%ebp),%eax
408d35:	8b 55 0c             	mov    0xc(%ebp),%edx
408d38:	8b 4d f4             	mov    -0xc(%ebp),%ecx
408d3b:	e8 b0 38 01 00       	call   0x41c5f0
408d40:	8b c8                	mov    %eax,%ecx
408d42:	3b da                	cmp    %edx,%ebx
408d44:	77 2e                	ja     0x408d74
408d46:	8b 45 fc             	mov    -0x4(%ebp),%eax
408d49:	72 04                	jb     0x408d4f
408d4b:	3b c1                	cmp    %ecx,%eax
408d4d:	77 25                	ja     0x408d74
408d4f:	8b 4d f4             	mov    -0xc(%ebp),%ecx
408d52:	8b d3                	mov    %ebx,%edx
408d54:	e8 07 38 01 00       	call   0x41c560
408d59:	0b 45 e4             	or     -0x1c(%ebp),%eax
408d5c:	8b da                	mov    %edx,%ebx
408d5e:	0b 5d e8             	or     -0x18(%ebp),%ebx
408d61:	89 45 fc             	mov    %eax,-0x4(%ebp)
408d64:	85 f6                	test   %esi,%esi
408d66:	74 36                	je     0x408d9e
408d68:	0f b7 0f             	movzwl (%edi),%ecx
408d6b:	4e                   	dec    %esi
408d6c:	83 c7 02             	add    $0x2,%edi
408d6f:	e9 fe fe ff ff       	jmp    0x408c72
408d74:	c7 45 ec 95 00 00 c0 	movl   $0xc0000095,-0x14(%ebp)
408d7b:	8b 75 f0             	mov    -0x10(%ebp),%esi
408d7e:	8b 4d 10             	mov    0x10(%ebp),%ecx
408d81:	8b 45 fc             	mov    -0x4(%ebp),%eax
408d84:	89 59 04             	mov    %ebx,0x4(%ecx)
408d87:	8b 5d ec             	mov    -0x14(%ebp),%ebx
408d8a:	89 01                	mov    %eax,(%ecx)
408d8c:	85 db                	test   %ebx,%ebx
408d8e:	78 2c                	js     0x408dbc
408d90:	33 c0                	xor    %eax,%eax
408d92:	40                   	inc    %eax
408d93:	eb 7e                	jmp    0x408e13
408d95:	c7 45 ec 61 01 00 c0 	movl   $0xc0000161,-0x14(%ebp)
408d9c:	eb dd                	jmp    0x408d7b
408d9e:	6a 2d                	push   $0x2d
408da0:	59                   	pop    %ecx
408da1:	66 39 4d e0          	cmp    %cx,-0x20(%ebp)
408da5:	75 d4                	jne    0x408d7b
408da7:	f7 d8                	neg    %eax
408da9:	89 45 fc             	mov    %eax,-0x4(%ebp)
408dac:	83 d3 00             	adc    $0x0,%ebx
408daf:	f7 db                	neg    %ebx
408db1:	eb c8                	jmp    0x408d7b
408db3:	c7 45 ec 0d 00 00 c0 	movl   $0xc000000d,-0x14(%ebp)
408dba:	eb c2                	jmp    0x408d7e
408dbc:	ff 76 04             	push   0x4(%esi)
408dbf:	68 4b 01 00 00       	push   $0x14b
408dc4:	e8 8a 58 00 00       	call   0x40e653
408dc9:	59                   	pop    %ecx
408dca:	59                   	pop    %ecx
408dcb:	81 fb 61 01 00 c0    	cmp    $0xc0000161,%ebx
408dd1:	75 07                	jne    0x408dda
408dd3:	b8 7b 01 00 00       	mov    $0x17b,%eax
408dd8:	eb 30                	jmp    0x408e0a
408dda:	81 fb 95 00 00 c0    	cmp    $0xc0000095,%ebx
408de0:	75 23                	jne    0x408e05
408de2:	8b 45 08             	mov    0x8(%ebp),%eax
408de5:	23 45 0c             	and    0xc(%ebp),%eax
408de8:	83 f8 ff             	cmp    $0xffffffff,%eax
408deb:	75 07                	jne    0x408df4
408ded:	b8 7e 01 00 00       	mov    $0x17e,%eax
408df2:	eb 16                	jmp    0x408e0a
408df4:	83 7d 08 ff          	cmpl   $0xffffffff,0x8(%ebp)
408df8:	75 0b                	jne    0x408e05
408dfa:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
408dfe:	b8 7d 01 00 00       	mov    $0x17d,%eax
408e03:	74 05                	je     0x408e0a
408e05:	b8 7c 01 00 00       	mov    $0x17c,%eax
408e0a:	50                   	push   %eax
408e0b:	e8 43 58 00 00       	call   0x40e653
408e10:	59                   	pop    %ecx
408e11:	33 c0                	xor    %eax,%eax
408e13:	5f                   	pop    %edi
408e14:	5e                   	pop    %esi
408e15:	5b                   	pop    %ebx
408e16:	c9                   	leave
408e17:	c2 0c 00             	ret    $0xc
408e1a:	8b ff                	mov    %edi,%edi
408e1c:	55                   	push   %ebp
408e1d:	8b ec                	mov    %esp,%ebp
408e1f:	83 e4 f8             	and    $0xfffffff8,%esp
408e22:	83 ec 24             	sub    $0x24,%esp
408e25:	53                   	push   %ebx
408e26:	56                   	push   %esi
408e27:	57                   	push   %edi
408e28:	8b 7d 08             	mov    0x8(%ebp),%edi
408e2b:	8b c2                	mov    %edx,%eax
408e2d:	89 44 24 14          	mov    %eax,0x14(%esp)
408e31:	89 4c 24 0c          	mov    %ecx,0xc(%esp)
408e35:	ff 07                	incl   (%edi)
408e37:	39 0f                	cmp    %ecx,(%edi)
408e39:	0f 8d 78 01 00 00    	jge    0x408fb7
408e3f:	83 64 24 10 00       	andl   $0x0,0x10(%esp)
408e44:	33 db                	xor    %ebx,%ebx
408e46:	39 5d 10             	cmp    %ebx,0x10(%ebp)
408e49:	0f 8e 4b 01 00 00    	jle    0x408f9a
408e4f:	8b 4d 0c             	mov    0xc(%ebp),%ecx
408e52:	8b 34 99             	mov    (%ecx,%ebx,4),%esi
408e55:	8b 0f                	mov    (%edi),%ecx
408e57:	8b 56 04             	mov    0x4(%esi),%edx
408e5a:	8b 0c 88             	mov    (%eax,%ecx,4),%ecx
408e5d:	e8 77 ec ff ff       	call   0x407ad9
408e62:	85 c0                	test   %eax,%eax
408e64:	0f 84 b9 00 00 00    	je     0x408f23
408e6a:	6a 00                	push   $0x0
408e6c:	68 08 02 42 00       	push   $0x420208
408e71:	68 f0 01 42 00       	push   $0x4201f0
408e76:	6a 00                	push   $0x0
408e78:	56                   	push   %esi
408e79:	e8 92 36 01 00       	call   0x41c510
408e7e:	83 c4 14             	add    $0x14,%esp
408e81:	85 c0                	test   %eax,%eax
408e83:	0f 85 f5 00 00 00    	jne    0x408f7e
408e89:	50                   	push   %eax
408e8a:	68 d4 01 42 00       	push   $0x4201d4
408e8f:	68 f0 01 42 00       	push   $0x4201f0
408e94:	50                   	push   %eax
408e95:	56                   	push   %esi
408e96:	e8 75 36 01 00       	call   0x41c510
408e9b:	83 c4 14             	add    $0x14,%esp
408e9e:	89 44 24 1c          	mov    %eax,0x1c(%esp)
408ea2:	85 c0                	test   %eax,%eax
408ea4:	74 20                	je     0x408ec6
408ea6:	8b 0f                	mov    (%edi),%ecx
408ea8:	8d 51 01             	lea    0x1(%ecx),%edx
408eab:	3b 54 24 0c          	cmp    0xc(%esp),%edx
408eaf:	7d 15                	jge    0x408ec6
408eb1:	8b 44 24 14          	mov    0x14(%esp),%eax
408eb5:	8d 54 24 18          	lea    0x18(%esp),%edx
408eb9:	8b 4c 88 04          	mov    0x4(%eax,%ecx,4),%ecx
408ebd:	e8 3e fc ff ff       	call   0x408b00
408ec2:	85 c0                	test   %eax,%eax
408ec4:	75 6c                	jne    0x408f32
408ec6:	6a 00                	push   $0x0
408ec8:	68 b4 01 42 00       	push   $0x4201b4
408ecd:	68 f0 01 42 00       	push   $0x4201f0
408ed2:	6a 00                	push   $0x0
408ed4:	56                   	push   %esi
408ed5:	e8 36 36 01 00       	call   0x41c510
408eda:	83 c4 14             	add    $0x14,%esp
408edd:	89 44 24 1c          	mov    %eax,0x1c(%esp)
408ee1:	85 c0                	test   %eax,%eax
408ee3:	74 3e                	je     0x408f23
408ee5:	8b 07                	mov    (%edi),%eax
408ee7:	8d 48 01             	lea    0x1(%eax),%ecx
408eea:	3b 4c 24 0c          	cmp    0xc(%esp),%ecx
408eee:	7d 33                	jge    0x408f23
408ef0:	8b 4c 24 14          	mov    0x14(%esp),%ecx
408ef4:	83 64 24 20 00       	andl   $0x0,0x20(%esp)
408ef9:	83 64 24 24 00       	andl   $0x0,0x24(%esp)
408efe:	ff 74 81 04          	push   0x4(%ecx,%eax,4)
408f02:	8d 44 24 2c          	lea    0x2c(%esp),%eax
408f06:	50                   	push   %eax
408f07:	ff 15 e4 35 42 00    	call   *0x4235e4
408f0d:	8d 44 24 20          	lea    0x20(%esp),%eax
408f11:	50                   	push   %eax
408f12:	6a ff                	push   $0xffffffff
408f14:	6a ff                	push   $0xffffffff
408f16:	8d 4c 24 34          	lea    0x34(%esp),%ecx
408f1a:	e8 48 fc ff ff       	call   0x408b67
408f1f:	85 c0                	test   %eax,%eax
408f21:	75 33                	jne    0x408f56
408f23:	43                   	inc    %ebx
408f24:	3b 5d 10             	cmp    0x10(%ebp),%ebx
408f27:	7d 6d                	jge    0x408f96
408f29:	8b 44 24 14          	mov    0x14(%esp),%eax
408f2d:	e9 1d ff ff ff       	jmp    0x408e4f
408f32:	ff 74 24 18          	push   0x18(%esp)
408f36:	ff 07                	incl   (%edi)
408f38:	ff 76 04             	push   0x4(%esi)
408f3b:	8b 74 24 24          	mov    0x24(%esp),%esi
408f3f:	c7 44 24 18 01 00 00 	movl   $0x1,0x18(%esp)
408f46:	00
408f47:	8b 76 08             	mov    0x8(%esi),%esi
408f4a:	8b ce                	mov    %esi,%ecx
408f4c:	ff 15 f0 35 42 00    	call   *0x4235f0
408f52:	ff d6                	call   *%esi
408f54:	eb 40                	jmp    0x408f96
408f56:	ff 74 24 24          	push   0x24(%esp)
408f5a:	ff 07                	incl   (%edi)
408f5c:	ff 74 24 24          	push   0x24(%esp)
408f60:	c7 44 24 18 01 00 00 	movl   $0x1,0x18(%esp)
408f67:	00
408f68:	ff 76 04             	push   0x4(%esi)
408f6b:	8b 74 24 28          	mov    0x28(%esp),%esi
408f6f:	8b 76 08             	mov    0x8(%esi),%esi
408f72:	8b ce                	mov    %esi,%ecx
408f74:	ff 15 f0 35 42 00    	call   *0x4235f0
408f7a:	ff d6                	call   *%esi
408f7c:	eb 18                	jmp    0x408f96
408f7e:	ff 76 04             	push   0x4(%esi)
408f81:	8b 70 08             	mov    0x8(%eax),%esi
408f84:	8b ce                	mov    %esi,%ecx
408f86:	c7 44 24 14 01 00 00 	movl   $0x1,0x14(%esp)
408f8d:	00