411c17:	8b 45 08             	mov    0x8(%ebp),%eax
411c1a:	0f b7 04 48          	movzwl (%eax,%ecx,2),%eax
411c1e:	23 45 10             	and    0x10(%ebp),%eax
411c21:	5d                   	pop    %ebp
411c22:	c3                   	ret
411c23:	33 c0                	xor    %eax,%eax
411c25:	5d                   	pop    %ebp
411c26:	c3                   	ret
411c27:	8b ff                	mov    %edi,%edi
411c29:	55                   	push   %ebp
411c2a:	8b ec                	mov    %esp,%ebp
411c2c:	83 ec 5c             	sub    $0x5c,%esp
411c2f:	56                   	push   %esi
411c30:	ff 75 18             	push   0x18(%ebp)
411c33:	8d 4d a4             	lea    -0x5c(%ebp),%ecx
411c36:	e8 a7 b4 ff ff       	call   0x40d0e2
411c3b:	8b 45 1c             	mov    0x1c(%ebp),%eax
411c3e:	8b 55 10             	mov    0x10(%ebp),%edx
411c41:	8b 75 14             	mov    0x14(%ebp),%esi
411c44:	8b 4d 0c             	mov    0xc(%ebp),%ecx
411c47:	89 45 f0             	mov    %eax,-0x10(%ebp)
411c4a:	8b 45 08             	mov    0x8(%ebp),%eax
411c4d:	89 75 f4             	mov    %esi,-0xc(%ebp)
411c50:	89 55 f8             	mov    %edx,-0x8(%ebp)
411c53:	89 45 e0             	mov    %eax,-0x20(%ebp)
411c56:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
411c59:	85 d2                	test   %edx,%edx
411c5b:	75 23                	jne    0x411c80
411c5d:	8d 45 a4             	lea    -0x5c(%ebp),%eax
411c60:	c6 45 c0 01          	movb   $0x1,-0x40(%ebp)
411c64:	50                   	push   %eax
411c65:	33 c0                	xor    %eax,%eax
411c67:	c7 45 bc 16 00 00 00 	movl   $0x16,-0x44(%ebp)
411c6e:	50                   	push   %eax
411c6f:	50                   	push   %eax
411c70:	50                   	push   %eax
411c71:	50                   	push   %eax
411c72:	50                   	push   %eax
411c73:	e8 f9 b6 ff ff       	call   0x40d371
411c78:	83 c4 18             	add    $0x18,%esp
411c7b:	83 ce ff             	or     $0xffffffff,%esi
411c7e:	eb 3e                	jmp    0x411cbe
411c80:	85 f6                	test   %esi,%esi
411c82:	74 d9                	je     0x411c5d
411c84:	8d 45 f8             	lea    -0x8(%ebp),%eax
411c87:	89 55 ec             	mov    %edx,-0x14(%ebp)
411c8a:	89 45 cc             	mov    %eax,-0x34(%ebp)
411c8d:	8d 4d ff             	lea    -0x1(%ebp),%ecx
411c90:	8d 45 a4             	lea    -0x5c(%ebp),%eax
411c93:	89 55 e8             	mov    %edx,-0x18(%ebp)
411c96:	89 45 d0             	mov    %eax,-0x30(%ebp)
411c99:	8d 45 e0             	lea    -0x20(%ebp),%eax
411c9c:	89 45 d4             	mov    %eax,-0x2c(%ebp)
411c9f:	8d 45 f4             	lea    -0xc(%ebp),%eax
411ca2:	89 45 d8             	mov    %eax,-0x28(%ebp)
411ca5:	8d 45 f0             	lea    -0x10(%ebp),%eax
411ca8:	89 45 dc             	mov    %eax,-0x24(%ebp)
411cab:	8d 45 ec             	lea    -0x14(%ebp),%eax
411cae:	50                   	push   %eax
411caf:	8d 45 cc             	lea    -0x34(%ebp),%eax
411cb2:	50                   	push   %eax
411cb3:	8d 45 e8             	lea    -0x18(%ebp),%eax
411cb6:	50                   	push   %eax
411cb7:	e8 c3 b7 ff ff       	call   0x40d47f
411cbc:	8b f0                	mov    %eax,%esi
411cbe:	8d 4d a4             	lea    -0x5c(%ebp),%ecx
411cc1:	e8 64 b4 ff ff       	call   0x40d12a
411cc6:	8b c6                	mov    %esi,%eax
411cc8:	5e                   	pop    %esi
411cc9:	c9                   	leave
411cca:	c3                   	ret
411ccb:	8b ff                	mov    %edi,%edi
411ccd:	55                   	push   %ebp
411cce:	8b ec                	mov    %esp,%ebp
411cd0:	83 ec 28             	sub    $0x28,%esp
411cd3:	8d 4d d8             	lea    -0x28(%ebp),%ecx
411cd6:	56                   	push   %esi
411cd7:	ff 75 1c             	push   0x1c(%ebp)
411cda:	e8 03 b4 ff ff       	call   0x40d0e2
411cdf:	ff 75 20             	push   0x20(%ebp)
411ce2:	8d 45 d8             	lea    -0x28(%ebp),%eax
411ce5:	50                   	push   %eax
411ce6:	ff 75 18             	push   0x18(%ebp)
411ce9:	ff 75 14             	push   0x14(%ebp)
411cec:	ff 75 10             	push   0x10(%ebp)
411cef:	ff 75 0c             	push   0xc(%ebp)
411cf2:	ff 75 08             	push   0x8(%ebp)
411cf5:	e8 63 b9 ff ff       	call   0x40d65d
411cfa:	83 c4 1c             	add    $0x1c,%esp
411cfd:	8d 4d d8             	lea    -0x28(%ebp),%ecx
411d00:	8b f0                	mov    %eax,%esi
411d02:	e8 23 b4 ff ff       	call   0x40d12a
411d07:	8b c6                	mov    %esi,%eax
411d09:	5e                   	pop    %esi
411d0a:	c9                   	leave
411d0b:	c3                   	ret
411d0c:	8b ff                	mov    %edi,%edi
411d0e:	55                   	push   %ebp
411d0f:	8b ec                	mov    %esp,%ebp
411d11:	83 ec 28             	sub    $0x28,%esp
411d14:	8d 4d d8             	lea    -0x28(%ebp),%ecx
411d17:	56                   	push   %esi
411d18:	ff 75 1c             	push   0x1c(%ebp)
411d1b:	e8 c2 b3 ff ff       	call   0x40d0e2
411d20:	ff 75 20             	push   0x20(%ebp)
411d23:	8d 45 d8             	lea    -0x28(%ebp),%eax
411d26:	50                   	push   %eax
411d27:	ff 75 18             	push   0x18(%ebp)
411d2a:	ff 75 14             	push   0x14(%ebp)
411d2d:	ff 75 10             	push   0x10(%ebp)
411d30:	ff 75 0c             	push   0xc(%ebp)
411d33:	ff 75 08             	push   0x8(%ebp)
411d36:	e8 96 ba ff ff       	call   0x40d7d1
411d3b:	83 c4 1c             	add    $0x1c,%esp
411d3e:	8d 4d d8             	lea    -0x28(%ebp),%ecx
411d41:	8b f0                	mov    %eax,%esi
411d43:	e8 e2 b3 ff ff       	call   0x40d12a
411d48:	8b c6                	mov    %esi,%eax
411d4a:	5e                   	pop    %esi
411d4b:	c9                   	leave
411d4c:	c3                   	ret
411d4d:	8b ff                	mov    %edi,%edi
411d4f:	55                   	push   %ebp
411d50:	8b ec                	mov    %esp,%ebp
411d52:	83 ec 28             	sub    $0x28,%esp
411d55:	8d 4d d8             	lea    -0x28(%ebp),%ecx
411d58:	56                   	push   %esi
411d59:	ff 75 1c             	push   0x1c(%ebp)
411d5c:	e8 81 b3 ff ff       	call   0x40d0e2
411d61:	ff 75 20             	push   0x20(%ebp)
411d64:	8d 45 d8             	lea    -0x28(%ebp),%eax
411d67:	50                   	push   %eax
411d68:	ff 75 18             	push   0x18(%ebp)
411d6b:	ff 75 14             	push   0x14(%ebp)
411d6e:	ff 75 10             	push   0x10(%ebp)
411d71:	ff 75 0c             	push   0xc(%ebp)
411d74:	ff 75 08             	push   0x8(%ebp)
411d77:	e8 d8 bb ff ff       	call   0x40d954
411d7c:	83 c4 1c             	add    $0x1c,%esp
411d7f:	8d 4d d8             	lea    -0x28(%ebp),%ecx
411d82:	8b f0                	mov    %eax,%esi
411d84:	e8 a1 b3 ff ff       	call   0x40d12a
411d89:	8b c6                	mov    %esi,%eax
411d8b:	5e                   	pop    %esi
411d8c:	c9                   	leave
411d8d:	c3                   	ret
411d8e:	8b ff                	mov    %edi,%edi
411d90:	55                   	push   %ebp
411d91:	8b ec                	mov    %esp,%ebp
411d93:	f6 45 08 04          	testb  $0x4,0x8(%ebp)
411d97:	75 32                	jne    0x411dcb
411d99:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
411d9d:	74 28                	je     0x411dc7
411d9f:	f6 45 08 02          	testb  $0x2,0x8(%ebp)
411da3:	74 11                	je     0x411db6
411da5:	81 7d 10 00 00 00 80 	cmpl   $0x80000000,0x10(%ebp)
411dac:	77 1d                	ja     0x411dcb
411dae:	72 17                	jb     0x411dc7
411db0:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
411db4:	eb 0f                	jmp    0x411dc5
411db6:	81 7d 10 ff ff ff 7f 	cmpl   $0x7fffffff,0x10(%ebp)
411dbd:	77 0c                	ja     0x411dcb
411dbf:	72 06                	jb     0x411dc7
411dc1:	83 7d 0c ff          	cmpl   $0xffffffff,0xc(%ebp)
411dc5:	77 04                	ja     0x411dcb
411dc7:	32 c0                	xor    %al,%al
411dc9:	5d                   	pop    %ebp
411dca:	c3                   	ret
411dcb:	b0 01                	mov    $0x1,%al
411dcd:	5d                   	pop    %ebp
411dce:	c3                   	ret
411dcf:	8b ff                	mov    %edi,%edi
411dd1:	55                   	push   %ebp
411dd2:	8b ec                	mov    %esp,%ebp
411dd4:	83 ec 14             	sub    $0x14,%esp
411dd7:	8d 4d 0c             	lea    0xc(%ebp),%ecx
411dda:	53                   	push   %ebx
411ddb:	56                   	push   %esi
411ddc:	e8 3a fb ff ff       	call   0x41191b
411de1:	84 c0                	test   %al,%al
411de3:	74 2f                	je     0x411e14
411de5:	8b 75 14             	mov    0x14(%ebp),%esi
411de8:	85 f6                	test   %esi,%esi
411dea:	74 3d                	je     0x411e29
411dec:	83 fe 02             	cmp    $0x2,%esi
411def:	7c 05                	jl     0x411df6
411df1:	83 fe 24             	cmp    $0x24,%esi
411df4:	7e 33                	jle    0x411e29
411df6:	8b 45 08             	mov    0x8(%ebp),%eax
411df9:	50                   	push   %eax
411dfa:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
411dfe:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
411e05:	33 c0                	xor    %eax,%eax
411e07:	50                   	push   %eax
411e08:	50                   	push   %eax
411e09:	50                   	push   %eax
411e0a:	50                   	push   %eax
411e0b:	50                   	push   %eax
411e0c:	e8 60 b5 ff ff       	call   0x40d371
411e11:	83 c4 18             	add    $0x18,%esp
411e14:	8b 4d 10             	mov    0x10(%ebp),%ecx
411e17:	85 c9                	test   %ecx,%ecx
411e19:	0f 84 8a 01 00 00    	je     0x411fa9
411e1f:	8b 45 0c             	mov    0xc(%ebp),%eax
411e22:	89 01                	mov    %eax,(%ecx)
411e24:	e9 80 01 00 00       	jmp    0x411fa9
411e29:	8b 45 0c             	mov    0xc(%ebp),%eax
411e2c:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
411e30:	57                   	push   %edi
411e31:	8b 7d 08             	mov    0x8(%ebp),%edi
411e34:	8a 18                	mov    (%eax),%bl
411e36:	89 45 ec             	mov    %eax,-0x14(%ebp)
411e39:	40                   	inc    %eax
411e3a:	88 5d fc             	mov    %bl,-0x4(%ebp)
411e3d:	80 7f 14 00          	cmpb   $0x0,0x14(%edi)
411e41:	89 45 0c             	mov    %eax,0xc(%ebp)
411e44:	75 07                	jne    0x411e4d
411e46:	8b cf                	mov    %edi,%ecx
411e48:	e8 73 fa ff ff       	call   0x4118c0
411e4d:	83 c7 0c             	add    $0xc,%edi
411e50:	eb 0c                	jmp    0x411e5e
411e52:	8b 45 0c             	mov    0xc(%ebp),%eax
411e55:	8a 18                	mov    (%eax),%bl
411e57:	40                   	inc    %eax
411e58:	88 5d fc             	mov    %bl,-0x4(%ebp)
411e5b:	89 45 0c             	mov    %eax,0xc(%ebp)
411e5e:	57                   	push   %edi
411e5f:	0f b6 c3             	movzbl %bl,%eax
411e62:	6a 08                	push   $0x8
411e64:	50                   	push   %eax
411e65:	e8 82 0a 00 00       	call   0x4128ec
411e6a:	83 c4 0c             	add    $0xc,%esp
411e6d:	85 c0                	test   %eax,%eax
411e6f:	75 e1                	jne    0x411e52
411e71:	0f b6 45 18          	movzbl 0x18(%ebp),%eax
411e75:	89 45 f8             	mov    %eax,-0x8(%ebp)
411e78:	80 fb 2d             	cmp    $0x2d,%bl
411e7b:	75 08                	jne    0x411e85
411e7d:	83 c8 02             	or     $0x2,%eax
411e80:	89 45 f8             	mov    %eax,-0x8(%ebp)
411e83:	eb 05                	jmp    0x411e8a
411e85:	80 fb 2b             	cmp    $0x2b,%bl
411e88:	75 0e                	jne    0x411e98
411e8a:	8b 7d 0c             	mov    0xc(%ebp),%edi
411e8d:	8a 1f                	mov    (%edi),%bl
411e8f:	47                   	inc    %edi
411e90:	88 5d fc             	mov    %bl,-0x4(%ebp)
411e93:	89 7d 0c             	mov    %edi,0xc(%ebp)
411e96:	eb 03                	jmp    0x411e9b
411e98:	8b 7d 0c             	mov    0xc(%ebp),%edi
411e9b:	85 f6                	test   %esi,%esi
411e9d:	74 05                	je     0x411ea4
411e9f:	83 fe 10             	cmp    $0x10,%esi
411ea2:	75 73                	jne    0x411f17
411ea4:	8a c3                	mov    %bl,%al
411ea6:	2c 30                	sub    $0x30,%al
411ea8:	3c 09                	cmp    $0x9,%al
411eaa:	77 08                	ja     0x411eb4
411eac:	0f be c3             	movsbl %bl,%eax
411eaf:	83 c0 d0             	add    $0xffffffd0,%eax
411eb2:	eb 1e                	jmp    0x411ed2
411eb4:	8a c3                	mov    %bl,%al
411eb6:	2c 61                	sub    $0x61,%al
411eb8:	3c 19                	cmp    $0x19,%al
411eba:	77 08                	ja     0x411ec4
411ebc:	0f be c3             	movsbl %bl,%eax
411ebf:	83 c0 a9             	add    $0xffffffa9,%eax
411ec2:	eb 0e                	jmp    0x411ed2
411ec4:	8a c3                	mov    %bl,%al
411ec6:	2c 41                	sub    $0x41,%al
411ec8:	3c 19                	cmp    $0x19,%al
411eca:	77 44                	ja     0x411f10
411ecc:	0f be c3             	movsbl %bl,%eax
411ecf:	83 c0 c9             	add    $0xffffffc9,%eax
411ed2:	85 c0                	test   %eax,%eax
411ed4:	75 3a                	jne    0x411f10
411ed6:	8a 07                	mov    (%edi),%al
411ed8:	47                   	inc    %edi
411ed9:	88 45 f0             	mov    %al,-0x10(%ebp)
411edc:	89 7d 0c             	mov    %edi,0xc(%ebp)
411edf:	3c 78                	cmp    $0x78,%al
411ee1:	74 1b                	je     0x411efe
411ee3:	3c 58                	cmp    $0x58,%al
411ee5:	74 17                	je     0x411efe
411ee7:	85 f6                	test   %esi,%esi
411ee9:	75 03                	jne    0x411eee
411eeb:	6a 08                	push   $0x8
411eed:	5e                   	pop    %esi
411eee:	ff 75 f0             	push   -0x10(%ebp)
411ef1:	8d 4d 0c             	lea    0xc(%ebp),%ecx
411ef4:	e8 69 f9 ff ff       	call   0x411862
411ef9:	8b 7d 0c             	mov    0xc(%ebp),%edi
411efc:	eb 19                	jmp    0x411f17
411efe:	85 f6                	test   %esi,%esi
411f00:	75 03                	jne    0x411f05
411f02:	6a 10                	push   $0x10
411f04:	5e                   	pop    %esi
411f05:	8a 1f                	mov    (%edi),%bl
411f07:	47                   	inc    %edi
411f08:	88 5d fc             	mov    %bl,-0x4(%ebp)
411f0b:	89 7d 0c             	mov    %edi,0xc(%ebp)
411f0e:	eb 07                	jmp    0x411f17
411f10:	85 f6                	test   %esi,%esi
411f12:	75 03                	jne    0x411f17
411f14:	6a 0a                	push   $0xa
411f16:	5e                   	pop    %esi
411f17:	83 c8 ff             	or     $0xffffffff,%eax
411f1a:	33 d2                	xor    %edx,%edx
411f1c:	f7 f6                	div    %esi
411f1e:	89 45 f0             	mov    %eax,-0x10(%ebp)
411f21:	8a c3                	mov    %bl,%al
411f23:	2c 30                	sub    $0x30,%al
411f25:	3c 09                	cmp    $0x9,%al
411f27:	77 08                	ja     0x411f31
411f29:	0f be cb             	movsbl %bl,%ecx
411f2c:	83 c1 d0             	add    $0xffffffd0,%ecx
411f2f:	eb 23                	jmp    0x411f54
411f31:	8a c3                	mov    %bl,%al
411f33:	2c 61                	sub    $0x61,%al
411f35:	3c 19                	cmp    $0x19,%al
411f37:	77 08                	ja     0x411f41
411f39:	0f be cb             	movsbl %bl,%ecx
411f3c:	83 c1 a9             	add    $0xffffffa9,%ecx
411f3f:	eb 13                	jmp    0x411f54
411f41:	8a c3                	mov    %bl,%al
411f43:	2c 41                	sub    $0x41,%al
411f45:	3c 19                	cmp    $0x19,%al
411f47:	77 08                	ja     0x411f51
411f49:	0f be cb             	movsbl %bl,%ecx
411f4c:	83 c1 c9             	add    $0xffffffc9,%ecx
411f4f:	eb 03                	jmp    0x411f54
411f51:	83 c9 ff             	or     $0xffffffff,%ecx
411f54:	3b ce                	cmp    %esi,%ecx
411f56:	73 31                	jae    0x411f89
411f58:	8b 5d f4             	mov    -0xc(%ebp),%ebx
411f5b:	8b c3                	mov    %ebx,%eax
411f5d:	0f af c6             	imul   %esi,%eax
411f60:	8d 14 08             	lea    (%eax,%ecx,1),%edx
411f63:	3b d0                	cmp    %eax,%edx
411f65:	89 55 f4             	mov    %edx,-0xc(%ebp)
411f68:	1b c9                	sbb    %ecx,%ecx
411f6a:	f7 d9                	neg    %ecx
411f6c:	39 5d f0             	cmp    %ebx,-0x10(%ebp)
411f6f:	8a 1f                	mov    (%edi),%bl
411f71:	1b c0                	sbb    %eax,%eax
411f73:	88 5d fc             	mov    %bl,-0x4(%ebp)
411f76:	f7 d8                	neg    %eax
411f78:	0b c8                	or     %eax,%ecx
411f7a:	c1 e1 02             	shl    $0x2,%ecx
411f7d:	83 c9 08             	or     $0x8,%ecx