489aa5:	53                   	push   %ebx
489aa6:	52                   	push   %edx
489aa7:	ff 75 08             	push   0x8(%ebp)
489aaa:	8d 57 04             	lea    0x4(%edi),%edx
489aad:	e8 4e 08 f8 ff       	call   0x40a300
489ab2:	83 c4 14             	add    $0x14,%esp
489ab5:	85 c0                	test   %eax,%eax
489ab7:	0f 85 0a 0a f8 ff    	jne    0x40a4c7
489abd:	89 b3 b8 00 00 00    	mov    %esi,0xb8(%ebx)
489ac3:	b8 1b fc ff ff       	mov    $0xfffffc1b,%eax
489ac8:	e9 fa 09 f8 ff       	jmp    0x40a4c7
489acd:	8b 45 f8             	mov    -0x8(%ebp),%eax
489ad0:	89 83 84 00 00 00    	mov    %eax,0x84(%ebx)
489ad6:	8b 45 0c             	mov    0xc(%ebp),%eax
489ad9:	89 83 90 00 00 00    	mov    %eax,0x90(%ebx)
489adf:	8b 45 08             	mov    0x8(%ebp),%eax
489ae2:	89 83 80 00 00 00    	mov    %eax,0x80(%ebx)
489ae8:	e9 d5 09 f8 ff       	jmp    0x40a4c2
489aed:	3b 8b 88 00 00 00    	cmp    0x88(%ebx),%ecx
489af3:	0f 86 7b 0a f8 ff    	jbe    0x40a574
489af9:	c7 43 68 01 00 00 00 	movl   $0x1,0x68(%ebx)
489b00:	83 bb 8c 00 00 00 01 	cmpl   $0x1,0x8c(%ebx)
489b07:	0f 8e 67 0a f8 ff    	jle    0x40a574
489b0d:	b8 f4 ff ff ff       	mov    $0xfffffff4,%eax
489b12:	e9 b0 09 f8 ff       	jmp    0x40a4c7
489b17:	b8 f2 ff ff ff       	mov    $0xfffffff2,%eax
489b1c:	e9 a6 09 f8 ff       	jmp    0x40a4c7
489b21:	83 f8 fe             	cmp    $0xfffffffe,%eax
489b24:	75 03                	jne    0x489b29
489b26:	8b 73 7c             	mov    0x7c(%ebx),%esi
489b29:	83 bb 8c 00 00 00 00 	cmpl   $0x0,0x8c(%ebx)
489b30:	0f 84 3e 0a f8 ff    	je     0x40a574
489b36:	3b 73 7c             	cmp    0x7c(%ebx),%esi
489b39:	0f 82 35 0a f8 ff    	jb     0x40a574
489b3f:	3b b3 88 00 00 00    	cmp    0x88(%ebx),%esi
489b45:	eb ac                	jmp    0x489af3
489b47:	89 45 f4             	mov    %eax,-0xc(%ebp)
489b4a:	3b ca                	cmp    %edx,%ecx
489b4c:	7c 05                	jl     0x489b53
489b4e:	eb 69                	jmp    0x489bb9
489b50:	8b 45 f8             	mov    -0x8(%ebp),%eax
489b53:	ff 75 d8             	push   -0x28(%ebp)
489b56:	8b 4d c0             	mov    -0x40(%ebp),%ecx
489b59:	53                   	push   %ebx
489b5a:	56                   	push   %esi
489b5b:	8b d0                	mov    %eax,%edx
489b5d:	e8 5f 75 fe ff       	call   0x4710c1
489b62:	83 c4 0c             	add    $0xc,%esp
489b65:	85 c0                	test   %eax,%eax
489b67:	78 17                	js     0x489b80
489b69:	8b 4d f8             	mov    -0x8(%ebp),%ecx
489b6c:	8d 0c 41             	lea    (%ecx,%eax,2),%ecx
489b6f:	8b 45 e0             	mov    -0x20(%ebp),%eax
489b72:	40                   	inc    %eax
489b73:	89 4d f8             	mov    %ecx,-0x8(%ebp)
489b76:	89 45 e0             	mov    %eax,-0x20(%ebp)
489b79:	3b 45 e8             	cmp    -0x18(%ebp),%eax
489b7c:	7c d2                	jl     0x489b50
489b7e:	eb 30                	jmp    0x489bb0
489b80:	83 f8 fe             	cmp    $0xfffffffe,%eax
489b83:	75 28                	jne    0x489bad
489b85:	83 bb 8c 00 00 00 00 	cmpl   $0x0,0x8c(%ebx)
489b8c:	74 1f                	je     0x489bad
489b8e:	8b 43 7c             	mov    0x7c(%ebx),%eax
489b91:	3b 83 88 00 00 00    	cmp    0x88(%ebx),%eax
489b97:	76 14                	jbe    0x489bad
489b99:	c7 43 68 01 00 00 00 	movl   $0x1,0x68(%ebx)
489ba0:	83 bb 8c 00 00 00 01 	cmpl   $0x1,0x8c(%ebx)
489ba7:	0f 8f 80 a5 ff ff    	jg     0x48412d
489bad:	8b 4d f8             	mov    -0x8(%ebp),%ecx
489bb0:	3b 4d f4             	cmp    -0xc(%ebp),%ecx
489bb3:	0f 82 bb 09 f8 ff    	jb     0x40a574
489bb9:	8b 45 18             	mov    0x18(%ebp),%eax
489bbc:	8b 4d f8             	mov    -0x8(%ebp),%ecx
489bbf:	40                   	inc    %eax
489bc0:	50                   	push   %eax
489bc1:	ff 75 14             	push   0x14(%ebp)
489bc4:	8b d7                	mov    %edi,%edx
489bc6:	53                   	push   %ebx
489bc7:	ff 75 0c             	push   0xc(%ebp)
489bca:	ff 75 08             	push   0x8(%ebp)
489bcd:	e8 2e 07 f8 ff       	call   0x40a300
489bd2:	83 c4 14             	add    $0x14,%esp
489bd5:	85 c0                	test   %eax,%eax
489bd7:	0f 85 ea 08 f8 ff    	jne    0x40a4c7
489bdd:	8b 55 f8             	mov    -0x8(%ebp),%edx
489be0:	8b c6                	mov    %esi,%eax
489be2:	f7 d8                	neg    %eax
489be4:	8d 14 42             	lea    (%edx,%eax,2),%edx
489be7:	89 55 f8             	mov    %edx,-0x8(%ebp)
489bea:	3b 55 f4             	cmp    -0xc(%ebp),%edx
489bed:	73 ca                	jae    0x489bb9
489bef:	33 c0                	xor    %eax,%eax
489bf1:	e9 d1 08 f8 ff       	jmp    0x40a4c7
489bf6:	83 f9 fe             	cmp    $0xfffffffe,%ecx
489bf9:	75 05                	jne    0x489c00
489bfb:	8b 43 7c             	mov    0x7c(%ebx),%eax
489bfe:	eb 03                	jmp    0x489c03
489c00:	8b 45 f8             	mov    -0x8(%ebp),%eax
489c03:	83 bb 8c 00 00 00 00 	cmpl   $0x0,0x8c(%ebx)
489c0a:	0f 84 64 09 f8 ff    	je     0x40a574
489c10:	3b 43 7c             	cmp    0x7c(%ebx),%eax
489c13:	0f 82 5b 09 f8 ff    	jb     0x40a574
489c19:	3b 83 88 00 00 00    	cmp    0x88(%ebx),%eax
489c1f:	e9 cf fe ff ff       	jmp    0x489af3
489c24:	8b c6                	mov    %esi,%eax
489c26:	83 ee 02             	sub    $0x2,%esi
489c29:	3b 45 dc             	cmp    -0x24(%ebp),%eax
489c2c:	0f 84 42 09 f8 ff    	je     0x40a574
489c32:	66 8b 06             	mov    (%esi),%ax
489c35:	b9 00 fc 00 00       	mov    $0xfc00,%ecx
489c3a:	66 23 c1             	and    %cx,%ax
489c3d:	b9 00 dc 00 00       	mov    $0xdc00,%ecx
489c42:	66 3b c1             	cmp    %cx,%ax
489c45:	75 03                	jne    0x489c4a
489c47:	83 ee 02             	sub    $0x2,%esi
489c4a:	8b 45 18             	mov    0x18(%ebp),%eax
489c4d:	40                   	inc    %eax
489c4e:	50                   	push   %eax
489c4f:	ff 75 14             	push   0x14(%ebp)
489c52:	8b d7                	mov    %edi,%edx
489c54:	53                   	push   %ebx
489c55:	ff 75 0c             	push   0xc(%ebp)
489c58:	8b ce                	mov    %esi,%ecx
489c5a:	ff 75 08             	push   0x8(%ebp)
489c5d:	e8 9e 06 f8 ff       	call   0x40a300
489c62:	83 c4 14             	add    $0x14,%esp
489c65:	85 c0                	test   %eax,%eax
489c67:	74 bb                	je     0x489c24
489c69:	e9 59 08 f8 ff       	jmp    0x40a4c7
489c6e:	8b 45 18             	mov    0x18(%ebp),%eax
489c71:	40                   	inc    %eax
489c72:	50                   	push   %eax
489c73:	ff 75 14             	push   0x14(%ebp)
489c76:	85 c9                	test   %ecx,%ecx
489c78:	8b 4d f8             	mov    -0x8(%ebp),%ecx
489c7b:	53                   	push   %ebx
489c7c:	ff 75 0c             	push   0xc(%ebp)
489c7f:	8b d7                	mov    %edi,%edx
489c81:	ff 75 08             	push   0x8(%ebp)
489c84:	0f 84 e5 00 00 00    	je     0x489d6f
489c8a:	e8 71 06 f8 ff       	call   0x40a300
489c8f:	83 c4 14             	add    $0x14,%esp
489c92:	85 c0                	test   %eax,%eax
489c94:	0f 85 2d 08 f8 ff    	jne    0x40a4c7
489c9a:	8b 55 d8             	mov    -0x28(%ebp),%edx
489c9d:	3b 55 e8             	cmp    -0x18(%ebp),%edx
489ca0:	0f 8d ce 08 f8 ff    	jge    0x40a574
489ca6:	8b 4d f8             	mov    -0x8(%ebp),%ecx
489ca9:	3b 4b 7c             	cmp    0x7c(%ebx),%ecx
489cac:	0f 83 a5 00 00 00    	jae    0x489d57
489cb2:	0f b7 01             	movzwl (%ecx),%eax
489cb5:	89 45 e0             	mov    %eax,-0x20(%ebp)
489cb8:	83 c1 02             	add    $0x2,%ecx
489cbb:	25 00 fc 00 00       	and    $0xfc00,%eax
489cc0:	89 4d f8             	mov    %ecx,-0x8(%ebp)
489cc3:	3d 00 d8 00 00       	cmp    $0xd800,%eax
489cc8:	75 29                	jne    0x489cf3
489cca:	0f b7 01             	movzwl (%ecx),%eax
489ccd:	8b 5d e0             	mov    -0x20(%ebp),%ebx
489cd0:	81 e3 ff 03 00 00    	and    $0x3ff,%ebx
489cd6:	25 ff 03 00 00       	and    $0x3ff,%eax
489cdb:	c1 e3 0a             	shl    $0xa,%ebx
489cde:	0b c3                	or     %ebx,%eax
489ce0:	8b 5d 10             	mov    0x10(%ebp),%ebx
489ce3:	05 00 00 01 00       	add    $0x10000,%eax
489ce8:	83 c1 02             	add    $0x2,%ecx
489ceb:	89 45 e0             	mov    %eax,-0x20(%ebp)
489cee:	89 4d f8             	mov    %ecx,-0x8(%ebp)
489cf1:	eb 03                	jmp    0x489cf6
489cf3:	8b 45 e0             	mov    -0x20(%ebp),%eax
489cf6:	3d ff 00 00 00       	cmp    $0xff,%eax
489cfb:	76 0b                	jbe    0x489d08
489cfd:	83 fe 6e             	cmp    $0x6e,%esi
489d00:	0f 84 6e 08 f8 ff    	je     0x40a574
489d06:	eb 25                	jmp    0x489d2d
489d08:	c1 6d e0 03          	shrl   $0x3,-0x20(%ebp)
489d0c:	8b 5d e0             	mov    -0x20(%ebp),%ebx
489d0f:	8b c8                	mov    %eax,%ecx
489d11:	83 e1 07             	and    $0x7,%ecx
489d14:	b8 01 00 00 00       	mov    $0x1,%eax
489d19:	d3 e0                	shl    %cl,%eax
489d1b:	8b 4d c8             	mov    -0x38(%ebp),%ecx
489d1e:	84 04 0b             	test   %al,(%ebx,%ecx,1)
489d21:	8b 5d 10             	mov    0x10(%ebp),%ebx
489d24:	0f 84 4a 08 f8 ff    	je     0x40a574
489d2a:	8b 4d f8             	mov    -0x8(%ebp),%ecx
489d2d:	8b 45 18             	mov    0x18(%ebp),%eax
489d30:	40                   	inc    %eax
489d31:	50                   	push   %eax
489d32:	ff 75 14             	push   0x14(%ebp)
489d35:	42                   	inc    %edx
489d36:	53                   	push   %ebx
489d37:	ff 75 0c             	push   0xc(%ebp)
489d3a:	89 55 d8             	mov    %edx,-0x28(%ebp)
489d3d:	ff 75 08             	push   0x8(%ebp)
489d40:	8b d7                	mov    %edi,%edx
489d42:	e8 b9 05 f8 ff       	call   0x40a300
489d47:	83 c4 14             	add    $0x14,%esp
489d4a:	85 c0                	test   %eax,%eax
489d4c:	0f 84 48 ff ff ff    	je     0x489c9a
489d52:	e9 70 07 f8 ff       	jmp    0x40a4c7
489d57:	83 bb 8c 00 00 00 00 	cmpl   $0x0,0x8c(%ebx)
489d5e:	0f 84 10 08 f8 ff    	je     0x40a574
489d64:	3b 8b 88 00 00 00    	cmp    0x88(%ebx),%ecx
489d6a:	e9 84 fd ff ff       	jmp    0x489af3
489d6f:	e8 8c 05 f8 ff       	call   0x40a300
489d74:	83 c4 14             	add    $0x14,%esp
489d77:	85 c0                	test   %eax,%eax
489d79:	0f 85 48 07 f8 ff    	jne    0x40a4c7
489d7f:	8b 55 d8             	mov    -0x28(%ebp),%edx
489d82:	3b 55 e8             	cmp    -0x18(%ebp),%edx
489d85:	0f 8d e9 07 f8 ff    	jge    0x40a574
489d8b:	8b 45 f8             	mov    -0x8(%ebp),%eax
489d8e:	3b 43 7c             	cmp    0x7c(%ebx),%eax
489d91:	0f 83 0e 0e f8 ff    	jae    0x40aba5
489d97:	0f b7 08             	movzwl (%eax),%ecx
489d9a:	83 c0 02             	add    $0x2,%eax
489d9d:	89 4d ec             	mov    %ecx,-0x14(%ebp)
489da0:	89 45 f8             	mov    %eax,-0x8(%ebp)
489da3:	81 f9 ff 00 00 00    	cmp    $0xff,%ecx
489da9:	76 0b                	jbe    0x489db6
489dab:	83 fe 6e             	cmp    $0x6e,%esi
489dae:	0f 84 c0 07 f8 ff    	je     0x40a574
489db4:	eb 20                	jmp    0x489dd6
489db6:	c1 6d ec 03          	shrl   $0x3,-0x14(%ebp)
489dba:	8b 5d ec             	mov    -0x14(%ebp),%ebx
489dbd:	83 e1 07             	and    $0x7,%ecx
489dc0:	b8 01 00 00 00       	mov    $0x1,%eax
489dc5:	d3 e0                	shl    %cl,%eax
489dc7:	8b 4d c8             	mov    -0x38(%ebp),%ecx
489dca:	84 04 0b             	test   %al,(%ebx,%ecx,1)
489dcd:	8b 5d 10             	mov    0x10(%ebp),%ebx
489dd0:	0f 84 9e 07 f8 ff    	je     0x40a574
489dd6:	8b 45 18             	mov    0x18(%ebp),%eax
489dd9:	8b 4d f8             	mov    -0x8(%ebp),%ecx
489ddc:	40                   	inc    %eax
489ddd:	50                   	push   %eax
489dde:	ff 75 14             	push   0x14(%ebp)
489de1:	42                   	inc    %edx
489de2:	53                   	push   %ebx
489de3:	ff 75 0c             	push   0xc(%ebp)
489de6:	89 55 d8             	mov    %edx,-0x28(%ebp)
489de9:	ff 75 08             	push   0x8(%ebp)
489dec:	8b d7                	mov    %edi,%edx
489dee:	e8 0d 05 f8 ff       	call   0x40a300
489df3:	83 c4 14             	add    $0x14,%esp
489df6:	85 c0                	test   %eax,%eax
489df8:	74 85                	je     0x489d7f
489dfa:	e9 c8 06 f8 ff       	jmp    0x40a4c7
489dff:	8b 45 18             	mov    0x18(%ebp),%eax
489e02:	40                   	inc    %eax
489e03:	50                   	push   %eax
489e04:	ff 75 14             	push   0x14(%ebp)
489e07:	8b d7                	mov    %edi,%edx
489e09:	53                   	push   %ebx
489e0a:	ff 75 0c             	push   0xc(%ebp)
489e0d:	8b ce                	mov    %esi,%ecx
489e0f:	ff 75 08             	push   0x8(%ebp)
489e12:	e8 e9 04 f8 ff       	call   0x40a300
489e17:	83 c4 14             	add    $0x14,%esp
489e1a:	85 c0                	test   %eax,%eax
489e1c:	0f 85 a5 06 f8 ff    	jne    0x40a4c7
489e22:	8b 45 e0             	mov    -0x20(%ebp),%eax
489e25:	39 45 d8             	cmp    %eax,-0x28(%ebp)
489e28:	0f 8d 46 07 f8 ff    	jge    0x40a574
489e2e:	3b 73 7c             	cmp    0x7c(%ebx),%esi
489e31:	73 7f                	jae    0x489eb2
489e33:	0f b7 16             	movzwl (%esi),%edx
489e36:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
489e39:	83 c6 02             	add    $0x2,%esi
489e3c:	89 55 f4             	mov    %edx,-0xc(%ebp)
489e3f:	85 c9                	test   %ecx,%ecx
489e41:	74 2b                	je     0x489e6e
489e43:	8b c2                	mov    %edx,%eax
489e45:	25 00 fc 00 00       	and    $0xfc00,%eax
489e4a:	3d 00 d8 00 00       	cmp    $0xd800,%eax
489e4f:	75 1d                	jne    0x489e6e
489e51:	0f b7 06             	movzwl (%esi),%eax
489e54:	81 e2 ff 03 00 00    	and    $0x3ff,%edx
489e5a:	25 ff 03 00 00       	and    $0x3ff,%eax
489e5f:	c1 e2 0a             	shl    $0xa,%edx
489e62:	0b c2                	or     %edx,%eax
489e64:	05 00 00 01 00       	add    $0x10000,%eax
489e69:	83 c6 02             	add    $0x2,%esi
489e6c:	eb 03                	jmp    0x489e71
489e6e:	8b 45 f4             	mov    -0xc(%ebp),%eax
489e71:	8b 55 ec             	mov    -0x14(%ebp),%edx
489e74:	51                   	push   %ecx
489e75:	8b c8                	mov    %eax,%ecx
489e77:	e8 99 75 fe ff       	call   0x471415
489e7c:	83 c4 04             	add    $0x4,%esp
489e7f:	85 c0                	test   %eax,%eax
489e81:	0f 84 ed 06 f8 ff    	je     0x40a574
489e87:	8b 45 18             	mov    0x18(%ebp),%eax
489e8a:	ff 45 d8             	incl   -0x28(%ebp)
489e8d:	40                   	inc    %eax
489e8e:	50                   	push   %eax
489e8f:	ff 75 14             	push   0x14(%ebp)
489e92:	8b d7                	mov    %edi,%edx
489e94:	53                   	push   %ebx
489e95:	ff 75 0c             	push   0xc(%ebp)
489e98:	8b ce                	mov    %esi,%ecx
489e9a:	ff 75 08             	push   0x8(%ebp)
489e9d:	e8 5e 04 f8 ff       	call   0x40a300
489ea2:	83 c4 14             	add    $0x14,%esp
489ea5:	85 c0                	test   %eax,%eax
489ea7:	0f 84 75 ff ff ff    	je     0x489e22
489ead:	e9 15 06 f8 ff       	jmp    0x40a4c7
489eb2:	83 bb 8c 00 00 00 00 	cmpl   $0x0,0x8c(%ebx)
489eb9:	0f 84 b5 06 f8 ff    	je     0x40a574
489ebf:	3b b3 88 00 00 00    	cmp    0x88(%ebx),%esi
489ec5:	e9 29 fc ff ff       	jmp    0x489af3
489eca:	83 bb 8c 00 00 00 00 	cmpl   $0x0,0x8c(%ebx)
489ed1:	0f 84 9d 06 f8 ff    	je     0x40a574
489ed7:	3b 53 7c             	cmp    0x7c(%ebx),%edx
489eda:	0f 82 94 06 f8 ff    	jb     0x40a574
489ee0:	3b 93 88 00 00 00    	cmp    0x88(%ebx),%edx
489ee6:	e9 08 fc ff ff       	jmp    0x489af3
489eeb:	39 93 8c 00 00 00    	cmp    %edx,0x8c(%ebx)
489ef1:	0f 84 7d 06 f8 ff    	je     0x40a574
489ef7:	3b 8b 88 00 00 00    	cmp    0x88(%ebx),%ecx
489efd:	e9 f1 fb ff ff       	jmp    0x489af3
489f02:	8b 4d f8             	mov    -0x8(%ebp),%ecx
489f05:	83 bb 8c 00 00 00 00 	cmpl   $0x0,0x8c(%ebx)
489f0c:	0f 84 62 06 f8 ff    	je     0x40a574
489f12:	3b 4b 7c             	cmp    0x7c(%ebx),%ecx
489f15:	0f 82 59 06 f8 ff    	jb     0x40a574
489f1b:	e9 cd fb ff ff       	jmp    0x489aed
489f20:	8b 45 18             	mov    0x18(%ebp),%eax
489f23:	8b 75 f8             	mov    -0x8(%ebp),%esi
489f26:	40                   	inc    %eax
489f27:	50                   	push   %eax
489f28:	ff 75 14             	push   0x14(%ebp)
489f2b:	8b d7                	mov    %edi,%edx
489f2d:	53                   	push   %ebx
489f2e:	ff 75 0c             	push   0xc(%ebp)
489f31:	8b ce                	mov    %esi,%ecx
489f33:	ff 75 08             	push   0x8(%ebp)
489f36:	e8 c5 03 f8 ff       	call   0x40a300
489f3b:	83 c4 14             	add    $0x14,%esp
489f3e:	85 c0                	test   %eax,%eax
489f40:	0f 85 81 05 f8 ff    	jne    0x40a4c7
489f46:	8b 55 f0             	mov    -0x10(%ebp),%edx
489f49:	8d 0c 12             	lea    (%edx,%edx,1),%ecx
489f4c:	89 4d f4             	mov    %ecx,-0xc(%ebp)
489f4f:	8b 45 e8             	mov    -0x18(%ebp),%eax
489f52:	39 45 d8             	cmp    %eax,-0x28(%ebp)
489f55:	0f 8d 19 06 f8 ff    	jge    0x40a574
489f5b:	8b 43 7c             	mov    0x7c(%ebx),%eax