45194c:	e8 00 c2 03 00       	call   0x48db51
451951:	89 45 e4             	mov    %eax,-0x1c(%ebp)
451954:	59                   	pop    %ecx
451955:	85 c0                	test   %eax,%eax
451957:	0f 84 eb 52 fc ff    	je     0x416c48
45195d:	33 ff                	xor    %edi,%edi
45195f:	66 39 78 02          	cmp    %di,0x2(%eax)
451963:	75 52                	jne    0x4519b7
451965:	0f b7 78 fe          	movzwl -0x2(%eax),%edi
451969:	33 c9                	xor    %ecx,%ecx
45196b:	51                   	push   %ecx
45196c:	0f b7 74 78 fc       	movzwl -0x4(%eax,%edi,2),%esi
451971:	66 89 4c 78 fc       	mov    %cx,-0x4(%eax,%edi,2)
451976:	8d 8d 30 ff ff ff    	lea    -0xd0(%ebp),%ecx
45197c:	8b 53 08             	mov    0x8(%ebx),%edx
45197f:	51                   	push   %ecx
451980:	c1 ea 0b             	shr    $0xb,%edx
451983:	8b c8                	mov    %eax,%ecx
451985:	83 e2 01             	and    $0x1,%edx
451988:	6a 01                	push   $0x1
45198a:	e8 f4 c7 03 00       	call   0x48e183
45198f:	8b c8                	mov    %eax,%ecx
451991:	83 c4 0c             	add    $0xc,%esp
451994:	8b 45 e4             	mov    -0x1c(%ebp),%eax
451997:	66 89 74 78 fc       	mov    %si,-0x4(%eax,%edi,2)
45199c:	85 c9                	test   %ecx,%ecx
45199e:	78 30                	js     0x4519d0
4519a0:	3b 8d 78 ff ff ff    	cmp    -0x88(%ebp),%ecx
4519a6:	7e 06                	jle    0x4519ae
4519a8:	89 8d 78 ff ff ff    	mov    %ecx,-0x88(%ebp)
4519ae:	8b 75 fc             	mov    -0x4(%ebp),%esi
4519b1:	33 ff                	xor    %edi,%edi
4519b3:	66 89 48 02          	mov    %cx,0x2(%eax)
4519b7:	6a ff                	push   $0xffffffff
4519b9:	8d 48 04             	lea    0x4(%eax),%ecx
4519bc:	8b d6                	mov    %esi,%edx
4519be:	e8 8e c1 03 00       	call   0x48db51
4519c3:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4519c6:	59                   	pop    %ecx
4519c7:	85 c0                	test   %eax,%eax
4519c9:	75 94                	jne    0x45195f
4519cb:	8b 75 f8             	mov    -0x8(%ebp),%esi
4519ce:	eb 3a                	jmp    0x451a0a
4519d0:	83 f9 fe             	cmp    $0xfffffffe,%ecx
4519d3:	75 2d                	jne    0x451a02
4519d5:	6a 24                	push   $0x24
4519d7:	eb 02                	jmp    0x4519db
4519d9:	6a 46                	push   $0x46
4519db:	5e                   	pop    %esi
4519dc:	53                   	push   %ebx
4519dd:	ff 15 48 57 4a 00    	call   *0x4a5748
4519e3:	59                   	pop    %ecx
4519e4:	8b 45 d8             	mov    -0x28(%ebp),%eax
4519e7:	8b 4d 10             	mov    0x10(%ebp),%ecx
4519ea:	2b 45 f0             	sub    -0x10(%ebp),%eax
4519ed:	d1 f8                	sar    $1,%eax
4519ef:	89 01                	mov    %eax,(%ecx)
4519f1:	8b ce                	mov    %esi,%ecx
4519f3:	e8 6b c7 03 00       	call   0x48e163
4519f8:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4519fb:	89 01                	mov    %eax,(%ecx)
4519fd:	e9 af 53 fc ff       	jmp    0x416db1
451a02:	83 f9 fc             	cmp    $0xfffffffc,%ecx
451a05:	74 d2                	je     0x4519d9
451a07:	6a 19                	push   $0x19
451a09:	5e                   	pop    %esi
451a0a:	8b 7d e0             	mov    -0x20(%ebp),%edi
451a0d:	e9 39 52 fc ff       	jmp    0x416c4b
451a12:	8b 45 c8             	mov    -0x38(%ebp),%eax
451a15:	83 c8 10             	or     $0x10,%eax
451a18:	89 43 08             	mov    %eax,0x8(%ebx)
451a1b:	e9 9c 52 fc ff       	jmp    0x416cbc
451a20:	81 4b 0c 00 01 00 00 	orl    $0x100,0xc(%ebx)
451a27:	e9 90 52 fc ff       	jmp    0x416cbc
451a2c:	39 75 fc             	cmp    %esi,-0x4(%ebp)
451a2f:	be 80 00 00 00       	mov    $0x80,%esi
451a34:	74 5d                	je     0x451a93
451a36:	66 3b d6             	cmp    %si,%dx
451a39:	72 34                	jb     0x451a6f
451a3b:	0f b7 f2             	movzwl %dx,%esi
451a3e:	8b c6                	mov    %esi,%eax
451a40:	c1 e8 07             	shr    $0x7,%eax
451a43:	0f b6 88 40 3b 4b 00 	movzbl 0x4b3b40(%eax),%ecx
451a4a:	8b c6                	mov    %esi,%eax
451a4c:	99                   	cltd
451a4d:	f7 7d 0c             	idivl  0xc(%ebp)
451a50:	c1 e1 07             	shl    $0x7,%ecx
451a53:	03 ca                	add    %edx,%ecx
451a55:	0f b7 04 4d 40 58 4a 	movzwl 0x4a5840(,%ecx,2),%eax
451a5c:	00
451a5d:	8b 04 c5 54 2f 4a 00 	mov    0x4a2f54(,%eax,8),%eax
451a64:	03 c6                	add    %esi,%eax
451a66:	3b c6                	cmp    %esi,%eax
451a68:	be 80 00 00 00       	mov    $0x80,%esi
451a6d:	eb 10                	jmp    0x451a7f
451a6f:	8b 85 34 ff ff ff    	mov    -0xcc(%ebp),%eax
451a75:	0f b7 ca             	movzwl %dx,%ecx
451a78:	0f b6 04 01          	movzbl (%ecx,%eax,1),%eax
451a7c:	66 3b c2             	cmp    %dx,%ax
451a7f:	b9 ff 00 00 00       	mov    $0xff,%ecx
451a84:	0f 84 92 52 fc ff    	je     0x416d1c
451a8a:	83 4b 0c 20          	orl    $0x20,0xc(%ebx)
451a8e:	e9 89 52 fc ff       	jmp    0x416d1c
451a93:	b9 ff 00 00 00       	mov    $0xff,%ecx
451a98:	66 3b d1             	cmp    %cx,%dx
451a9b:	0f 87 7b 52 fc ff    	ja     0x416d1c
451aa1:	eb cc                	jmp    0x451a6f
451aa3:	0f b7 f2             	movzwl %dx,%esi
451aa6:	8b c6                	mov    %esi,%eax
451aa8:	c1 e8 07             	shr    $0x7,%eax
451aab:	0f b6 88 40 3b 4b 00 	movzbl 0x4b3b40(%eax),%ecx
451ab2:	8b c6                	mov    %esi,%eax
451ab4:	99                   	cltd
451ab5:	f7 7d 0c             	idivl  0xc(%ebp)
451ab8:	c1 e1 07             	shl    $0x7,%ecx
451abb:	03 ca                	add    %edx,%ecx
451abd:	0f b7 04 4d 40 58 4a 	movzwl 0x4a5840(,%ecx,2),%eax
451ac4:	00
451ac5:	8b 04 c5 54 2f 4a 00 	mov    0x4a2f54(,%eax,8),%eax
451acc:	03 c6                	add    %esi,%eax
451ace:	3b c6                	cmp    %esi,%eax
451ad0:	0f 84 7e 52 fc ff    	je     0x416d54
451ad6:	b8 80 00 00 00       	mov    $0x80,%eax
451adb:	09 43 0c             	or     %eax,0xc(%ebx)
451ade:	e9 71 52 fc ff       	jmp    0x416d54
451ae3:	ff d0                	call   *%eax
451ae5:	85 c0                	test   %eax,%eax
451ae7:	0f 84 09 53 fc ff    	je     0x416df6
451aed:	8b 45 0c             	mov    0xc(%ebp),%eax
451af0:	c7 00 55 00 00 00    	movl   $0x55,(%eax)
451af6:	e9 8a 00 00 00       	jmp    0x451b85
451afb:	66 89 16             	mov    %dx,(%esi)
451afe:	33 c0                	xor    %eax,%eax
451b00:	83 c6 02             	add    $0x2,%esi
451b03:	89 74 24 4c          	mov    %esi,0x4c(%esp)
451b07:	66 89 06             	mov    %ax,(%esi)
451b0a:	83 c6 02             	add    $0x2,%esi
451b0d:	83 c1 02             	add    $0x2,%ecx
451b10:	89 74 24 1c          	mov    %esi,0x1c(%esp)
451b14:	89 4c 24 10          	mov    %ecx,0x10(%esp)
451b18:	e9 5d 53 fc ff       	jmp    0x416e7a
451b1d:	33 c9                	xor    %ecx,%ecx
451b1f:	c1 ea 0b             	shr    $0xb,%edx
451b22:	51                   	push   %ecx
451b23:	33 db                	xor    %ebx,%ebx
451b25:	66 89 0e             	mov    %cx,(%esi)
451b28:	57                   	push   %edi
451b29:	43                   	inc    %ebx
451b2a:	51                   	push   %ecx
451b2b:	23 d3                	and    %ebx,%edx
451b2d:	8b c8                	mov    %eax,%ecx
451b2f:	e8 4f c6 03 00       	call   0x48e183
451b34:	8b c8                	mov    %eax,%ecx
451b36:	83 c4 0c             	add    $0xc,%esp
451b39:	83 f9 fd             	cmp    $0xfffffffd,%ecx
451b3c:	75 08                	jne    0x451b46
451b3e:	89 5f 74             	mov    %ebx,0x74(%edi)
451b41:	e9 d4 53 fc ff       	jmp    0x416f1a
451b46:	85 c9                	test   %ecx,%ecx
451b48:	78 14                	js     0x451b5e
451b4a:	3b 4f 48             	cmp    0x48(%edi),%ecx
451b4d:	7e 03                	jle    0x451b52
451b4f:	89 4f 48             	mov    %ecx,0x48(%edi)
451b52:	8b 44 24 4c          	mov    0x4c(%esp),%eax
451b56:	66 89 08             	mov    %cx,(%eax)
451b59:	e9 bc 53 fc ff       	jmp    0x416f1a
451b5e:	83 f9 fe             	cmp    $0xfffffffe,%ecx
451b61:	75 05                	jne    0x451b68
451b63:	6a 24                	push   $0x24
451b65:	58                   	pop    %eax
451b66:	eb 0f                	jmp    0x451b77
451b68:	33 c0                	xor    %eax,%eax
451b6a:	83 f9 fc             	cmp    $0xfffffffc,%ecx
451b6d:	0f 95 c0             	setne  %al
451b70:	48                   	dec    %eax
451b71:	83 e0 2d             	and    $0x2d,%eax
451b74:	83 c0 19             	add    $0x19,%eax
451b77:	8b 4d 0c             	mov    0xc(%ebp),%ecx
451b7a:	89 01                	mov    %eax,(%ecx)
451b7c:	8b 4d 08             	mov    0x8(%ebp),%ecx
451b7f:	8b 44 24 28          	mov    0x28(%esp),%eax
451b83:	89 01                	mov    %eax,(%ecx)
451b85:	33 c0                	xor    %eax,%eax
451b87:	e9 41 54 fc ff       	jmp    0x416fcd
451b8c:	ff 74 24 60          	push   0x60(%esp)
451b90:	33 c0                	xor    %eax,%eax
451b92:	66 89 06             	mov    %ax,(%esi)
451b95:	8b 44 24 24          	mov    0x24(%esp),%eax
451b99:	c1 e8 0b             	shr    $0xb,%eax
451b9c:	57                   	push   %edi
451b9d:	83 e0 01             	and    $0x1,%eax
451ba0:	50                   	push   %eax
451ba1:	6a 02                	push   $0x2
451ba3:	5a                   	pop    %edx
451ba4:	e8 f8 6a fc ff       	call   0x4186a1
451ba9:	8b 4c 24 48          	mov    0x48(%esp),%ecx
451bad:	83 c4 0c             	add    $0xc,%esp
451bb0:	8b c6                	mov    %esi,%eax
451bb2:	2b c1                	sub    %ecx,%eax
451bb4:	83 e0 fe             	and    $0xfffffffe,%eax
451bb7:	50                   	push   %eax
451bb8:	51                   	push   %ecx
451bb9:	8d 41 04             	lea    0x4(%ecx),%eax
451bbc:	50                   	push   %eax
451bbd:	e8 5e 64 fd ff       	call   0x428020
451bc2:	8b 4c 24 48          	mov    0x48(%esp),%ecx
451bc6:	b8 81 00 00 00       	mov    $0x81,%eax
451bcb:	83 c4 0c             	add    $0xc,%esp
451bce:	66 89 01             	mov    %ax,(%ecx)
451bd1:	8d 46 04             	lea    0x4(%esi),%eax
451bd4:	2b c1                	sub    %ecx,%eax
451bd6:	8b 4c 24 64          	mov    0x64(%esp),%ecx
451bda:	d1 f8                	sar    $1,%eax
451bdc:	6a 78                	push   $0x78
451bde:	66 89 01             	mov    %ax,(%ecx)
451be1:	59                   	pop    %ecx
451be2:	66 89 4e 04          	mov    %cx,0x4(%esi)
451be6:	8b 4c 24 10          	mov    0x10(%esp),%ecx
451bea:	66 89 46 06          	mov    %ax,0x6(%esi)
451bee:	83 c6 08             	add    $0x8,%esi
451bf1:	83 c1 04             	add    $0x4,%ecx
451bf4:	e9 44 54 fc ff       	jmp    0x41703d
451bf9:	8b 45 0c             	mov    0xc(%ebp),%eax
451bfc:	c7 00 14 00 00 00    	movl   $0x14,(%eax)
451c02:	eb 81                	jmp    0x451b85
451c04:	8b f0                	mov    %eax,%esi
451c06:	33 c0                	xor    %eax,%eax
451c08:	89 75 fc             	mov    %esi,-0x4(%ebp)
451c0b:	89 45 a0             	mov    %eax,-0x60(%ebp)
451c0e:	0f b7 3e             	movzwl (%esi),%edi
451c11:	89 7d e8             	mov    %edi,-0x18(%ebp)
451c14:	e9 a9 56 fc ff       	jmp    0x4172c2
451c19:	85 ff                	test   %edi,%edi
451c1b:	0f 84 31 57 fc ff    	je     0x417352
451c21:	6a 5c                	push   $0x5c
451c23:	58                   	pop    %eax
451c24:	3b f8                	cmp    %eax,%edi
451c26:	75 19                	jne    0x451c41
451c28:	6a 45                	push   $0x45
451c2a:	59                   	pop    %ecx
451c2b:	66 39 4e 02          	cmp    %cx,0x2(%esi)
451c2f:	8b 4d 28             	mov    0x28(%ebp),%ecx
451c32:	75 0d                	jne    0x451c41
451c34:	33 c9                	xor    %ecx,%ecx
451c36:	83 c6 02             	add    $0x2,%esi
451c39:	89 4d d0             	mov    %ecx,-0x30(%ebp)
451c3c:	e9 dd 58 fc ff       	jmp    0x41751e
451c41:	8b 45 88             	mov    -0x78(%ebp),%eax
451c44:	85 c0                	test   %eax,%eax
451c46:	74 1b                	je     0x451c63
451c48:	83 7d 2c 00          	cmpl   $0x0,0x2c(%ebp)
451c4c:	75 10                	jne    0x451c5e
451c4e:	2b 71 18             	sub    0x18(%ecx),%esi
451c51:	d1 fe                	sar    $1,%esi
451c53:	66 2b 70 04          	sub    0x4(%eax),%si
451c57:	66 89 70 06          	mov    %si,0x6(%eax)
451c5b:	8b 75 fc             	mov    -0x4(%ebp),%esi
451c5e:	33 c0                	xor    %eax,%eax
451c60:	89 45 88             	mov    %eax,-0x78(%ebp)
451c63:	f7 45 cc 00 40 00 00 	testl  $0x4000,-0x34(%ebp)
451c6a:	0f 84 8b 57 fc ff    	je     0x4173fb
451c70:	6a 76                	push   $0x76
451c72:	58                   	pop    %eax
451c73:	66 89 02             	mov    %ax,(%edx)
451c76:	8d 42 02             	lea    0x2(%edx),%eax
451c79:	89 55 88             	mov    %edx,-0x78(%ebp)
451c7c:	ba ff 00 00 00       	mov    $0xff,%edx
451c81:	66 89 10             	mov    %dx,(%eax)
451c84:	2b 71 18             	sub    0x18(%ecx),%esi
451c87:	33 c9                	xor    %ecx,%ecx
451c89:	6a 02                	push   $0x2
451c8b:	5a                   	pop    %edx
451c8c:	03 c2                	add    %edx,%eax
451c8e:	d1 fe                	sar    $1,%esi
451c90:	66 89 30             	mov    %si,(%eax)
451c93:	66 89 48 02          	mov    %cx,0x2(%eax)
451c97:	83 c0 04             	add    $0x4,%eax
451c9a:	8b 75 fc             	mov    -0x4(%ebp),%esi
451c9d:	89 45 f8             	mov    %eax,-0x8(%ebp)
451ca0:	e9 56 57 fc ff       	jmp    0x4173fb
451ca5:	3b fb                	cmp    %ebx,%edi
451ca7:	77 1b                	ja     0x451cc4
451ca9:	8b 41 0c             	mov    0xc(%ecx),%eax
451cac:	6a 02                	push   $0x2
451cae:	5a                   	pop    %edx
451caf:	f6 04 38 01          	testb  $0x1,(%eax,%edi,1)
451cb3:	74 0c                	je     0x451cc1
451cb5:	03 f2                	add    %edx,%esi
451cb7:	89 75 fc             	mov    %esi,-0x4(%ebp)
451cba:	0f b7 3e             	movzwl (%esi),%edi
451cbd:	3b fb                	cmp    %ebx,%edi
451cbf:	76 ee                	jbe    0x451caf
451cc1:	89 7d e8             	mov    %edi,-0x18(%ebp)
451cc4:	6a 23                	push   $0x23
451cc6:	58                   	pop    %eax
451cc7:	3b f8                	cmp    %eax,%edi
451cc9:	0f 85 ac 00 00 00    	jne    0x451d7b
451ccf:	6a 02                	push   $0x2
451cd1:	5a                   	pop    %edx
451cd2:	e9 91 00 00 00       	jmp    0x451d68
451cd7:	8b 91 80 00 00 00    	mov    0x80(%ecx),%edx
451cdd:	85 d2                	test   %edx,%edx
451cdf:	74 34                	je     0x451d15
451ce1:	3b 71 1c             	cmp    0x1c(%ecx),%esi
451ce4:	73 5f                	jae    0x451d45
451ce6:	ff 75 c4             	push   -0x3c(%ebp)
451ce9:	8d 81 84 00 00 00    	lea    0x84(%ecx),%eax
451cef:	50                   	push   %eax
451cf0:	ff 71 1c             	push   0x1c(%ecx)
451cf3:	8b ce                	mov    %esi,%ecx
451cf5:	e8 a5 41 fc ff       	call   0x415e9f
451cfa:	8b 4d 28             	mov    0x28(%ebp),%ecx
451cfd:	83 c4 0c             	add    $0xc,%esp
451d00:	85 c0                	test   %eax,%eax
451d02:	74 41                	je     0x451d45
451d04:	8b 81 84 00 00 00    	mov    0x84(%ecx),%eax
451d0a:	8d 34 46             	lea    (%esi,%eax,2),%esi
451d0d:	89 75 fc             	mov    %esi,-0x4(%ebp)
451d10:	0f b7 3e             	movzwl (%esi),%edi
451d13:	eb 90                	jmp    0x451ca5
451d15:	8b 91 84 00 00 00    	mov    0x84(%ecx),%edx
451d1b:	8b 49 1c             	mov    0x1c(%ecx),%ecx
451d1e:	8d 04 12             	lea    (%edx,%edx,1),%eax
451d21:	2b c8                	sub    %eax,%ecx
451d23:	3b f1                	cmp    %ecx,%esi
451d25:	8b 4d 28             	mov    0x28(%ebp),%ecx
451d28:	77 1b                	ja     0x451d45
451d2a:	66 3b b9 88 00 00 00 	cmp    0x88(%ecx),%di
451d31:	75 12                	jne    0x451d45
451d33:	3b 55 f4             	cmp    -0xc(%ebp),%edx
451d36:	74 cc                	je     0x451d04
451d38:	66 8b 46 02          	mov    0x2(%esi),%ax
451d3c:	66 3b 81 8a 00 00 00 	cmp    0x8a(%ecx),%ax
451d43:	74 bf                	je     0x451d04
451d45:	6a 02                	push   $0x2
451d47:	5a                   	pop    %edx
451d48:	03 f2                	add    %edx,%esi
451d4a:	83 7d c4 00          	cmpl   $0x0,-0x3c(%ebp)
451d4e:	89 75 fc             	mov    %esi,-0x4(%ebp)
451d51:	74 1a                	je     0x451d6d
451d53:	66 8b 06             	mov    (%esi),%ax
451d56:	bf 00 fc 00 00       	mov    $0xfc00,%edi
451d5b:	66 23 c7             	and    %di,%ax
451d5e:	bf 00 dc 00 00       	mov    $0xdc00,%edi
451d63:	66 3b c7             	cmp    %di,%ax
451d66:	75 05                	jne    0x451d6d
451d68:	03 f2                	add    %edx,%esi
451d6a:	89 75 fc             	mov    %esi,-0x4(%ebp)
451d6d:	0f b7 3e             	movzwl (%esi),%edi
451d70:	66 85 ff             	test   %di,%di