489838:	0b d0                	or     %eax,%edx
48983a:	81 c2 00 00 01 00    	add    $0x10000,%edx
489840:	89 55 ec             	mov    %edx,-0x14(%ebp)
489843:	8b c2                	mov    %edx,%eax
489845:	99                   	cltd
489846:	83 e2 7f             	and    $0x7f,%edx
489849:	03 c2                	add    %edx,%eax
48984b:	8b 55 ec             	mov    -0x14(%ebp),%edx
48984e:	c1 f8 07             	sar    $0x7,%eax
489851:	0f b6 80 a0 c4 4a 00 	movzbl 0x4ac4a0(%eax),%eax
489858:	c1 e0 07             	shl    $0x7,%eax
48985b:	81 e2 7f 00 00 80    	and    $0x8000007f,%edx
489861:	79 05                	jns    0x489868
489863:	4a                   	dec    %edx
489864:	83 ca 80             	or     $0xffffff80,%edx
489867:	42                   	inc    %edx
489868:	03 c2                	add    %edx,%eax
48986a:	0f b7 04 45 08 e6 49 	movzwl 0x49e608(,%eax,2),%eax
489871:	00
489872:	0f b6 04 c5 0a b1 4a 	movzbl 0x4ab10a(,%eax,8),%eax
489879:	00
48987a:	89 45 d4             	mov    %eax,-0x2c(%ebp)
48987d:	3b 4d c8             	cmp    -0x38(%ebp),%ecx
489880:	0f 84 4b 0b f8 ff    	je     0x40a3d1
489886:	8d 51 fe             	lea    -0x2(%ecx),%edx
489889:	89 55 f4             	mov    %edx,-0xc(%ebp)
48988c:	85 f6                	test   %esi,%esi
48988e:	75 05                	jne    0x489895
489890:	0f b7 0a             	movzwl (%edx),%ecx
489893:	eb 46                	jmp    0x4898db
489895:	66 8b 02             	mov    (%edx),%ax
489898:	b9 00 fc 00 00       	mov    $0xfc00,%ecx
48989d:	66 23 c1             	and    %cx,%ax
4898a0:	b9 00 dc 00 00       	mov    $0xdc00,%ecx
4898a5:	66 3b c1             	cmp    %cx,%ax
4898a8:	75 06                	jne    0x4898b0
4898aa:	83 ea 02             	sub    $0x2,%edx
4898ad:	89 55 f4             	mov    %edx,-0xc(%ebp)
4898b0:	0f b7 0a             	movzwl (%edx),%ecx
4898b3:	8b c1                	mov    %ecx,%eax
4898b5:	25 00 fc 00 00       	and    $0xfc00,%eax
4898ba:	3d 00 d8 00 00       	cmp    $0xd800,%eax
4898bf:	75 1a                	jne    0x4898db
4898c1:	0f b7 42 02          	movzwl 0x2(%edx),%eax
4898c5:	81 e1 ff 03 00 00    	and    $0x3ff,%ecx
4898cb:	25 ff 03 00 00       	and    $0x3ff,%eax
4898d0:	c1 e1 0a             	shl    $0xa,%ecx
4898d3:	0b c8                	or     %eax,%ecx
4898d5:	81 c1 00 00 01 00    	add    $0x10000,%ecx
4898db:	8b c1                	mov    %ecx,%eax
4898dd:	99                   	cltd
4898de:	83 e2 7f             	and    $0x7f,%edx
4898e1:	03 c2                	add    %edx,%eax
4898e3:	c1 f8 07             	sar    $0x7,%eax
4898e6:	0f b6 80 a0 c4 4a 00 	movzbl 0x4ac4a0(%eax),%eax
4898ed:	c1 e0 07             	shl    $0x7,%eax
4898f0:	81 e1 7f 00 00 80    	and    $0x8000007f,%ecx
4898f6:	79 05                	jns    0x4898fd
4898f8:	49                   	dec    %ecx
4898f9:	83 c9 80             	or     $0xffffff80,%ecx
4898fc:	41                   	inc    %ecx
4898fd:	03 c1                	add    %ecx,%eax
4898ff:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
489902:	0f b7 04 45 08 e6 49 	movzwl 0x49e608(,%eax,2),%eax
489909:	00
48990a:	0f b6 14 c5 0a b1 4a 	movzbl 0x4ab10a(,%eax,8),%edx
489911:	00
489912:	b8 01 00 00 00       	mov    $0x1,%eax
489917:	d3 e0                	shl    %cl,%eax
489919:	85 04 95 2c e5 49 00 	test   %eax,0x49e52c(,%edx,4)
489920:	74 0e                	je     0x489930
489922:	8b 4d f4             	mov    -0xc(%ebp),%ecx
489925:	89 4d f8             	mov    %ecx,-0x8(%ebp)
489928:	89 55 d4             	mov    %edx,-0x2c(%ebp)
48992b:	e9 4d ff ff ff       	jmp    0x48987d
489930:	8b 4d f8             	mov    -0x8(%ebp),%ecx
489933:	e9 2c ef ff ff       	jmp    0x488864
489938:	c7 83 9c 00 00 00 02 	movl   $0x2,0x9c(%ebx)
48993f:	00 00 00
489942:	e9 0f 13 f8 ff       	jmp    0x40ac56
489947:	0f b7 4f 02          	movzwl 0x2(%edi),%ecx
48994b:	8d 04 4f             	lea    (%edi,%ecx,2),%eax
48994e:	39 83 80 00 00 00    	cmp    %eax,0x80(%ebx)
489954:	0f 83 70 1c 00 00    	jae    0x48b5ca
48995a:	66 83 3f 77          	cmpw   $0x77,(%edi)
48995e:	0f 84 41 13 f8 ff    	je     0x40aca5
489964:	66 83 38 77          	cmpw   $0x77,(%eax)
489968:	0f 85 5c 1c 00 00    	jne    0x48b5ca
48996e:	e9 32 13 f8 ff       	jmp    0x40aca5
489973:	8b 45 18             	mov    0x18(%ebp),%eax
489976:	40                   	inc    %eax
489977:	50                   	push   %eax
489978:	0f b7 07             	movzwl (%edi),%eax
48997b:	ff 75 14             	push   0x14(%ebp)
48997e:	0f b6 88 60 e5 49 00 	movzbl 0x49e560(%eax),%ecx
489985:	0f b7 47 02          	movzwl 0x2(%edi),%eax
489989:	53                   	push   %ebx
48998a:	ff 75 0c             	push   0xc(%ebp)
48998d:	03 c8                	add    %eax,%ecx
48998f:	ff 75 08             	push   0x8(%ebp)
489992:	8d 14 4f             	lea    (%edi,%ecx,2),%edx
489995:	8b 4d f8             	mov    -0x8(%ebp),%ecx
489998:	e8 63 09 f8 ff       	call   0x40a300
48999d:	83 c4 14             	add    $0x14,%esp
4899a0:	85 c0                	test   %eax,%eax
4899a2:	0f 85 1f 0b f8 ff    	jne    0x40a4c7
4899a8:	8d 47 04             	lea    0x4(%edi),%eax
4899ab:	89 83 80 00 00 00    	mov    %eax,0x80(%ebx)
4899b1:	b8 1f fc ff ff       	mov    $0xfffffc1f,%eax
4899b6:	e9 0c 0b f8 ff       	jmp    0x40a4c7
4899bb:	8b 45 a4             	mov    -0x5c(%ebp),%eax
4899be:	89 83 a8 00 00 00    	mov    %eax,0xa8(%ebx)
4899c4:	8b 45 ac             	mov    -0x54(%ebp),%eax
4899c7:	8d 8d ac fe ff ff    	lea    -0x154(%ebp),%ecx
4899cd:	3b c1                	cmp    %ecx,%eax
4899cf:	0f 84 9f 0b f8 ff    	je     0x40a574
4899d5:	50                   	push   %eax
4899d6:	ff 15 0c b8 4b 00    	call   *0x4bb80c
4899dc:	83 c4 04             	add    $0x4,%esp
4899df:	e9 90 0b f8 ff       	jmp    0x40a574
4899e4:	8b 4d ac             	mov    -0x54(%ebp),%ecx
4899e7:	8d 95 ac fe ff ff    	lea    -0x154(%ebp),%edx
4899ed:	3b ca                	cmp    %edx,%ecx
4899ef:	0f 84 d2 0a f8 ff    	je     0x40a4c7
4899f5:	51                   	push   %ecx
4899f6:	ff 15 0c b8 4b 00    	call   *0x4bb80c
4899fc:	8b 45 f4             	mov    -0xc(%ebp),%eax
4899ff:	83 c4 04             	add    $0x4,%esp
489a02:	e9 c0 0a f8 ff       	jmp    0x40a4c7
489a07:	b8 fa ff ff ff       	mov    $0xfffffffa,%eax
489a0c:	e9 b6 0a f8 ff       	jmp    0x40a4c7
489a11:	8b 45 18             	mov    0x18(%ebp),%eax
489a14:	40                   	inc    %eax
489a15:	50                   	push   %eax
489a16:	ff 75 14             	push   0x14(%ebp)
489a19:	8b d7                	mov    %edi,%edx
489a1b:	53                   	push   %ebx
489a1c:	ff 75 0c             	push   0xc(%ebp)
489a1f:	8b ce                	mov    %esi,%ecx
489a21:	ff 75 08             	push   0x8(%ebp)
489a24:	e8 d7 08 f8 ff       	call   0x40a300
489a29:	83 c4 14             	add    $0x14,%esp
489a2c:	85 c0                	test   %eax,%eax
489a2e:	0f 85 93 0a f8 ff    	jne    0x40a4c7
489a34:	89 bb b8 00 00 00    	mov    %edi,0xb8(%ebx)
489a3a:	b8 1b fc ff ff       	mov    $0xfffffc1b,%eax
489a3f:	e9 83 0a f8 ff       	jmp    0x40a4c7
489a44:	8b 45 18             	mov    0x18(%ebp),%eax
489a47:	40                   	inc    %eax
489a48:	50                   	push   %eax
489a49:	ff 75 14             	push   0x14(%ebp)
489a4c:	8d 57 04             	lea    0x4(%edi),%edx
489a4f:	53                   	push   %ebx
489a50:	ff 75 0c             	push   0xc(%ebp)
489a53:	8b ce                	mov    %esi,%ecx
489a55:	ff 75 08             	push   0x8(%ebp)
489a58:	e8 a3 08 f8 ff       	call   0x40a300
489a5d:	83 c4 14             	add    $0x14,%esp
489a60:	85 c0                	test   %eax,%eax
489a62:	0f 85 5f 0a f8 ff    	jne    0x40a4c7
489a68:	8b 45 e0             	mov    -0x20(%ebp),%eax
489a6b:	89 83 b8 00 00 00    	mov    %eax,0xb8(%ebx)
489a71:	b8 1b fc ff ff       	mov    $0xfffffc1b,%eax
489a76:	e9 4c 0a f8 ff       	jmp    0x40a4c7
489a7b:	8b 75 08             	mov    0x8(%ebp),%esi
489a7e:	89 b3 80 00 00 00    	mov    %esi,0x80(%ebx)
489a84:	89 83 84 00 00 00    	mov    %eax,0x84(%ebx)
489a8a:	89 93 90 00 00 00    	mov    %edx,0x90(%ebx)
489a90:	b8 1a fc ff ff       	mov    $0xfffffc1a,%eax
489a95:	e9 2d 0a f8 ff       	jmp    0x40a4c7
489a9a:	8b 45 18             	mov    0x18(%ebp),%eax
489a9d:	8b 4d f8             	mov    -0x8(%ebp),%ecx
489aa0:	40                   	inc    %eax
489aa1:	50                   	push   %eax
489aa2:	ff 75 14             	push   0x14(%ebp)
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