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
451d73:	0f 85 5e ff ff ff    	jne    0x451cd7
451d79:	eb 95                	jmp    0x451d10
451d7b:	8b 5d 98             	mov    -0x68(%ebp),%ebx
451d7e:	8b 55 cc             	mov    -0x34(%ebp),%edx
451d81:	89 7d e8             	mov    %edi,-0x18(%ebp)
451d84:	e9 da 55 fc ff       	jmp    0x417363
451d89:	8d 4e 02             	lea    0x2(%esi),%ecx
451d8c:	e8 ce c8 03 00       	call   0x48e65f
451d91:	8b 55 cc             	mov    -0x34(%ebp),%edx
451d94:	85 c0                	test   %eax,%eax
451d96:	0f 85 e1 5a fc ff    	jne    0x41787d
451d9c:	e9 ee 55 fc ff       	jmp    0x41738f
451da1:	85 c0                	test   %eax,%eax
451da3:	0f 85 f6 55 fc ff    	jne    0x41739f
451da9:	8b 85 64 ff ff ff    	mov    -0x9c(%ebp),%eax
451daf:	ff 8d 64 ff ff ff    	decl   -0x9c(%ebp)
451db5:	85 c0                	test   %eax,%eax
451db7:	0f 8f c3 5a fc ff    	jg     0x417880
451dbd:	39 4d 2c             	cmp    %ecx,0x2c(%ebp)
451dc0:	75 16                	jne    0x451dd8
451dc2:	8b 45 28             	mov    0x28(%ebp),%eax
451dc5:	2b 70 18             	sub    0x18(%eax),%esi
451dc8:	8b 45 88             	mov    -0x78(%ebp),%eax
451dcb:	d1 fe                	sar    $1,%esi
451dcd:	66 2b 70 04          	sub    0x4(%eax),%si
451dd1:	66 89 70 06          	mov    %si,0x6(%eax)
451dd5:	8b 75 fc             	mov    -0x4(%ebp),%esi
451dd8:	33 c0                	xor    %eax,%eax
451dda:	89 45 88             	mov    %eax,-0x78(%ebp)
451ddd:	e9 9e 5a fc ff       	jmp    0x417880
451de2:	85 c9                	test   %ecx,%ecx
451de4:	0f 85 c1 55 fc ff    	jne    0x4173ab
451dea:	85 c0                	test   %eax,%eax
451dec:	0f 85 b9 55 fc ff    	jne    0x4173ab
451df2:	8b 45 f8             	mov    -0x8(%ebp),%eax
451df5:	6a 76                	push   $0x76
451df7:	5a                   	pop    %edx
451df8:	89 45 88             	mov    %eax,-0x78(%ebp)
451dfb:	66 89 10             	mov    %dx,(%eax)
451dfe:	83 c0 02             	add    $0x2,%eax
451e01:	ba ff 00 00 00       	mov    $0xff,%edx
451e06:	6a 02                	push   $0x2
451e08:	66 89 10             	mov    %dx,(%eax)
451e0b:	5a                   	pop    %edx
451e0c:	03 c2                	add    %edx,%eax
451e0e:	8b 55 28             	mov    0x28(%ebp),%edx
451e11:	2b 72 18             	sub    0x18(%edx),%esi
451e14:	d1 fe                	sar    $1,%esi
451e16:	33 d2                	xor    %edx,%edx
451e18:	66 89 50 02          	mov    %dx,0x2(%eax)
451e1c:	8d 50 04             	lea    0x4(%eax),%edx
451e1f:	66 89 30             	mov    %si,(%eax)
451e22:	8b 75 fc             	mov    -0x4(%ebp),%esi
451e25:	89 55 f8             	mov    %edx,-0x8(%ebp)
451e28:	e9 81 55 fc ff       	jmp    0x4173ae
451e2d:	6a 04                	push   $0x4
451e2f:	58                   	pop    %eax
451e30:	03 f0                	add    %eax,%esi
451e32:	89 75 fc             	mov    %esi,-0x4(%ebp)
451e35:	0f b7 06             	movzwl (%esi),%eax
451e38:	66 85 c0             	test   %ax,%ax
451e3b:	74 1a                	je     0x451e57
451e3d:	6a 29                	push   $0x29
451e3f:	5a                   	pop    %edx
451e40:	66 3b c2             	cmp    %dx,%ax
451e43:	74 0d                	je     0x451e52
451e45:	03 f3                	add    %ebx,%esi
451e47:	89 75 fc             	mov    %esi,-0x4(%ebp)
451e4a:	0f b7 06             	movzwl (%esi),%eax
451e4d:	66 85 c0             	test   %ax,%ax
451e50:	75 ee                	jne    0x451e40
451e52:	66 39 0e             	cmp    %cx,(%esi)
451e55:	75 23                	jne    0x451e7a
451e57:	8b 45 0c             	mov    0xc(%ebp),%eax
451e5a:	c7 00 12 00 00 00    	movl   $0x12,(%eax)
451e60:	e9 4d 28 00 00       	jmp    0x4546b2
451e65:	8b 45 fc             	mov    -0x4(%ebp),%eax
451e68:	8b 34 bd cc 85 4b 00 	mov    0x4b85cc(,%edi,4),%esi
451e6f:	83 c0 02             	add    $0x2,%eax
451e72:	6a 02                	push   $0x2
451e74:	5a                   	pop    %edx
451e75:	89 45 a0             	mov    %eax,-0x60(%ebp)
451e78:	2b f2                	sub    %edx,%esi
451e7a:	8b 5d f0             	mov    -0x10(%ebp),%ebx
451e7d:	e9 99 56 fc ff       	jmp    0x41751b
451e82:	8d 5e 02             	lea    0x2(%esi),%ebx
451e85:	0f b7 03             	movzwl (%ebx),%eax
451e88:	6a 3a                	push   $0x3a
451e8a:	5f                   	pop    %edi
451e8b:	89 5d 98             	mov    %ebx,-0x68(%ebp)
451e8e:	66 3b c7             	cmp    %di,%ax
451e91:	74 22                	je     0x451eb5
451e93:	bf ff 00 00 00       	mov    $0xff,%edi
451e98:	66 3b c7             	cmp    %di,%ax
451e9b:	0f 87 6d 5a fc ff    	ja     0x41790e
451ea1:	8b c8                	mov    %eax,%ecx
451ea3:	8b 45 28             	mov    0x28(%ebp),%eax
451ea6:	8b 40 0c             	mov    0xc(%eax),%eax
451ea9:	f6 04 01 02          	testb  $0x2,(%ecx,%eax,1)
451ead:	0f 84 04 02 00 00    	je     0x4520b7
451eb3:	33 c9                	xor    %ecx,%ecx
451eb5:	8b f3                	mov    %ebx,%esi
451eb7:	89 4d ec             	mov    %ecx,-0x14(%ebp)
451eba:	89 75 fc             	mov    %esi,-0x4(%ebp)
451ebd:	bf ff 00 00 00       	mov    $0xff,%edi
451ec2:	ba 00 78 4b 00       	mov    $0x4b7800,%edx
451ec7:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
451eca:	89 55 dc             	mov    %edx,-0x24(%ebp)
451ecd:	0f b7 06             	movzwl (%esi),%eax
451ed0:	89 4d f0             	mov    %ecx,-0x10(%ebp)
451ed3:	66 3b c7             	cmp    %di,%ax
451ed6:	77 22                	ja     0x451efa
451ed8:	8b 4d 28             	mov    0x28(%ebp),%ecx
451edb:	6a 02                	push   $0x2
451edd:	5a                   	pop    %edx
451ede:	8b 49 0c             	mov    0xc(%ecx),%ecx
451ee1:	0f b7 c0             	movzwl %ax,%eax
451ee4:	f6 04 08 02          	testb  $0x2,(%eax,%ecx,1)
451ee8:	74 0d                	je     0x451ef7
451eea:	03 f2                	add    %edx,%esi
451eec:	89 75 fc             	mov    %esi,-0x4(%ebp)
451eef:	0f b7 06             	movzwl (%esi),%eax
451ef2:	66 3b c7             	cmp    %di,%ax
451ef5:	76 ea                	jbe    0x451ee1
451ef7:	8b 55 dc             	mov    -0x24(%ebp),%edx
451efa:	8b c6                	mov    %esi,%eax
451efc:	2b c3                	sub    %ebx,%eax
451efe:	6a 3a                	push   $0x3a
451f00:	d1 f8                	sar    $1,%eax
451f02:	59                   	pop    %ecx
451f03:	89 45 c8             	mov    %eax,-0x38(%ebp)
451f06:	66 39 0e             	cmp    %cx,(%esi)
451f09:	75 42                	jne    0x451f4d
451f0b:	6a 02                	push   $0x2
451f0d:	59                   	pop    %ecx
451f0e:	03 f1                	add    %ecx,%esi
451f10:	89 75 fc             	mov    %esi,-0x4(%ebp)
451f13:	8b fe                	mov    %esi,%edi
451f15:	89 7d e4             	mov    %edi,-0x1c(%ebp)
451f18:	0f b7 06             	movzwl (%esi),%eax
451f1b:	66 85 c0             	test   %ax,%ax
451f1e:	74 15                	je     0x451f35
451f20:	6a 29                	push   $0x29
451f22:	5b                   	pop    %ebx
451f23:	66 3b c3             	cmp    %bx,%ax
451f26:	74 0d                	je     0x451f35
451f28:	03 f1                	add    %ecx,%esi
451f2a:	89 75 fc             	mov    %esi,-0x4(%ebp)
451f2d:	0f b7 06             	movzwl (%esi),%eax
451f30:	66 85 c0             	test   %ax,%ax
451f33:	75 ee                	jne    0x451f23
451f35:	8b ce                	mov    %esi,%ecx
451f37:	2b cf                	sub    %edi,%ecx
451f39:	d1 f9                	sar    $1,%ecx
451f3b:	89 4d ec             	mov    %ecx,-0x14(%ebp)
451f3e:	81 f9 ff ff 00 00    	cmp    $0xffff,%ecx
451f44:	0f 87 0f 26 00 00    	ja     0x454559
451f4a:	8b 45 c8             	mov    -0x38(%ebp),%eax
451f4d:	6a 29                	push   $0x29
451f4f:	59                   	pop    %ecx
451f50:	66 39 0e             	cmp    %cx,(%esi)
451f53:	0f 85 57 01 00 00    	jne    0x4520b0
451f59:	33 c9                	xor    %ecx,%ecx
451f5b:	bb 30 77 4b 00       	mov    $0x4b7730,%ebx
451f60:	89 4d e8             	mov    %ecx,-0x18(%ebp)
451f63:	8b 3b                	mov    (%ebx),%edi
451f65:	3b c7                	cmp    %edi,%eax
451f67:	75 17                	jne    0x451f80
451f69:	8b 4d 98             	mov    -0x68(%ebp),%ecx
451f6c:	50                   	push   %eax
451f6d:	e8 23 64 fc ff       	call   0x418395
451f72:	59                   	pop    %ecx
451f73:	85 c0                	test   %eax,%eax
451f75:	74 23                	je     0x451f9a
451f77:	8b 45 c8             	mov    -0x38(%ebp),%eax