472c68:	e8 8b 70 f9 ff       	call   0x409cf8
472c6d:	51                   	push   %ecx
472c6e:	51                   	push   %ecx
472c6f:	dd 1c 24             	fstpl  (%esp)
472c72:	e8 39 38 fb ff       	call   0x4264b0
472c77:	8b 75 0c             	mov    0xc(%ebp),%esi
472c7a:	83 c4 08             	add    $0x8,%esp
472c7d:	8b ce                	mov    %esi,%ecx
472c7f:	dd 5d f8             	fstpl  -0x8(%ebp)
472c82:	e8 99 6d f9 ff       	call   0x409a20
472c87:	dd 45 f8             	fldl   -0x8(%ebp)
472c8a:	33 c0                	xor    %eax,%eax
472c8c:	dd 1e                	fstpl  (%esi)
472c8e:	c7 46 0c 03 00 00 00 	movl   $0x3,0xc(%esi)
472c95:	5e                   	pop    %esi
472c96:	8b e5                	mov    %ebp,%esp
472c98:	5d                   	pop    %ebp
472c99:	c2 08 00             	ret    $0x8
472c9c:	55                   	push   %ebp
472c9d:	8b ec                	mov    %esp,%ebp
472c9f:	8b 45 08             	mov    0x8(%ebp),%eax
472ca2:	53                   	push   %ebx
472ca3:	56                   	push   %esi
472ca4:	57                   	push   %edi
472ca5:	8b 40 04             	mov    0x4(%eax),%eax
472ca8:	8b 30                	mov    (%eax),%esi
472caa:	8b ce                	mov    %esi,%ecx
472cac:	e8 e6 6c f9 ff       	call   0x409997
472cb1:	8b 46 08             	mov    0x8(%esi),%eax
472cb4:	8d 4d 08             	lea    0x8(%ebp),%ecx
472cb7:	83 ca ff             	or     $0xffffffff,%edx
472cba:	8b 00                	mov    (%eax),%eax
472cbc:	66 8b 00             	mov    (%eax),%ax
472cbf:	66 89 45 08          	mov    %ax,0x8(%ebp)
472cc3:	33 c0                	xor    %eax,%eax
472cc5:	66 89 45 0a          	mov    %ax,0xa(%ebp)
472cc9:	e8 5b 2e ff ff       	call   0x465b29
472cce:	8b 75 0c             	mov    0xc(%ebp),%esi
472cd1:	8b d8                	mov    %eax,%ebx
472cd3:	8b ce                	mov    %esi,%ecx
472cd5:	0f b6 3b             	movzbl (%ebx),%edi
472cd8:	e8 43 6d f9 ff       	call   0x409a20
472cdd:	53                   	push   %ebx
472cde:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
472ce5:	89 3e                	mov    %edi,(%esi)
472ce7:	e8 80 e3 fa ff       	call   0x42106c
472cec:	59                   	pop    %ecx
472ced:	5f                   	pop    %edi
472cee:	5e                   	pop    %esi
472cef:	33 c0                	xor    %eax,%eax
472cf1:	5b                   	pop    %ebx
472cf2:	5d                   	pop    %ebp
472cf3:	c2 08 00             	ret    $0x8
472cf6:	55                   	push   %ebp
472cf7:	8b ec                	mov    %esp,%ebp
472cf9:	8b 45 08             	mov    0x8(%ebp),%eax
472cfc:	56                   	push   %esi
472cfd:	57                   	push   %edi
472cfe:	8b 40 04             	mov    0x4(%eax),%eax
472d01:	8b 30                	mov    (%eax),%esi
472d03:	8b ce                	mov    %esi,%ecx
472d05:	e8 8d 6c f9 ff       	call   0x409997
472d0a:	8b 46 08             	mov    0x8(%esi),%eax
472d0d:	8b 75 0c             	mov    0xc(%ebp),%esi
472d10:	8b ce                	mov    %esi,%ecx
472d12:	8b 00                	mov    (%eax),%eax
472d14:	0f b7 38             	movzwl (%eax),%edi
472d17:	e8 04 6d f9 ff       	call   0x409a20
472d1c:	89 3e                	mov    %edi,(%esi)
472d1e:	33 c0                	xor    %eax,%eax
472d20:	5f                   	pop    %edi
472d21:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
472d28:	5e                   	pop    %esi
472d29:	5d                   	pop    %ebp
472d2a:	c2 08 00             	ret    $0x8
472d2d:	55                   	push   %ebp
472d2e:	8b ec                	mov    %esp,%ebp
472d30:	8b 45 08             	mov    0x8(%ebp),%eax
472d33:	8b 4d 0c             	mov    0xc(%ebp),%ecx
472d36:	8b 40 04             	mov    0x4(%eax),%eax
472d39:	ff 30                	push   (%eax)
472d3b:	e8 5c 71 f9 ff       	call   0x409e9c
472d40:	8b 4d 0c             	mov    0xc(%ebp),%ecx
472d43:	e8 f5 4c ff ff       	call   0x467a3d
472d48:	33 c0                	xor    %eax,%eax
472d4a:	5d                   	pop    %ebp
472d4b:	c2 08 00             	ret    $0x8
472d4e:	55                   	push   %ebp
472d4f:	8b ec                	mov    %esp,%ebp
472d51:	53                   	push   %ebx
472d52:	8b 5d 08             	mov    0x8(%ebp),%ebx
472d55:	56                   	push   %esi
472d56:	57                   	push   %edi
472d57:	8b 43 08             	mov    0x8(%ebx),%eax
472d5a:	89 45 08             	mov    %eax,0x8(%ebp)
472d5d:	8b 43 04             	mov    0x4(%ebx),%eax
472d60:	8b 08                	mov    (%eax),%ecx
472d62:	e8 35 6f f9 ff       	call   0x409c9c
472d67:	33 f6                	xor    %esi,%esi
472d69:	8b f8                	mov    %eax,%edi
472d6b:	46                   	inc    %esi
472d6c:	39 75 08             	cmp    %esi,0x8(%ebp)
472d6f:	76 13                	jbe    0x472d84
472d71:	8b 4b 04             	mov    0x4(%ebx),%ecx
472d74:	8b 0c b1             	mov    (%ecx,%esi,4),%ecx
472d77:	e8 20 6f f9 ff       	call   0x409c9c
472d7c:	23 f8                	and    %eax,%edi
472d7e:	46                   	inc    %esi
472d7f:	3b 75 08             	cmp    0x8(%ebp),%esi
472d82:	72 ed                	jb     0x472d71
472d84:	8b 75 0c             	mov    0xc(%ebp),%esi
472d87:	8b ce                	mov    %esi,%ecx
472d89:	e8 92 6c f9 ff       	call   0x409a20
472d8e:	89 3e                	mov    %edi,(%esi)
472d90:	33 c0                	xor    %eax,%eax
472d92:	5f                   	pop    %edi
472d93:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
472d9a:	5e                   	pop    %esi
472d9b:	5b                   	pop    %ebx
472d9c:	5d                   	pop    %ebp
472d9d:	c2 08 00             	ret    $0x8
472da0:	55                   	push   %ebp
472da1:	8b ec                	mov    %esp,%ebp
472da3:	8b 45 08             	mov    0x8(%ebp),%eax
472da6:	56                   	push   %esi
472da7:	57                   	push   %edi
472da8:	8b 40 04             	mov    0x4(%eax),%eax
472dab:	8b 08                	mov    (%eax),%ecx
472dad:	e8 ea 6e f9 ff       	call   0x409c9c
472db2:	8b 75 0c             	mov    0xc(%ebp),%esi
472db5:	8b f8                	mov    %eax,%edi
472db7:	8b ce                	mov    %esi,%ecx
472db9:	f7 d7                	not    %edi
472dbb:	e8 60 6c f9 ff       	call   0x409a20
472dc0:	89 3e                	mov    %edi,(%esi)
472dc2:	33 c0                	xor    %eax,%eax
472dc4:	5f                   	pop    %edi
472dc5:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
472dcc:	5e                   	pop    %esi
472dcd:	5d                   	pop    %ebp
472dce:	c2 08 00             	ret    $0x8
472dd1:	55                   	push   %ebp
472dd2:	8b ec                	mov    %esp,%ebp
472dd4:	53                   	push   %ebx
472dd5:	8b 5d 08             	mov    0x8(%ebp),%ebx
472dd8:	56                   	push   %esi
472dd9:	57                   	push   %edi
472dda:	8b 43 08             	mov    0x8(%ebx),%eax
472ddd:	89 45 08             	mov    %eax,0x8(%ebp)
472de0:	8b 43 04             	mov    0x4(%ebx),%eax
472de3:	8b 08                	mov    (%eax),%ecx
472de5:	e8 b2 6e f9 ff       	call   0x409c9c
472dea:	33 f6                	xor    %esi,%esi
472dec:	8b f8                	mov    %eax,%edi
472dee:	46                   	inc    %esi
472def:	39 75 08             	cmp    %esi,0x8(%ebp)
472df2:	76 13                	jbe    0x472e07
472df4:	8b 4b 04             	mov    0x4(%ebx),%ecx
472df7:	8b 0c b1             	mov    (%ecx,%esi,4),%ecx
472dfa:	e8 9d 6e f9 ff       	call   0x409c9c
472dff:	0b f8                	or     %eax,%edi
472e01:	46                   	inc    %esi
472e02:	3b 75 08             	cmp    0x8(%ebp),%esi
472e05:	72 ed                	jb     0x472df4
472e07:	8b 75 0c             	mov    0xc(%ebp),%esi
472e0a:	8b ce                	mov    %esi,%ecx
472e0c:	e8 0f 6c f9 ff       	call   0x409a20
472e11:	89 3e                	mov    %edi,(%esi)
472e13:	33 c0                	xor    %eax,%eax
472e15:	5f                   	pop    %edi
472e16:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
472e1d:	5e                   	pop    %esi
472e1e:	5b                   	pop    %ebx
472e1f:	5d                   	pop    %ebp
472e20:	c2 08 00             	ret    $0x8
472e23:	55                   	push   %ebp
472e24:	8b ec                	mov    %esp,%ebp
472e26:	83 ec 0c             	sub    $0xc,%esp
472e29:	8b 55 08             	mov    0x8(%ebp),%edx
472e2c:	53                   	push   %ebx
472e2d:	56                   	push   %esi
472e2e:	57                   	push   %edi
472e2f:	33 f6                	xor    %esi,%esi
472e31:	89 4d f4             	mov    %ecx,-0xc(%ebp)
472e34:	46                   	inc    %esi
472e35:	33 db                	xor    %ebx,%ebx
472e37:	83 7a 08 03          	cmpl   $0x3,0x8(%edx)
472e3b:	6a 10                	push   $0x10
472e3d:	5f                   	pop    %edi
472e3e:	89 75 fc             	mov    %esi,-0x4(%ebp)
472e41:	0f 82 94 00 00 00    	jb     0x472edb
472e47:	8b 42 04             	mov    0x4(%edx),%eax
472e4a:	8b 48 08             	mov    0x8(%eax),%ecx
472e4d:	89 4d f8             	mov    %ecx,-0x8(%ebp)
472e50:	83 79 0c 0a          	cmpl   $0xa,0xc(%ecx)
472e54:	75 0a                	jne    0x472e60
472e56:	e8 36 5b ff ff       	call   0x468991
472e5b:	83 f8 29             	cmp    $0x29,%eax
472e5e:	74 7b                	je     0x472edb
472e60:	e8 32 6b f9 ff       	call   0x409997
472e65:	8b 4d f8             	mov    -0x8(%ebp),%ecx
472e68:	8b 41 08             	mov    0x8(%ecx),%eax
472e6b:	39 18                	cmp    %ebx,(%eax)
472e6d:	74 69                	je     0x472ed8
472e6f:	8b 45 08             	mov    0x8(%ebp),%eax
472e72:	8b 40 04             	mov    0x4(%eax),%eax
472e75:	8b 70 08             	mov    0x8(%eax),%esi
472e78:	8b ce                	mov    %esi,%ecx
472e7a:	e8 18 6b f9 ff       	call   0x409997
472e7f:	8b 46 08             	mov    0x8(%esi),%eax
472e82:	8b 00                	mov    (%eax),%eax
472e84:	0f b7 00             	movzwl (%eax),%eax
472e87:	83 e8 42             	sub    $0x42,%eax
472e8a:	74 46                	je     0x472ed2
472e8c:	48                   	dec    %eax
472e8d:	48                   	dec    %eax
472e8e:	74 3e                	je     0x472ece
472e90:	83 e8 13             	sub    $0x13,%eax
472e93:	74 40                	je     0x472ed5
472e95:	83 e8 0b             	sub    $0xb,%eax
472e98:	74 38                	je     0x472ed2
472e9a:	48                   	dec    %eax
472e9b:	48                   	dec    %eax
472e9c:	74 30                	je     0x472ece
472e9e:	83 e8 13             	sub    $0x13,%eax
472ea1:	74 32                	je     0x472ed5
472ea3:	8b 75 0c             	mov    0xc(%ebp),%esi
472ea6:	8b ce                	mov    %esi,%ecx
472ea8:	e8 73 6b f9 ff       	call   0x409a20
472ead:	8b 55 f4             	mov    -0xc(%ebp),%edx
472eb0:	33 c0                	xor    %eax,%eax
472eb2:	40                   	inc    %eax
472eb3:	89 1e                	mov    %ebx,(%esi)
472eb5:	53                   	push   %ebx
472eb6:	89 46 0c             	mov    %eax,0xc(%esi)
472eb9:	50                   	push   %eax
472eba:	8b 02                	mov    (%edx),%eax
472ebc:	8b 48 04             	mov    0x4(%eax),%ecx
472ebf:	03 ca                	add    %edx,%ecx
472ec1:	e8 dd 3b fe ff       	call   0x456aa3
472ec6:	83 c8 ff             	or     $0xffffffff,%eax
472ec9:	e9 dd 00 00 00       	jmp    0x472fab
472ece:	6a 20                	push   $0x20
472ed0:	eb 02                	jmp    0x472ed4
472ed2:	6a 08                	push   $0x8
472ed4:	5f                   	pop    %edi
472ed5:	8b 75 fc             	mov    -0x4(%ebp),%esi
472ed8:	8b 55 08             	mov    0x8(%ebp),%edx
472edb:	83 7a 08 02          	cmpl   $0x2,0x8(%edx)
472edf:	72 13                	jb     0x472ef4
472ee1:	8b 75 08             	mov    0x8(%ebp),%esi
472ee4:	8b 46 04             	mov    0x4(%esi),%eax
472ee7:	8b 48 04             	mov    0x4(%eax),%ecx
472eea:	e8 ad 6d f9 ff       	call   0x409c9c
472eef:	8b 55 08             	mov    0x8(%ebp),%edx
472ef2:	8b f0                	mov    %eax,%esi
472ef4:	8b 4a 04             	mov    0x4(%edx),%ecx
472ef7:	8b 09                	mov    (%ecx),%ecx
472ef9:	e8 9e 6d f9 ff       	call   0x409c9c
472efe:	89 45 fc             	mov    %eax,-0x4(%ebp)
472f01:	83 ff 20             	cmp    $0x20,%edi
472f04:	7d 07                	jge    0x472f0d
472f06:	83 cb ff             	or     $0xffffffff,%ebx
472f09:	8b cf                	mov    %edi,%ecx
472f0b:	d3 e3                	shl    %cl,%ebx
472f0d:	23 d8                	and    %eax,%ebx
472f0f:	89 5d 08             	mov    %ebx,0x8(%ebp)
472f12:	85 f6                	test   %esi,%esi
472f14:	79 08                	jns    0x472f1e
472f16:	03 f7                	add    %edi,%esi
472f18:	78 fc                	js     0x472f16
472f1a:	eb 02                	jmp    0x472f1e
472f1c:	2b f7                	sub    %edi,%esi
472f1e:	3b f7                	cmp    %edi,%esi
472f20:	7d fa                	jge    0x472f1c
472f22:	85 f6                	test   %esi,%esi
472f24:	75 0f                	jne    0x472f35
472f26:	8b 75 0c             	mov    0xc(%ebp),%esi
472f29:	8b ce                	mov    %esi,%ecx
472f2b:	e8 f0 6a f9 ff       	call   0x409a20
472f30:	8b 45 fc             	mov    -0x4(%ebp),%eax
472f33:	eb 6b                	jmp    0x472fa0
472f35:	33 db                	xor    %ebx,%ebx
472f37:	8b cf                	mov    %edi,%ecx
472f39:	2b ce                	sub    %esi,%ecx
472f3b:	43                   	inc    %ebx
472f3c:	d3 e3                	shl    %cl,%ebx
472f3e:	4b                   	dec    %ebx
472f3f:	89 4d f4             	mov    %ecx,-0xc(%ebp)
472f42:	8b ce                	mov    %esi,%ecx
472f44:	83 ff 20             	cmp    $0x20,%edi
472f47:	7d 15                	jge    0x472f5e
472f49:	8b d3                	mov    %ebx,%edx
472f4b:	23 d0                	and    %eax,%edx
472f4d:	33 c0                	xor    %eax,%eax
472f4f:	d3 e2                	shl    %cl,%edx
472f51:	40                   	inc    %eax
472f52:	8b cf                	mov    %edi,%ecx
472f54:	d3 e0                	shl    %cl,%eax
472f56:	48                   	dec    %eax
472f57:	23 d0                	and    %eax,%edx
472f59:	09 55 08             	or     %edx,0x8(%ebp)
472f5c:	eb 0a                	jmp    0x472f68
472f5e:	8b c3                	mov    %ebx,%eax
472f60:	23 45 fc             	and    -0x4(%ebp),%eax
472f63:	d3 e0                	shl    %cl,%eax
472f65:	09 45 08             	or     %eax,0x8(%ebp)
472f68:	83 ff 20             	cmp    $0x20,%edi
472f6b:	7d 0e                	jge    0x472f7b
472f6d:	33 c0                	xor    %eax,%eax
472f6f:	8b cf                	mov    %edi,%ecx
472f71:	40                   	inc    %eax
472f72:	d3 e0                	shl    %cl,%eax
472f74:	2b c3                	sub    %ebx,%eax
472f76:	8d 58 ff             	lea    -0x1(%eax),%ebx
472f79:	eb 02                	jmp    0x472f7d
472f7b:	f7 d3                	not    %ebx
472f7d:	8b 75 0c             	mov    0xc(%ebp),%esi
472f80:	8b ce                	mov    %esi,%ecx
472f82:	e8 99 6a f9 ff       	call   0x409a20
472f87:	8b 55 f4             	mov    -0xc(%ebp),%edx
472f8a:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
472f8f:	23 5d fc             	and    -0x4(%ebp),%ebx
472f92:	8d 4a ff             	lea    -0x1(%edx),%ecx
472f95:	d3 f8                	sar    %cl,%eax
472f97:	8b ca                	mov    %edx,%ecx
472f99:	d3 fb                	sar    %cl,%ebx
472f9b:	23 c3                	and    %ebx,%eax
472f9d:	0b 45 08             	or     0x8(%ebp),%eax
472fa0:	89 06                	mov    %eax,(%esi)
472fa2:	33 c0                	xor    %eax,%eax
472fa4:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
472fab:	5f                   	pop    %edi
472fac:	5e                   	pop    %esi
472fad:	5b                   	pop    %ebx
472fae:	8b e5                	mov    %ebp,%esp
472fb0:	5d                   	pop    %ebp
472fb1:	c2 08 00             	ret    $0x8
472fb4:	55                   	push   %ebp
472fb5:	8b ec                	mov    %esp,%ebp
472fb7:	56                   	push   %esi
472fb8:	8b 75 08             	mov    0x8(%ebp),%esi
472fbb:	57                   	push   %edi
472fbc:	8b 46 04             	mov    0x4(%esi),%eax
472fbf:	8b 48 04             	mov    0x4(%eax),%ecx
472fc2:	e8 d5 6c f9 ff       	call   0x409c9c
472fc7:	8b 4e 04             	mov    0x4(%esi),%ecx
472fca:	8b 39                	mov    (%ecx),%edi
472fcc:	8b 49 04             	mov    0x4(%ecx),%ecx
472fcf:	85 c0                	test   %eax,%eax