4078f2:	8b 4d 2c             	mov    0x2c(%ebp),%ecx
4078f5:	89 01                	mov    %eax,(%ecx)
4078f7:	8b 4d e0             	mov    -0x20(%ebp),%ecx
4078fa:	85 c9                	test   %ecx,%ecx
4078fc:	0f 84 9d 02 00 00    	je     0x407b9f
407902:	3b 8d 48 ff ff ff    	cmp    -0xb8(%ebp),%ecx
407908:	0f 86 9f 02 00 00    	jbe    0x407bad
40790e:	8b 45 f8             	mov    -0x8(%ebp),%eax
407911:	dd d8                	fstp   %st(0)
407913:	8b bd 48 ff ff ff    	mov    -0xb8(%ebp),%edi
407919:	2b c1                	sub    %ecx,%eax
40791b:	83 e0 fe             	and    $0xfffffffe,%eax
40791e:	50                   	push   %eax
40791f:	51                   	push   %ecx
407920:	57                   	push   %edi
407921:	e8 5a e6 01 00       	call   0x425f80
407926:	dd 05 f8 69 4b 00    	fldl   0x4b69f8
40792c:	8b 4d e0             	mov    -0x20(%ebp),%ecx
40792f:	8b 55 f8             	mov    -0x8(%ebp),%edx
407932:	2b cf                	sub    %edi,%ecx
407934:	d1 f9                	sar    $1,%ecx
407936:	83 c4 0c             	add    $0xc,%esp
407939:	f7 d9                	neg    %ecx
40793b:	89 7d e0             	mov    %edi,-0x20(%ebp)
40793e:	8b 7d fc             	mov    -0x4(%ebp),%edi
407941:	8d 14 4a             	lea    (%edx,%ecx,2),%edx
407944:	89 55 f8             	mov    %edx,-0x8(%ebp)
407947:	89 95 50 ff ff ff    	mov    %edx,-0xb0(%ebp)
40794d:	83 7d cc 00          	cmpl   $0x0,-0x34(%ebp)
407951:	0f 85 48 7c 07 00    	jne    0x47f59f
407957:	83 e3 08             	and    $0x8,%ebx
40795a:	0f 85 c6 7c 07 00    	jne    0x47f626
407960:	83 fe 2a             	cmp    $0x2a,%esi
407963:	0f 84 f4 05 00 00    	je     0x407f5d
407969:	83 fe 3f             	cmp    $0x3f,%esi
40796c:	0f 84 eb 05 00 00    	je     0x407f5d
407972:	83 fe 2b             	cmp    $0x2b,%esi
407975:	0f 84 e2 05 00 00    	je     0x407f5d
40797b:	83 fe 7b             	cmp    $0x7b,%esi
40797e:	0f 84 9b 7d 07 00    	je     0x47f71f
407984:	33 c9                	xor    %ecx,%ecx
407986:	39 8d 78 ff ff ff    	cmp    %ecx,-0x88(%ebp)
40798c:	0f 85 a5 7d 07 00    	jne    0x47f737
407992:	8b 45 f4             	mov    -0xc(%ebp),%eax
407995:	a9 00 40 00 00       	test   $0x4000,%eax
40799a:	0f 85 dd 7d 07 00    	jne    0x47f77d
4079a0:	83 fe 5f             	cmp    $0x5f,%esi
4079a3:	0f 83 a1 00 00 00    	jae    0x407a4a
4079a9:	83 fe 2f             	cmp    $0x2f,%esi
4079ac:	0f 83 df 01 00 00    	jae    0x407b91
4079b2:	83 fe 28             	cmp    $0x28,%esi
4079b5:	0f 84 fa 01 00 00    	je     0x407bb5
4079bb:	85 f6                	test   %esi,%esi
4079bd:	74 1a                	je     0x4079d9
4079bf:	8d 46 dc             	lea    -0x24(%esi),%eax
4079c2:	83 f8 58             	cmp    $0x58,%eax
4079c5:	0f 87 88 00 00 00    	ja     0x407a53
4079cb:	0f b6 80 24 88 40 00 	movzbl 0x408824(%eax),%eax
4079d2:	ff 24 85 f4 87 40 00 	jmp    *0x4087f4(,%eax,4)
4079d9:	8b 45 10             	mov    0x10(%ebp),%eax
4079dc:	dd d8                	fstp   %st(0)
4079de:	8b 4d 90             	mov    -0x70(%ebp),%ecx
4079e1:	8b 5d 2c             	mov    0x2c(%ebp),%ebx
4079e4:	89 08                	mov    %ecx,(%eax)
4079e6:	8b 45 14             	mov    0x14(%ebp),%eax
4079e9:	8b 4d d0             	mov    -0x30(%ebp),%ecx
4079ec:	89 08                	mov    %ecx,(%eax)
4079ee:	8b 45 18             	mov    0x18(%ebp),%eax
4079f1:	8b 4d a0             	mov    -0x60(%ebp),%ecx
4079f4:	89 08                	mov    %ecx,(%eax)
4079f6:	8b 45 1c             	mov    0x1c(%ebp),%eax
4079f9:	8b 4d a8             	mov    -0x58(%ebp),%ecx
4079fc:	89 08                	mov    %ecx,(%eax)
4079fe:	8b 85 ec fe ff ff    	mov    -0x114(%ebp),%eax
407a04:	89 10                	mov    %edx,(%eax)
407a06:	8b 45 08             	mov    0x8(%ebp),%eax
407a09:	89 38                	mov    %edi,(%eax)
407a0b:	85 db                	test   %ebx,%ebx
407a0d:	74 1e                	je     0x407a2d
407a0f:	2b 95 50 ff ff ff    	sub    -0xb0(%ebp),%edx
407a15:	8b 03                	mov    (%ebx),%eax
407a17:	b9 eb ff ff 7f       	mov    $0x7fffffeb,%ecx
407a1c:	d1 fa                	sar    $1,%edx
407a1e:	2b c8                	sub    %eax,%ecx
407a20:	3b ca                	cmp    %edx,%ecx
407a22:	0f 8c b3 a6 07 00    	jl     0x4820db
407a28:	8d 0c 10             	lea    (%eax,%edx,1),%ecx
407a2b:	89 0b                	mov    %ecx,(%ebx)
407a2d:	b8 01 00 00 00       	mov    $0x1,%eax
407a32:	5f                   	pop    %edi
407a33:	5e                   	pop    %esi
407a34:	5b                   	pop    %ebx
407a35:	8b e5                	mov    %ebp,%esp
407a37:	5d                   	pop    %ebp
407a38:	c3                   	ret
407a39:	8b 4d 28             	mov    0x28(%ebp),%ecx
407a3c:	39 41 20             	cmp    %eax,0x20(%ecx)
407a3f:	0f 86 08 ff ff ff    	jbe    0x40794d
407a45:	e9 cb a8 07 00       	jmp    0x482315
407a4a:	83 fe 7b             	cmp    $0x7b,%esi
407a4d:	0f 83 56 ff ff ff    	jae    0x4079a9
407a53:	dd d8                	fstp   %st(0)
407a55:	83 7d dc 00          	cmpl   $0x0,-0x24(%ebp)
407a59:	66 8b de             	mov    %si,%bx
407a5c:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
407a63:	66 89 9d f8 fe ff ff 	mov    %bx,-0x108(%ebp)
407a6a:	0f 84 54 0d 00 00    	je     0x4087c4
407a70:	81 e6 00 fc 00 00    	and    $0xfc00,%esi
407a76:	81 fe 00 d8 00 00    	cmp    $0xd800,%esi
407a7c:	0f 84 d9 93 07 00    	je     0x480e5b
407a82:	8b 75 f0             	mov    -0x10(%ebp),%esi
407a85:	83 7d dc 00          	cmpl   $0x0,-0x24(%ebp)
407a89:	8b 45 f4             	mov    -0xc(%ebp),%eax
407a8c:	89 55 e0             	mov    %edx,-0x20(%ebp)
407a8f:	74 5f                	je     0x407af0
407a91:	a8 01                	test   $0x1,%al
407a93:	0f 84 76 02 00 00    	je     0x407d0f
407a99:	0f b7 cb             	movzwl %bx,%ecx
407a9c:	8b c1                	mov    %ecx,%eax
407a9e:	25 00 fc 00 00       	and    $0xfc00,%eax
407aa3:	3d 00 d8 00 00       	cmp    $0xd800,%eax
407aa8:	0f 84 e4 93 07 00    	je     0x480e92
407aae:	8b c1                	mov    %ecx,%eax
407ab0:	99                   	cltd
407ab1:	83 e2 7f             	and    $0x7f,%edx
407ab4:	03 c2                	add    %edx,%eax
407ab6:	c1 f8 07             	sar    $0x7,%eax
407ab9:	0f b6 80 a0 c4 4a 00 	movzbl 0x4ac4a0(%eax),%eax
407ac0:	c1 e0 07             	shl    $0x7,%eax
407ac3:	81 e1 7f 00 00 80    	and    $0x8000007f,%ecx
407ac9:	79 05                	jns    0x407ad0
407acb:	49                   	dec    %ecx
407acc:	83 c9 80             	or     $0xffffff80,%ecx
407acf:	41                   	inc    %ecx
407ad0:	8b 55 f8             	mov    -0x8(%ebp),%edx
407ad3:	03 c1                	add    %ecx,%eax
407ad5:	0f b7 04 45 08 e6 49 	movzwl 0x49e608(,%eax,2),%eax
407adc:	00
407add:	0f b6 04 c5 0b b1 4a 	movzbl 0x4ab10b(,%eax,8),%eax
407ae4:	00
407ae5:	85 c0                	test   %eax,%eax
407ae7:	0f 85 f4 01 00 00    	jne    0x407ce1
407aed:	8b 45 f4             	mov    -0xc(%ebp),%eax
407af0:	a8 01                	test   $0x1,%al
407af2:	0f 84 17 02 00 00    	je     0x407d0f
407af8:	b8 1e 00 00 00       	mov    $0x1e,%eax
407afd:	66 89 02             	mov    %ax,(%edx)
407b00:	83 c2 02             	add    $0x2,%edx
407b03:	89 55 f8             	mov    %edx,-0x8(%ebp)
407b06:	85 f6                	test   %esi,%esi
407b08:	74 1c                	je     0x407b26
407b0a:	8b ce                	mov    %esi,%ecx
407b0c:	d1 e9                	shr    $1,%ecx
407b0e:	8b fa                	mov    %edx,%edi
407b10:	8d b5 f8 fe ff ff    	lea    -0x108(%ebp),%esi
407b16:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
407b18:	13 c9                	adc    %ecx,%ecx
407b1a:	66 f3 a5             	rep movsw %ds:(%esi),%es:(%edi)
407b1d:	8b 75 f0             	mov    -0x10(%ebp),%esi
407b20:	8d 14 72             	lea    (%edx,%esi,2),%edx
407b23:	89 55 f8             	mov    %edx,-0x8(%ebp)
407b26:	66 83 fb 0d          	cmp    $0xd,%bx
407b2a:	0f 84 99 93 07 00    	je     0x480ec9
407b30:	66 83 fb 0a          	cmp    $0xa,%bx
407b34:	0f 84 8f 93 07 00    	je     0x480ec9
407b3a:	8b 4d 28             	mov    0x28(%ebp),%ecx
407b3d:	8b 45 d0             	mov    -0x30(%ebp),%eax
407b40:	83 f8 fe             	cmp    $0xfffffffe,%eax
407b43:	0f 84 1e 04 00 00    	je     0x407f67
407b49:	8b 5d 90             	mov    -0x70(%ebp),%ebx
407b4c:	89 45 8c             	mov    %eax,-0x74(%ebp)
407b4f:	8b 45 a0             	mov    -0x60(%ebp),%eax
407b52:	89 45 d8             	mov    %eax,-0x28(%ebp)
407b55:	8b 45 a8             	mov    -0x58(%ebp),%eax
407b58:	89 9d 7c ff ff ff    	mov    %ebx,-0x84(%ebp)
407b5e:	89 45 98             	mov    %eax,-0x68(%ebp)
407b61:	83 fe 01             	cmp    $0x1,%esi
407b64:	0f 85 a1 93 07 00    	jne    0x480f0b
407b6a:	0f b7 42 fe          	movzwl -0x2(%edx),%eax
407b6e:	8b 7d fc             	mov    -0x4(%ebp),%edi
407b71:	89 45 a0             	mov    %eax,-0x60(%ebp)
407b74:	8b 41 68             	mov    0x68(%ecx),%eax
407b77:	0b 85 70 ff ff ff    	or     -0x90(%ebp),%eax
407b7d:	89 45 a8             	mov    %eax,-0x58(%ebp)
407b80:	8b 5d f4             	mov    -0xc(%ebp),%ebx
407b83:	8b 4d 84             	mov    -0x7c(%ebp),%ecx
407b86:	83 c7 02             	add    $0x2,%edi
407b89:	89 7d fc             	mov    %edi,-0x4(%ebp)
407b8c:	e9 02 fd ff ff       	jmp    0x407893
407b91:	83 fe 3f             	cmp    $0x3f,%esi
407b94:	0f 82 b9 fe ff ff    	jb     0x407a53
407b9a:	e9 13 fe ff ff       	jmp    0x4079b2
407b9f:	8b 95 48 ff ff ff    	mov    -0xb8(%ebp),%edx
407ba5:	89 55 f8             	mov    %edx,-0x8(%ebp)
407ba8:	e9 9a fd ff ff       	jmp    0x407947
407bad:	8b 55 f8             	mov    -0x8(%ebp),%edx
407bb0:	e9 92 fd ff ff       	jmp    0x407947
407bb5:	8b 4d 28             	mov    0x28(%ebp),%ecx
407bb8:	dd d8                	fstp   %st(0)
407bba:	83 c7 02             	add    $0x2,%edi
407bbd:	8b 51 20             	mov    0x20(%ecx),%edx
407bc0:	89 55 c0             	mov    %edx,-0x40(%ebp)
407bc3:	89 7d fc             	mov    %edi,-0x4(%ebp)
407bc6:	0f b7 17             	movzwl (%edi),%edx
407bc9:	8b d8                	mov    %eax,%ebx
407bcb:	89 5d bc             	mov    %ebx,-0x44(%ebp)
407bce:	c7 45 f0 00 00 00 00 	movl   $0x0,-0x10(%ebp)
407bd5:	be 85 00 00 00       	mov    $0x85,%esi
407bda:	c7 45 b0 00 00 00 00 	movl   $0x0,-0x50(%ebp)
407be1:	83 fa 2a             	cmp    $0x2a,%edx
407be4:	0f 84 36 93 07 00    	je     0x480f20
407bea:	83 fa 3f             	cmp    $0x3f,%edx
407bed:	0f 85 40 06 00 00    	jne    0x408233
407bf3:	83 c7 02             	add    $0x2,%edi
407bf6:	89 7d fc             	mov    %edi,-0x4(%ebp)
407bf9:	0f b7 17             	movzwl (%edi),%edx
407bfc:	8b c2                	mov    %edx,%eax
407bfe:	83 f8 53             	cmp    $0x53,%eax
407c01:	0f 8c 4a 95 07 00    	jl     0x481151
407c07:	83 f8 7c             	cmp    $0x7c,%eax
407c0a:	0f 8d 41 95 07 00    	jge    0x481151
407c10:	33 c0                	xor    %eax,%eax
407c12:	33 db                	xor    %ebx,%ebx
407c14:	89 85 20 ff ff ff    	mov    %eax,-0xe0(%ebp)
407c1a:	89 9d 08 ff ff ff    	mov    %ebx,-0xf8(%ebp)
407c20:	8d 8d 08 ff ff ff    	lea    -0xf8(%ebp),%ecx
407c26:	66 83 fa 29          	cmp    $0x29,%dx
407c2a:	74 33                	je     0x407c5f
407c2c:	8d 64 24 00          	lea    0x0(%esp),%esp
407c30:	66 83 fa 3a          	cmp    $0x3a,%dx
407c34:	74 1d                	je     0x407c53
407c36:	0f b7 c2             	movzwl %dx,%eax
407c39:	83 c7 02             	add    $0x2,%edi
407c3c:	89 7d fc             	mov    %edi,-0x4(%ebp)
407c3f:	83 f8 69             	cmp    $0x69,%eax
407c42:	0f 85 35 a2 07 00    	jne    0x481e7d
407c48:	83 09 01             	orl    $0x1,(%ecx)
407c4b:	0f b7 17             	movzwl (%edi),%edx
407c4e:	83 fa 29             	cmp    $0x29,%edx
407c51:	75 dd                	jne    0x407c30
407c53:	8b 9d 08 ff ff ff    	mov    -0xf8(%ebp),%ebx
407c59:	8b 85 20 ff ff ff    	mov    -0xe0(%ebp),%eax
407c5f:	0b 5d f4             	or     -0xc(%ebp),%ebx
407c62:	8b 55 f8             	mov    -0x8(%ebp),%edx
407c65:	f7 d0                	not    %eax
407c67:	23 d8                	and    %eax,%ebx
407c69:	66 83 3f 29          	cmpw   $0x29,(%edi)
407c6d:	0f 85 96 a2 07 00    	jne    0x481f09
407c73:	8b 4d 28             	mov    0x28(%ebp),%ecx
407c76:	8b 41 14             	mov    0x14(%ecx),%eax
407c79:	83 c0 04             	add    $0x4,%eax
407c7c:	3b d0                	cmp    %eax,%edx
407c7e:	0f 84 5e a2 07 00    	je     0x481ee2
407c84:	f7 c3 00 02 00 00    	test   $0x200,%ebx
407c8a:	0f 85 3e 0b 00 00    	jne    0x4087ce
407c90:	33 c0                	xor    %eax,%eax
407c92:	89 85 60 ff ff ff    	mov    %eax,-0xa0(%ebp)
407c98:	83 f0 01             	xor    $0x1,%eax
407c9b:	89 85 1c ff ff ff    	mov    %eax,-0xe4(%ebp)
407ca1:	f6 c3 01             	test   $0x1,%bl
407ca4:	0f 84 50 a2 07 00    	je     0x481efa
407caa:	c7 85 70 ff ff ff 01 	movl   $0x1,-0x90(%ebp)
407cb1:	00 00 00
407cb4:	8b 85 e8 fe ff ff    	mov    -0x118(%ebp),%eax
407cba:	8b 4d 84             	mov    -0x7c(%ebp),%ecx
407cbd:	83 c7 02             	add    $0x2,%edi
407cc0:	89 5d f4             	mov    %ebx,-0xc(%ebp)
407cc3:	89 18                	mov    %ebx,(%eax)
407cc5:	c7 45 e0 00 00 00 00 	movl   $0x0,-0x20(%ebp)
407ccc:	89 7d fc             	mov    %edi,-0x4(%ebp)
407ccf:	e9 bf fb ff ff       	jmp    0x407893
407cd4:	85 c9                	test   %ecx,%ecx
407cd6:	0f 84 c8 fb ff ff    	je     0x4078a4
407cdc:	e9 aa 78 07 00       	jmp    0x47f58b
407ce1:	8b 5d f4             	mov    -0xc(%ebp),%ebx
407ce4:	c7 02 10 00 09 00    	movl   $0x90010,(%edx)
407cea:	66 89 42 04          	mov    %ax,0x4(%edx)
407cee:	83 c2 06             	add    $0x6,%edx
407cf1:	83 7d d0 fe          	cmpl   $0xfffffffe,-0x30(%ebp)
407cf5:	89 55 f8             	mov    %edx,-0x8(%ebp)
407cf8:	0f 84 b5 91 07 00    	je     0x480eb3
407cfe:	8b 7d fc             	mov    -0x4(%ebp),%edi
407d01:	8b 4d 84             	mov    -0x7c(%ebp),%ecx
407d04:	83 c7 02             	add    $0x2,%edi
407d07:	89 7d fc             	mov    %edi,-0x4(%ebp)
407d0a:	e9 84 fb ff ff       	jmp    0x407893
407d0f:	b8 1d 00 00 00       	mov    $0x1d,%eax
407d14:	e9 e4 fd ff ff       	jmp    0x407afd
407d19:	6a 06                	push   $0x6
407d1b:	dd d8                	fstp   %st(0)
407d1d:	ba c8 26 4b 00       	mov    $0x4b26c8,%edx
407d22:	8d 4f 02             	lea    0x2(%edi),%ecx
407d25:	e8 c9 0b 00 00       	call   0x4088f3
407d2a:	83 c4 04             	add    $0x4,%esp
407d2d:	85 c0                	test   %eax,%eax
407d2f:	0f 84 26 7b 07 00    	je     0x47f85b
407d35:	6a 06                	push   $0x6
407d37:	ba d0 26 4b 00       	mov    $0x4b26d0,%edx
407d3c:	8d 4f 02             	lea    0x2(%edi),%ecx
407d3f:	e8 af 0b 00 00       	call   0x4088f3
407d44:	83 c4 04             	add    $0x4,%esp
407d47:	85 c0                	test   %eax,%eax
407d49:	0f 84 22 7b 07 00    	je     0x47f871
407d4f:	0f b7 47 02          	movzwl 0x2(%edi),%eax
407d53:	8b 75 f8             	mov    -0x8(%ebp),%esi
407d56:	89 75 e0             	mov    %esi,-0x20(%ebp)
407d59:	83 f8 3a             	cmp    $0x3a,%eax
407d5c:	0f 84 25 7b 07 00    	je     0x47f887
407d62:	83 f8 2e             	cmp    $0x2e,%eax
407d65:	0f 84 1c 7b 07 00    	je     0x47f887
407d6b:	83 f8 3d             	cmp    $0x3d,%eax
407d6e:	0f 84 13 7b 07 00    	je     0x47f887
407d74:	33 c0                	xor    %eax,%eax
407d76:	89 45 d4             	mov    %eax,-0x2c(%ebp)
407d79:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
407d80:	83 c7 02             	add    $0x2,%edi
407d83:	89 7d fc             	mov    %edi,-0x4(%ebp)
407d86:	0f b7 1f             	movzwl (%edi),%ebx
407d89:	83 fb 5c             	cmp    $0x5c,%ebx
407d8c:	0f 84 34 09 00 00    	je     0x4086c6
407d92:	85 c0                	test   %eax,%eax
407d94:	75 09                	jne    0x407d9f
407d96:	83 fb 5e             	cmp    $0x5e,%ebx
407d99:	0f 84 ec 09 00 00    	je     0x40878b
407d9f:	83 fb 5d             	cmp    $0x5d,%ebx
407da2:	0f 84 13 7b 07 00    	je     0x47f8bb
407da8:	33 c0                	xor    %eax,%eax
407daa:	6a 20                	push   $0x20
407dac:	50                   	push   %eax
407dad:	89 45 e4             	mov    %eax,-0x1c(%ebp)
407db0:	89 45 d8             	mov    %eax,-0x28(%ebp)
407db3:	89 45 f0             	mov    %eax,-0x10(%ebp)
407db6:	8d 85 28 ff ff ff    	lea    -0xd8(%ebp),%eax
407dbc:	50                   	push   %eax
407dbd:	e8 8e 8f 01 00       	call   0x420d50
407dc2:	8b 7d fc             	mov    -0x4(%ebp),%edi
407dc5:	83 c6 06             	add    $0x6,%esi
407dc8:	33 c0                	xor    %eax,%eax
407dca:	83 c4 0c             	add    $0xc,%esp
407dcd:	8b d6                	mov    %esi,%edx
407dcf:	89 45 b0             	mov    %eax,-0x50(%ebp)
407dd2:	89 75 e8             	mov    %esi,-0x18(%ebp)
407dd5:	89 75 a4             	mov    %esi,-0x5c(%ebp)
407dd8:	89 55 ec             	mov    %edx,-0x14(%ebp)
407ddb:	85 db                	test   %ebx,%ebx
407ddd:	0f 84 9b 81 07 00    	je     0x47ff7e
407de3:	83 7d dc 00          	cmpl   $0x0,-0x24(%ebp)
407de7:	74 12                	je     0x407dfb
407de9:	8b c3                	mov    %ebx,%eax
407deb:	25 00 fc 00 00       	and    $0xfc00,%eax