409ad6:	0f af c7             	imul   %edi,%eax
409ad9:	03 c1                	add    %ecx,%eax
409adb:	89 45 f4             	mov    %eax,-0xc(%ebp)
409ade:	8a 1e                	mov    (%esi),%bl
409ae0:	46                   	inc    %esi
409ae1:	88 5d fc             	mov    %bl,-0x4(%ebp)
409ae4:	89 75 0c             	mov    %esi,0xc(%ebp)
409ae7:	eb 98                	jmp    0x409a81
409ae9:	ff 75 fc             	push   -0x4(%ebp)
409aec:	8d 4d 0c             	lea    0xc(%ebp),%ecx
409aef:	89 55 f8             	mov    %edx,-0x8(%ebp)
409af2:	e8 52 07 00 00       	call   0x40a249
409af7:	8b 5d f8             	mov    -0x8(%ebp),%ebx
409afa:	f6 c3 08             	test   $0x8,%bl
409afd:	75 0a                	jne    0x409b09
409aff:	8b 45 e8             	mov    -0x18(%ebp),%eax
409b02:	33 db                	xor    %ebx,%ebx
409b04:	89 45 0c             	mov    %eax,0xc(%ebp)
409b07:	eb 41                	jmp    0x409b4a
409b09:	8b 75 f4             	mov    -0xc(%ebp),%esi
409b0c:	56                   	push   %esi
409b0d:	53                   	push   %ebx
409b0e:	e8 f6 fd ff ff       	call   0x409909
409b13:	59                   	pop    %ecx
409b14:	59                   	pop    %ecx
409b15:	84 c0                	test   %al,%al
409b17:	74 28                	je     0x409b41
409b19:	e8 e9 e1 ff ff       	call   0x407d07
409b1e:	c7 00 22 00 00 00    	movl   $0x22,(%eax)
409b24:	f6 c3 01             	test   $0x1,%bl
409b27:	75 05                	jne    0x409b2e
409b29:	83 ce ff             	or     $0xffffffff,%esi
409b2c:	eb 1a                	jmp    0x409b48
409b2e:	f6 c3 02             	test   $0x2,%bl
409b31:	74 07                	je     0x409b3a
409b33:	bb 00 00 00 80       	mov    $0x80000000,%ebx
409b38:	eb 10                	jmp    0x409b4a
409b3a:	bb ff ff ff 7f       	mov    $0x7fffffff,%ebx
409b3f:	eb 09                	jmp    0x409b4a
409b41:	f6 c3 02             	test   $0x2,%bl
409b44:	74 02                	je     0x409b48
409b46:	f7 de                	neg    %esi
409b48:	8b de                	mov    %esi,%ebx
409b4a:	80 7d e4 00          	cmpb   $0x0,-0x1c(%ebp)
409b4e:	5e                   	pop    %esi
409b4f:	0f 84 20 fe ff ff    	je     0x409975
409b55:	8b 45 d8             	mov    -0x28(%ebp),%eax
409b58:	83 a0 50 03 00 00 fd 	andl   $0xfffffffd,0x350(%eax)
409b5f:	e9 11 fe ff ff       	jmp    0x409975
409b64:	8b ff                	mov    %edi,%edi
409b66:	55                   	push   %ebp
409b67:	8b ec                	mov    %esp,%ebp
409b69:	83 ec 1c             	sub    $0x1c,%esp
409b6c:	8d 4d 0c             	lea    0xc(%ebp),%ecx
409b6f:	53                   	push   %ebx
409b70:	57                   	push   %edi
409b71:	e8 27 07 00 00       	call   0x40a29d
409b76:	84 c0                	test   %al,%al
409b78:	74 23                	je     0x409b9d
409b7a:	8b 45 14             	mov    0x14(%ebp),%eax
409b7d:	6a 02                	push   $0x2
409b7f:	5f                   	pop    %edi
409b80:	85 c0                	test   %eax,%eax
409b82:	74 2f                	je     0x409bb3
409b84:	3b c7                	cmp    %edi,%eax
409b86:	7c 05                	jl     0x409b8d
409b88:	83 f8 24             	cmp    $0x24,%eax
409b8b:	7e 26                	jle    0x409bb3
409b8d:	e8 75 e1 ff ff       	call   0x407d07
409b92:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
409b98:	e8 91 e0 ff ff       	call   0x407c2e
409b9d:	33 db                	xor    %ebx,%ebx
409b9f:	8b 55 10             	mov    0x10(%ebp),%edx
409ba2:	85 d2                	test   %edx,%edx
409ba4:	74 05                	je     0x409bab
409ba6:	8b 4d 0c             	mov    0xc(%ebp),%ecx
409ba9:	89 0a                	mov    %ecx,(%edx)
409bab:	5f                   	pop    %edi
409bac:	8b c3                	mov    %ebx,%eax
409bae:	5b                   	pop    %ebx
409baf:	8b e5                	mov    %ebp,%esp
409bb1:	5d                   	pop    %ebp
409bb2:	c3                   	ret
409bb3:	56                   	push   %esi
409bb4:	ff 75 08             	push   0x8(%ebp)
409bb7:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
409bba:	e8 f2 ba ff ff       	call   0x4056b1
409bbf:	8b 45 0c             	mov    0xc(%ebp),%eax
409bc2:	33 f6                	xor    %esi,%esi
409bc4:	89 75 f8             	mov    %esi,-0x8(%ebp)
409bc7:	89 45 f4             	mov    %eax,-0xc(%ebp)
409bca:	eb 03                	jmp    0x409bcf
409bcc:	8b 45 0c             	mov    0xc(%ebp),%eax
409bcf:	0f b7 30             	movzwl (%eax),%esi
409bd2:	03 c7                	add    %edi,%eax
409bd4:	6a 08                	push   $0x8
409bd6:	56                   	push   %esi
409bd7:	89 45 0c             	mov    %eax,0xc(%ebp)
409bda:	e8 e7 7a 00 00       	call   0x4116c6
409bdf:	59                   	pop    %ecx
409be0:	59                   	pop    %ecx
409be1:	85 c0                	test   %eax,%eax
409be3:	75 e7                	jne    0x409bcc
409be5:	33 db                	xor    %ebx,%ebx
409be7:	38 5d 18             	cmp    %bl,0x18(%ebp)
409bea:	0f 95 c3             	setne  %bl
409bed:	66 83 fe 2d          	cmp    $0x2d,%si
409bf1:	75 04                	jne    0x409bf7
409bf3:	0b df                	or     %edi,%ebx
409bf5:	eb 06                	jmp    0x409bfd
409bf7:	66 83 fe 2b          	cmp    $0x2b,%si
409bfb:	75 0e                	jne    0x409c0b
409bfd:	8b 7d 0c             	mov    0xc(%ebp),%edi
409c00:	0f b7 37             	movzwl (%edi),%esi
409c03:	83 c7 02             	add    $0x2,%edi
409c06:	89 7d 0c             	mov    %edi,0xc(%ebp)
409c09:	eb 03                	jmp    0x409c0e
409c0b:	8b 7d 0c             	mov    0xc(%ebp),%edi
409c0e:	8b 4d 14             	mov    0x14(%ebp),%ecx
409c11:	c7 45 fc 19 00 00 00 	movl   $0x19,-0x4(%ebp)
409c18:	6a 30                	push   $0x30
409c1a:	58                   	pop    %eax
409c1b:	6a 10                	push   $0x10
409c1d:	5a                   	pop    %edx
409c1e:	85 c9                	test   %ecx,%ecx
409c20:	74 08                	je     0x409c2a
409c22:	3b ca                	cmp    %edx,%ecx
409c24:	0f 85 db 02 00 00    	jne    0x409f05
409c2a:	66 3b f0             	cmp    %ax,%si
409c2d:	0f 82 55 02 00 00    	jb     0x409e88
409c33:	6a 3a                	push   $0x3a
409c35:	58                   	pop    %eax
409c36:	66 3b f0             	cmp    %ax,%si
409c39:	73 0b                	jae    0x409c46
409c3b:	0f b7 c6             	movzwl %si,%eax
409c3e:	83 e8 30             	sub    $0x30,%eax
409c41:	e9 3d 02 00 00       	jmp    0x409e83
409c46:	b8 10 ff 00 00       	mov    $0xff10,%eax
409c4b:	66 3b f0             	cmp    %ax,%si
409c4e:	0f 83 18 02 00 00    	jae    0x409e6c
409c54:	b8 60 06 00 00       	mov    $0x660,%eax
409c59:	66 3b f0             	cmp    %ax,%si
409c5c:	0f 82 26 02 00 00    	jb     0x409e88
409c62:	83 c0 0a             	add    $0xa,%eax
409c65:	66 3b f0             	cmp    %ax,%si
409c68:	73 0d                	jae    0x409c77
409c6a:	0f b7 c6             	movzwl %si,%eax
409c6d:	2d 60 06 00 00       	sub    $0x660,%eax
409c72:	e9 0c 02 00 00       	jmp    0x409e83
409c77:	b8 f0 06 00 00       	mov    $0x6f0,%eax
409c7c:	66 3b f0             	cmp    %ax,%si
409c7f:	0f 82 03 02 00 00    	jb     0x409e88
409c85:	83 c0 0a             	add    $0xa,%eax
409c88:	66 3b f0             	cmp    %ax,%si
409c8b:	73 0d                	jae    0x409c9a
409c8d:	0f b7 c6             	movzwl %si,%eax
409c90:	2d f0 06 00 00       	sub    $0x6f0,%eax
409c95:	e9 e9 01 00 00       	jmp    0x409e83
409c9a:	b8 66 09 00 00       	mov    $0x966,%eax
409c9f:	66 3b f0             	cmp    %ax,%si
409ca2:	0f 82 e0 01 00 00    	jb     0x409e88
409ca8:	83 c0 0a             	add    $0xa,%eax
409cab:	66 3b f0             	cmp    %ax,%si
409cae:	73 0d                	jae    0x409cbd
409cb0:	0f b7 c6             	movzwl %si,%eax
409cb3:	2d 66 09 00 00       	sub    $0x966,%eax
409cb8:	e9 c6 01 00 00       	jmp    0x409e83
409cbd:	b8 e6 09 00 00       	mov    $0x9e6,%eax
409cc2:	66 3b f0             	cmp    %ax,%si
409cc5:	0f 82 bd 01 00 00    	jb     0x409e88
409ccb:	83 c0 0a             	add    $0xa,%eax
409cce:	66 3b f0             	cmp    %ax,%si
409cd1:	73 0d                	jae    0x409ce0
409cd3:	0f b7 c6             	movzwl %si,%eax
409cd6:	2d e6 09 00 00       	sub    $0x9e6,%eax
409cdb:	e9 a3 01 00 00       	jmp    0x409e83
409ce0:	b8 66 0a 00 00       	mov    $0xa66,%eax
409ce5:	66 3b f0             	cmp    %ax,%si
409ce8:	0f 82 9a 01 00 00    	jb     0x409e88
409cee:	83 c0 0a             	add    $0xa,%eax
409cf1:	66 3b f0             	cmp    %ax,%si
409cf4:	73 0d                	jae    0x409d03
409cf6:	0f b7 c6             	movzwl %si,%eax
409cf9:	2d 66 0a 00 00       	sub    $0xa66,%eax
409cfe:	e9 80 01 00 00       	jmp    0x409e83
409d03:	b8 e6 0a 00 00       	mov    $0xae6,%eax
409d08:	66 3b f0             	cmp    %ax,%si
409d0b:	0f 82 77 01 00 00    	jb     0x409e88
409d11:	83 c0 0a             	add    $0xa,%eax
409d14:	66 3b f0             	cmp    %ax,%si
409d17:	73 0d                	jae    0x409d26
409d19:	0f b7 c6             	movzwl %si,%eax
409d1c:	2d e6 0a 00 00       	sub    $0xae6,%eax
409d21:	e9 5d 01 00 00       	jmp    0x409e83
409d26:	b8 66 0b 00 00       	mov    $0xb66,%eax
409d2b:	66 3b f0             	cmp    %ax,%si
409d2e:	0f 82 54 01 00 00    	jb     0x409e88
409d34:	83 c0 0a             	add    $0xa,%eax
409d37:	66 3b f0             	cmp    %ax,%si
409d3a:	73 0d                	jae    0x409d49
409d3c:	0f b7 c6             	movzwl %si,%eax
409d3f:	2d 66 0b 00 00       	sub    $0xb66,%eax
409d44:	e9 3a 01 00 00       	jmp    0x409e83
409d49:	b8 66 0c 00 00       	mov    $0xc66,%eax
409d4e:	66 3b f0             	cmp    %ax,%si
409d51:	0f 82 31 01 00 00    	jb     0x409e88
409d57:	83 c0 0a             	add    $0xa,%eax
409d5a:	66 3b f0             	cmp    %ax,%si
409d5d:	73 0d                	jae    0x409d6c
409d5f:	0f b7 c6             	movzwl %si,%eax
409d62:	2d 66 0c 00 00       	sub    $0xc66,%eax
409d67:	e9 17 01 00 00       	jmp    0x409e83
409d6c:	b8 e6 0c 00 00       	mov    $0xce6,%eax
409d71:	66 3b f0             	cmp    %ax,%si
409d74:	0f 82 0e 01 00 00    	jb     0x409e88
409d7a:	83 c0 0a             	add    $0xa,%eax
409d7d:	66 3b f0             	cmp    %ax,%si
409d80:	73 0d                	jae    0x409d8f
409d82:	0f b7 c6             	movzwl %si,%eax
409d85:	2d e6 0c 00 00       	sub    $0xce6,%eax
409d8a:	e9 f4 00 00 00       	jmp    0x409e83
409d8f:	b8 66 0d 00 00       	mov    $0xd66,%eax
409d94:	66 3b f0             	cmp    %ax,%si
409d97:	0f 82 eb 00 00 00    	jb     0x409e88
409d9d:	83 c0 0a             	add    $0xa,%eax
409da0:	66 3b f0             	cmp    %ax,%si
409da3:	73 0d                	jae    0x409db2
409da5:	0f b7 c6             	movzwl %si,%eax
409da8:	2d 66 0d 00 00       	sub    $0xd66,%eax
409dad:	e9 d1 00 00 00       	jmp    0x409e83
409db2:	b8 50 0e 00 00       	mov    $0xe50,%eax
409db7:	66 3b f0             	cmp    %ax,%si
409dba:	0f 82 c8 00 00 00    	jb     0x409e88
409dc0:	83 c0 0a             	add    $0xa,%eax
409dc3:	66 3b f0             	cmp    %ax,%si
409dc6:	73 0d                	jae    0x409dd5
409dc8:	0f b7 c6             	movzwl %si,%eax
409dcb:	2d 50 0e 00 00       	sub    $0xe50,%eax
409dd0:	e9 ae 00 00 00       	jmp    0x409e83
409dd5:	b8 d0 0e 00 00       	mov    $0xed0,%eax
409dda:	66 3b f0             	cmp    %ax,%si
409ddd:	0f 82 a5 00 00 00    	jb     0x409e88
409de3:	83 c0 0a             	add    $0xa,%eax
409de6:	66 3b f0             	cmp    %ax,%si
409de9:	73 0d                	jae    0x409df8
409deb:	0f b7 c6             	movzwl %si,%eax
409dee:	2d d0 0e 00 00       	sub    $0xed0,%eax
409df3:	e9 8b 00 00 00       	jmp    0x409e83
409df8:	b8 20 0f 00 00       	mov    $0xf20,%eax
409dfd:	66 3b f0             	cmp    %ax,%si
409e00:	0f 82 82 00 00 00    	jb     0x409e88
409e06:	83 c0 0a             	add    $0xa,%eax
409e09:	66 3b f0             	cmp    %ax,%si
409e0c:	73 0a                	jae    0x409e18
409e0e:	0f b7 c6             	movzwl %si,%eax
409e11:	2d 20 0f 00 00       	sub    $0xf20,%eax
409e16:	eb 6b                	jmp    0x409e83
409e18:	b8 40 10 00 00       	mov    $0x1040,%eax
409e1d:	66 3b f0             	cmp    %ax,%si
409e20:	72 66                	jb     0x409e88
409e22:	83 c0 0a             	add    $0xa,%eax
409e25:	66 3b f0             	cmp    %ax,%si
409e28:	73 0a                	jae    0x409e34
409e2a:	0f b7 c6             	movzwl %si,%eax
409e2d:	2d 40 10 00 00       	sub    $0x1040,%eax
409e32:	eb 4f                	jmp    0x409e83
409e34:	b8 e0 17 00 00       	mov    $0x17e0,%eax
409e39:	66 3b f0             	cmp    %ax,%si
409e3c:	72 4a                	jb     0x409e88
409e3e:	83 c0 0a             	add    $0xa,%eax
409e41:	66 3b f0             	cmp    %ax,%si
409e44:	73 0a                	jae    0x409e50
409e46:	0f b7 c6             	movzwl %si,%eax
409e49:	2d e0 17 00 00       	sub    $0x17e0,%eax
409e4e:	eb 33                	jmp    0x409e83
409e50:	b8 10 18 00 00       	mov    $0x1810,%eax
409e55:	66 3b f0             	cmp    %ax,%si
409e58:	72 2e                	jb     0x409e88
409e5a:	83 c0 0a             	add    $0xa,%eax
409e5d:	66 3b f0             	cmp    %ax,%si
409e60:	73 26                	jae    0x409e88
409e62:	0f b7 c6             	movzwl %si,%eax
409e65:	2d 10 18 00 00       	sub    $0x1810,%eax
409e6a:	eb 17                	jmp    0x409e83
409e6c:	b8 1a ff 00 00       	mov    $0xff1a,%eax
409e71:	66 3b f0             	cmp    %ax,%si
409e74:	73 0a                	jae    0x409e80
409e76:	0f b7 c6             	movzwl %si,%eax
409e79:	2d 10 ff 00 00       	sub    $0xff10,%eax
409e7e:	eb 03                	jmp    0x409e83
409e80:	83 c8 ff             	or     $0xffffffff,%eax
409e83:	83 f8 ff             	cmp    $0xffffffff,%eax
409e86:	75 30                	jne    0x409eb8
409e88:	6a 41                	push   $0x41
409e8a:	58                   	pop    %eax
409e8b:	66 3b c6             	cmp    %si,%ax
409e8e:	77 08                	ja     0x409e98
409e90:	6a 5a                	push   $0x5a
409e92:	58                   	pop    %eax
409e93:	66 3b f0             	cmp    %ax,%si
409e96:	76 09                	jbe    0x409ea1
409e98:	8d 46 9f             	lea    -0x61(%esi),%eax
409e9b:	66 3b 45 fc          	cmp    -0x4(%ebp),%ax
409e9f:	77 14                	ja     0x409eb5
409ea1:	8d 46 9f             	lea    -0x61(%esi),%eax
409ea4:	66 3b 45 fc          	cmp    -0x4(%ebp),%ax
409ea8:	0f b7 c6             	movzwl %si,%eax
409eab:	77 03                	ja     0x409eb0
409ead:	83 e8 20             	sub    $0x20,%eax
409eb0:	83 c0 c9             	add    $0xffffffc9,%eax
409eb3:	eb 03                	jmp    0x409eb8
409eb5:	83 c8 ff             	or     $0xffffffff,%eax
409eb8:	85 c0                	test   %eax,%eax
409eba:	74 0d                	je     0x409ec9
409ebc:	85 c9                	test   %ecx,%ecx
409ebe:	75 45                	jne    0x409f05
409ec0:	c7 45 14 0a 00 00 00 	movl   $0xa,0x14(%ebp)
409ec7:	eb 3c                	jmp    0x409f05
409ec9:	0f b7 07             	movzwl (%edi),%eax
409ecc:	83 c7 02             	add    $0x2,%edi
409ecf:	89 7d 0c             	mov    %edi,0xc(%ebp)
409ed2:	83 f8 78             	cmp    $0x78,%eax
409ed5:	74 1e                	je     0x409ef5
409ed7:	83 f8 58             	cmp    $0x58,%eax
409eda:	74 19                	je     0x409ef5
409edc:	85 c9                	test   %ecx,%ecx
409ede:	75 07                	jne    0x409ee7
409ee0:	c7 45 14 08 00 00 00 	movl   $0x8,0x14(%ebp)
409ee7:	50                   	push   %eax
409ee8:	8d 4d 0c             	lea    0xc(%ebp),%ecx
409eeb:	e8 81 03 00 00       	call   0x40a271
409ef0:	8b 7d 0c             	mov    0xc(%ebp),%edi
409ef3:	eb 10                	jmp    0x409f05
409ef5:	85 c9                	test   %ecx,%ecx
409ef7:	75 03                	jne    0x409efc
409ef9:	89 55 14             	mov    %edx,0x14(%ebp)
409efc:	0f b7 37             	movzwl (%edi),%esi
409eff:	83 c7 02             	add    $0x2,%edi
409f02:	89 7d 0c             	mov    %edi,0xc(%ebp)
409f05:	83 c8 ff             	or     $0xffffffff,%eax
409f08:	33 d2                	xor    %edx,%edx
409f0a:	f7 75 14             	divl   0x14(%ebp)
409f0d:	8b c8                	mov    %eax,%ecx
409f0f:	6a 30                	push   $0x30
409f11:	58                   	pop    %eax
409f12:	66 3b f0             	cmp    %ax,%si
409f15:	0f 82 55 02 00 00    	jb     0x40a170
409f1b:	6a 3a                	push   $0x3a
409f1d:	58                   	pop    %eax
409f1e:	66 3b f0             	cmp    %ax,%si