408b99:	8b f1                	mov    %ecx,%esi
408b9b:	c7 45 f8 21 00 00 00 	movl   $0x21,-0x8(%ebp)
408ba2:	c7 45 f4 61 00 00 00 	movl   $0x61,-0xc(%ebp)
408ba9:	6a 07                	push   $0x7
408bab:	5a                   	pop    %edx
408bac:	6a 70                	push   $0x70
408bae:	58                   	pop    %eax
408baf:	0f b7 0e             	movzwl (%esi),%ecx
408bb2:	66 8b f9             	mov    %cx,%di
408bb5:	89 4d fc             	mov    %ecx,-0x4(%ebp)
408bb8:	66 3b 7d f8          	cmp    -0x8(%ebp),%di
408bbc:	0f 83 99 00 00 00    	jae    0x408c5b
408bc2:	66 83 ff 6e          	cmp    $0x6e,%di
408bc6:	0f 84 67 01 00 00    	je     0x408d33
408bcc:	66 83 ff 6f          	cmp    $0x6f,%di
408bd0:	0f 84 5d 01 00 00    	je     0x408d33
408bd6:	66 3b f8             	cmp    %ax,%di
408bd9:	0f 84 54 01 00 00    	je     0x408d33
408bdf:	0f b7 cf             	movzwl %di,%ecx
408be2:	3b c8                	cmp    %eax,%ecx
408be4:	0f 8f fc 00 00 00    	jg     0x408ce6
408bea:	0f 84 ec 5c 07 00    	je     0x47e8dc
408bf0:	83 f9 5d             	cmp    $0x5d,%ecx
408bf3:	0f 8f 1c 01 00 00    	jg     0x408d15
408bf9:	83 f9 5b             	cmp    $0x5b,%ecx
408bfc:	0f 8d bf 5c 07 00    	jge    0x47e8c1
408c02:	85 c9                	test   %ecx,%ecx
408c04:	0f 84 06 01 00 00    	je     0x408d10
408c0a:	83 f9 54             	cmp    $0x54,%ecx
408c0d:	0f 8f 4c 01 00 00    	jg     0x408d5f
408c13:	0f b6 81 60 e5 49 00 	movzbl 0x49e560(%ecx),%eax
408c1a:	6a 07                	push   $0x7
408c1c:	5a                   	pop    %edx
408c1d:	6a 70                	push   $0x70
408c1f:	8d 34 46             	lea    (%esi,%eax,2),%esi
408c22:	58                   	pop    %eax
408c23:	85 db                	test   %ebx,%ebx
408c25:	74 88                	je     0x408baf
408c27:	8d 41 e3             	lea    -0x1d(%ecx),%eax
408c2a:	6a 70                	push   $0x70
408c2c:	83 f8 37             	cmp    $0x37,%eax
408c2f:	58                   	pop    %eax
408c30:	0f 87 79 ff ff ff    	ja     0x408baf
408c36:	66 8b 46 fe          	mov    -0x2(%esi),%ax
408c3a:	b9 00 fc 00 00       	mov    $0xfc00,%ecx
408c3f:	66 23 c1             	and    %cx,%ax
408c42:	b9 00 d8 00 00       	mov    $0xd800,%ecx
408c47:	6a 70                	push   $0x70
408c49:	66 3b c1             	cmp    %cx,%ax
408c4c:	58                   	pop    %eax
408c4d:	0f 85 5c ff ff ff    	jne    0x408baf
408c53:	83 c6 02             	add    $0x2,%esi
408c56:	e9 4e ff ff ff       	jmp    0x408ba9
408c5b:	66 3b 7d f4          	cmp    -0xc(%ebp),%di
408c5f:	0f 87 5d ff ff ff    	ja     0x408bc2
408c65:	e8 74 4c 01 00       	call   0x41d8de
408c6a:	6a 21                	push   $0x21
408c6c:	59                   	pop    %ecx
408c6d:	66 2b c8             	sub    %ax,%cx
408c70:	66 03 f9             	add    %cx,%di
408c73:	66 83 ff 28          	cmp    $0x28,%di
408c77:	0f 87 66 01 00 00    	ja     0x408de3
408c7d:	8d 45 d4             	lea    -0x2c(%ebp),%eax
408c80:	50                   	push   %eax
408c81:	8b 45 08             	mov    0x8(%ebp),%eax
408c84:	8b d3                	mov    %ebx,%edx
408c86:	ff 70 04             	push   0x4(%eax)
408c89:	8b ce                	mov    %esi,%ecx
408c8b:	e8 8e 4a 01 00       	call   0x41d71e
408c90:	59                   	pop    %ecx
408c91:	59                   	pop    %ecx
408c92:	6a 21                	push   $0x21
408c94:	59                   	pop    %ecx
408c95:	66 3b f9             	cmp    %cx,%di
408c98:	0f 84 4c 01 00 00    	je     0x408dea
408c9e:	66 83 ff 23          	cmp    $0x23,%di
408ca2:	0f 84 42 01 00 00    	je     0x408dea
408ca8:	66 83 ff 25          	cmp    $0x25,%di
408cac:	0f 84 38 01 00 00    	je     0x408dea
408cb2:	66 83 ff 27          	cmp    $0x27,%di
408cb6:	0f 84 2e 01 00 00    	je     0x408dea
408cbc:	33 c9                	xor    %ecx,%ecx
408cbe:	89 4d d8             	mov    %ecx,-0x28(%ebp)
408cc1:	85 c0                	test   %eax,%eax
408cc3:	0f 84 84 00 00 00    	je     0x408d4d
408cc9:	50                   	push   %eax
408cca:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
408ccd:	51                   	push   %ecx
408cce:	ff 75 08             	push   0x8(%ebp)
408cd1:	8b d3                	mov    %ebx,%edx
408cd3:	8b c8                	mov    %eax,%ecx
408cd5:	e8 7f 47 01 00       	call   0x41d459
408cda:	83 c4 0c             	add    $0xc,%esp
408cdd:	85 c0                	test   %eax,%eax
408cdf:	74 6c                	je     0x408d4d
408ce1:	e9 8f 5b 07 00       	jmp    0x47e875
408ce6:	8b c1                	mov    %ecx,%eax
408ce8:	2d 95 00 00 00       	sub    $0x95,%eax
408ced:	0f 84 e9 5b 07 00    	je     0x47e8dc
408cf3:	48                   	dec    %eax
408cf4:	48                   	dec    %eax
408cf5:	0f 84 e1 5b 07 00    	je     0x47e8dc
408cfb:	48                   	dec    %eax
408cfc:	48                   	dec    %eax
408cfd:	0f 84 d9 5b 07 00    	je     0x47e8dc
408d03:	48                   	dec    %eax
408d04:	48                   	dec    %eax
408d05:	0f 85 08 ff ff ff    	jne    0x408c13
408d0b:	e9 cc 5b 07 00       	jmp    0x47e8dc
408d10:	5f                   	pop    %edi
408d11:	5e                   	pop    %esi
408d12:	5b                   	pop    %ebx
408d13:	c9                   	leave
408d14:	c3                   	ret
408d15:	83 f9 5e             	cmp    $0x5e,%ecx
408d18:	0f 8c f5 fe ff ff    	jl     0x408c13
408d1e:	83 f9 60             	cmp    $0x60,%ecx
408d21:	7e 45                	jle    0x408d68
408d23:	6a 61                	push   $0x61
408d25:	58                   	pop    %eax
408d26:	3b c8                	cmp    %eax,%ecx
408d28:	0f 85 e5 fe ff ff    	jne    0x408c13
408d2e:	e9 8e 5b 07 00       	jmp    0x47e8c1
408d33:	66 3b f8             	cmp    %ax,%di
408d36:	0f 84 79 5b 07 00    	je     0x47e8b5
408d3c:	8d 7e 22             	lea    0x22(%esi),%edi
408d3f:	0f b7 07             	movzwl (%edi),%eax
408d42:	89 45 fc             	mov    %eax,-0x4(%ebp)
408d45:	83 c0 9e             	add    $0xffffff9e,%eax
408d48:	66 3b c2             	cmp    %dx,%ax
408d4b:	76 3b                	jbe    0x408d88
408d4d:	0f b7 06             	movzwl (%esi),%eax
408d50:	89 45 fc             	mov    %eax,-0x4(%ebp)
408d53:	66 8b 7d fc          	mov    -0x4(%ebp),%di
408d57:	6a 70                	push   $0x70
408d59:	58                   	pop    %eax
408d5a:	e9 80 fe ff ff       	jmp    0x408bdf
408d5f:	83 f9 5a             	cmp    $0x5a,%ecx
408d62:	0f 8f ab fe ff ff    	jg     0x408c13
408d68:	0f b7 46 02          	movzwl 0x2(%esi),%eax
408d6c:	6a 10                	push   $0x10
408d6e:	5a                   	pop    %edx
408d6f:	66 3b c2             	cmp    %dx,%ax
408d72:	74 0c                	je     0x408d80
408d74:	6a 0f                	push   $0xf
408d76:	5a                   	pop    %edx
408d77:	66 3b c2             	cmp    %dx,%ax
408d7a:	0f 85 93 fe ff ff    	jne    0x408c13
408d80:	83 c6 04             	add    $0x4,%esi
408d83:	e9 8b fe ff ff       	jmp    0x408c13
408d88:	8d 45 d4             	lea    -0x2c(%ebp),%eax
408d8b:	50                   	push   %eax
408d8c:	8b 45 08             	mov    0x8(%ebp),%eax
408d8f:	8b d3                	mov    %ebx,%edx
408d91:	ff 70 04             	push   0x4(%eax)
408d94:	8b ce                	mov    %esi,%ecx
408d96:	e8 83 49 01 00       	call   0x41d71e
408d9b:	8a 4d fc             	mov    -0x4(%ebp),%cl
408d9e:	f6 d1                	not    %cl
408da0:	0f b6 c9             	movzbl %cl,%ecx
408da3:	83 e1 01             	and    $0x1,%ecx
408da6:	89 4d d8             	mov    %ecx,-0x28(%ebp)
408da9:	50                   	push   %eax
408daa:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
408dad:	51                   	push   %ecx
408dae:	ff 75 08             	push   0x8(%ebp)
408db1:	8b d3                	mov    %ebx,%edx
408db3:	8b c8                	mov    %eax,%ecx
408db5:	e8 9f 46 01 00       	call   0x41d459
408dba:	83 c4 14             	add    $0x14,%esp
408dbd:	85 c0                	test   %eax,%eax
408dbf:	74 8c                	je     0x408d4d
408dc1:	0f b7 45 fc          	movzwl -0x4(%ebp),%eax
408dc5:	83 c0 9e             	add    $0xffffff9e,%eax
408dc8:	83 f8 07             	cmp    $0x7,%eax
408dcb:	77 80                	ja     0x408d4d
408dcd:	ff 24 85 fa 8d 40 00 	jmp    *0x408dfa(,%eax,4)
408dd4:	6a 6a                	push   $0x6a
408dd6:	58                   	pop    %eax
408dd7:	66 89 07             	mov    %ax,(%edi)
408dda:	e9 6e ff ff ff       	jmp    0x408d4d
408ddf:	6a 6c                	push   $0x6c
408de1:	eb f3                	jmp    0x408dd6
408de3:	33 c0                	xor    %eax,%eax
408de5:	e9 a8 fe ff ff       	jmp    0x408c92
408dea:	33 c9                	xor    %ecx,%ecx
408dec:	41                   	inc    %ecx
408ded:	e9 cc fe ff ff       	jmp    0x408cbe
408df2:	6a 6b                	push   $0x6b
408df4:	eb e0                	jmp    0x408dd6
408df6:	6a 6d                	push   $0x6d
408df8:	eb dc                	jmp    0x408dd6
408dfa:	d4 8d                	aam    $0x8d
408dfc:	40                   	inc    %eax
408dfd:	00 d4                	add    %dl,%ah
408dff:	8d 40 00             	lea    0x0(%eax),%eax
408e02:	f2 8d 40 00          	repnz lea 0x0(%eax),%eax
408e06:	f2 8d 40 00          	repnz lea 0x0(%eax),%eax
408e0a:	df 8d 40 00 df 8d    	fisttps -0x7220ffc0(%ebp)
408e10:	40                   	inc    %eax
408e11:	00 f6                	add    %dh,%dh
408e13:	8d 40 00             	lea    0x0(%eax),%eax
408e16:	f6 8d 40 00 56 8b f1 	testb  $0xf1,-0x74a9ffc0(%ebp)
408e1d:	e8 10 00 00 00       	call   0x408e32
408e22:	8d 4e 14             	lea    0x14(%esi),%ecx
408e25:	e8 0d 3d 00 00       	call   0x40cb37
408e2a:	8b ce                	mov    %esi,%ecx
408e2c:	5e                   	pop    %esi
408e2d:	e9 05 3d 00 00       	jmp    0x40cb37
408e32:	53                   	push   %ebx
408e33:	56                   	push   %esi
408e34:	8b f1                	mov    %ecx,%esi
408e36:	83 7e 24 00          	cmpl   $0x0,0x24(%esi)
408e3a:	75 1c                	jne    0x408e58
408e3c:	33 db                	xor    %ebx,%ebx
408e3e:	89 5e 24             	mov    %ebx,0x24(%esi)
408e41:	39 5e 2c             	cmp    %ebx,0x2c(%esi)
408e44:	75 1d                	jne    0x408e63
408e46:	89 5e 2c             	mov    %ebx,0x2c(%esi)
408e49:	89 5e 30             	mov    %ebx,0x30(%esi)
408e4c:	89 5e 34             	mov    %ebx,0x34(%esi)
408e4f:	89 5e 38             	mov    %ebx,0x38(%esi)
408e52:	88 5e 10             	mov    %bl,0x10(%esi)
408e55:	5e                   	pop    %esi
408e56:	5b                   	pop    %ebx
408e57:	c3                   	ret
408e58:	ff 76 24             	push   0x24(%esi)
408e5b:	e8 3d 8e 01 00       	call   0x421c9d
408e60:	59                   	pop    %ecx
408e61:	eb d9                	jmp    0x408e3c
408e63:	ff 76 2c             	push   0x2c(%esi)
408e66:	e8 f3 66 01 00       	call   0x41f55e
408e6b:	59                   	pop    %ecx
408e6c:	eb d8                	jmp    0x408e46
408e6e:	55                   	push   %ebp
408e6f:	8b ec                	mov    %esp,%ebp
408e71:	83 ec 24             	sub    $0x24,%esp
408e74:	8b c1                	mov    %ecx,%eax
408e76:	53                   	push   %ebx
408e77:	89 55 dc             	mov    %edx,-0x24(%ebp)
408e7a:	8b 55 10             	mov    0x10(%ebp),%edx
408e7d:	56                   	push   %esi
408e7e:	8b 30                	mov    (%eax),%esi
408e80:	33 c9                	xor    %ecx,%ecx
408e82:	41                   	inc    %ecx
408e83:	c1 ea 0b             	shr    $0xb,%edx
408e86:	57                   	push   %edi
408e87:	0f b7 7e 02          	movzwl 0x2(%esi),%edi
408e8b:	23 d1                	and    %ecx,%edx
408e8d:	33 db                	xor    %ebx,%ebx
408e8f:	83 c6 04             	add    $0x4,%esi
408e92:	89 45 e0             	mov    %eax,-0x20(%ebp)
408e95:	89 4d ec             	mov    %ecx,-0x14(%ebp)
408e98:	89 55 fc             	mov    %edx,-0x4(%ebp)
408e9b:	85 d2                	test   %edx,%edx
408e9d:	74 12                	je     0x408eb1
408e9f:	8b c7                	mov    %edi,%eax
408ea1:	25 00 fc 00 00       	and    $0xfc00,%eax
408ea6:	3d 00 d8 00 00       	cmp    $0xd800,%eax
408eab:	0f 84 58 5a 07 00    	je     0x47e909
408eb1:	83 ee 02             	sub    $0x2,%esi
408eb4:	89 75 f0             	mov    %esi,-0x10(%ebp)
408eb7:	85 ff                	test   %edi,%edi
408eb9:	74 56                	je     0x408f11
408ebb:	8d 47 d0             	lea    -0x30(%edi),%eax
408ebe:	83 f8 4a             	cmp    $0x4a,%eax
408ec1:	77 2c                	ja     0x408eef
408ec3:	8d 47 d0             	lea    -0x30(%edi),%eax
408ec6:	c7 45 e8 7b 00 00 00 	movl   $0x7b,-0x18(%ebp)
408ecd:	0f bf 0c 45 88 e4 49 	movswl 0x49e488(,%eax,2),%ecx
408ed4:	00
408ed5:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
408ed8:	85 c9                	test   %ecx,%ecx
408eda:	7f 31                	jg     0x408f0d
408edc:	0f 84 48 5a 07 00    	je     0x47e92a
408ee2:	8b d9                	mov    %ecx,%ebx
408ee4:	f7 db                	neg    %ebx
408ee6:	83 fb 0c             	cmp    $0xc,%ebx
408ee9:	0f 84 40 60 07 00    	je     0x47ef2f
408eef:	f7 45 10 00 00 00 20 	testl  $0x20000000,0x10(%ebp)
408ef6:	0f 85 5e 60 07 00    	jne    0x47ef5a
408efc:	8b 45 e0             	mov    -0x20(%ebp),%eax
408eff:	89 30                	mov    %esi,(%eax)
408f01:	8b 45 dc             	mov    -0x24(%ebp),%eax
408f04:	89 38                	mov    %edi,(%eax)
408f06:	5f                   	pop    %edi
408f07:	5e                   	pop    %esi
408f08:	8b c3                	mov    %ebx,%eax
408f0a:	5b                   	pop    %ebx
408f0b:	c9                   	leave
408f0c:	c3                   	ret
408f0d:	8b f9                	mov    %ecx,%edi
408f0f:	eb de                	jmp    0x408eef
408f11:	8b 45 08             	mov    0x8(%ebp),%eax
408f14:	89 08                	mov    %ecx,(%eax)
408f16:	eb d7                	jmp    0x408eef
408f18:	55                   	push   %ebp
408f19:	8b ec                	mov    %esp,%ebp
408f1b:	83 e4 f8             	and    $0xfffffff8,%esp
408f1e:	83 ec 6c             	sub    $0x6c,%esp
408f21:	53                   	push   %ebx
408f22:	56                   	push   %esi
408f23:	57                   	push   %edi
408f24:	8b f9                	mov    %ecx,%edi
408f26:	8d 4c 24 30          	lea    0x30(%esp),%ecx
408f2a:	e8 78 97 ff ff       	call   0x4026a7
408f2f:	8b 5d 08             	mov    0x8(%ebp),%ebx
408f32:	8b 43 04             	mov    0x4(%ebx),%eax
408f35:	8b 30                	mov    (%eax),%esi
408f37:	8b ce                	mov    %esi,%ecx
408f39:	e8 2e 04 00 00       	call   0x40936c
408f3e:	8b 46 08             	mov    0x8(%esi),%eax
408f41:	89 44 24 10          	mov    %eax,0x10(%esp)
408f45:	8b 43 04             	mov    0x4(%ebx),%eax
408f48:	8b 70 04             	mov    0x4(%eax),%esi
408f4b:	8b ce                	mov    %esi,%ecx
408f4d:	e8 1a 04 00 00       	call   0x40936c
408f52:	8b 46 08             	mov    0x8(%esi),%eax
408f55:	89 44 24 18          	mov    %eax,0x18(%esp)
408f59:	8b 43 04             	mov    0x4(%ebx),%eax
408f5c:	8b 70 08             	mov    0x8(%eax),%esi
408f5f:	8b ce                	mov    %esi,%ecx
408f61:	e8 06 04 00 00       	call   0x40936c
408f66:	8b 46 08             	mov    0x8(%esi),%eax
408f69:	83 64 24 14 00       	andl   $0x0,0x14(%esp)
408f6e:	83 7b 08 04          	cmpl   $0x4,0x8(%ebx)
408f72:	89 44 24 1c          	mov    %eax,0x1c(%esp)
408f76:	0f 83 c3 39 07 00    	jae    0x47c93f
408f7c:	ff 74 24 18          	push   0x18(%esp)
408f80:	8d 4c 24 34          	lea    0x34(%esp),%ecx
408f84:	e8 f2 de ff ff       	call   0x406e7b
408f89:	8b 5c 24 10          	mov    0x10(%esp),%ebx
408f8d:	8b f0                	mov    %eax,%esi
408f8f:	53                   	push   %ebx
408f90:	85 f6                	test   %esi,%esi
408f92:	0f 85 bb 39 07 00    	jne    0x47c953
408f98:	8d 4c 24 34          	lea    0x34(%esp),%ecx
408f9c:	e8 bd de ff ff       	call   0x406e5e
408fa1:	ff 73 04             	push   0x4(%ebx)
408fa4:	8d 4c 24 24          	lea    0x24(%esp),%ecx
408fa8:	e8 62 db ff ff       	call   0x406b0f
408fad:	8d 44 24 20          	lea    0x20(%esp),%eax
408fb1:	50                   	push   %eax
408fb2:	ff 74 24 18          	push   0x18(%esp)
408fb6:	8d 4c 24 38          	lea    0x38(%esp),%ecx
408fba:	ff 74 24 24          	push   0x24(%esp)
408fbe:	e8 2d 04 00 00       	call   0x4093f0
408fc3:	8b 4d 0c             	mov    0xc(%ebp),%ecx
408fc6:	8b f0                	mov    %eax,%esi
408fc8:	8d 44 24 20          	lea    0x20(%esp),%eax