478d03:	e8 b2 e6 ff ff       	call   0x4773ba
478d08:	59                   	pop    %ecx
478d09:	59                   	pop    %ecx
478d0a:	8b 56 30             	mov    0x30(%esi),%edx
478d0d:	8a 02                	mov    (%edx),%al
478d0f:	3c 2d                	cmp    $0x2d,%al
478d11:	75 0a                	jne    0x478d1d
478d13:	83 4e 1c 40          	orl    $0x40,0x1c(%esi)
478d17:	42                   	inc    %edx
478d18:	89 56 30             	mov    %edx,0x30(%esi)
478d1b:	8a 02                	mov    (%edx),%al
478d1d:	3c 69                	cmp    $0x69,%al
478d1f:	74 0c                	je     0x478d2d
478d21:	3c 49                	cmp    $0x49,%al
478d23:	74 08                	je     0x478d2d
478d25:	3c 6e                	cmp    $0x6e,%al
478d27:	74 04                	je     0x478d2d
478d29:	3c 4e                	cmp    $0x4e,%al
478d2b:	75 0b                	jne    0x478d38
478d2d:	83 66 1c f7          	andl   $0xfffffff7,0x1c(%esi)
478d31:	6a 73                	push   $0x73
478d33:	58                   	pop    %eax
478d34:	66 89 46 2e          	mov    %ax,0x2e(%esi)
478d38:	8d 7a 01             	lea    0x1(%edx),%edi
478d3b:	8a 0a                	mov    (%edx),%cl
478d3d:	42                   	inc    %edx
478d3e:	84 c9                	test   %cl,%cl
478d40:	75 f9                	jne    0x478d3b
478d42:	2b d7                	sub    %edi,%edx
478d44:	b0 01                	mov    $0x1,%al
478d46:	5f                   	pop    %edi
478d47:	89 56 34             	mov    %edx,0x34(%esi)
478d4a:	5e                   	pop    %esi
478d4b:	5b                   	pop    %ebx
478d4c:	c9                   	leave
478d4d:	c3                   	ret
478d4e:	8b ff                	mov    %edi,%edi
478d50:	56                   	push   %esi
478d51:	8b f1                	mov    %ecx,%esi
478d53:	57                   	push   %edi
478d54:	ff 76 28             	push   0x28(%esi)
478d57:	0f b6 46 2d          	movzbl 0x2d(%esi),%eax
478d5b:	8d 7e 3c             	lea    0x3c(%esi),%edi
478d5e:	50                   	push   %eax
478d5f:	ff 76 04             	push   0x4(%esi)
478d62:	ff 36                	push   (%esi)
478d64:	e8 29 cc ff ff       	call   0x475992
478d69:	83 c4 10             	add    $0x10,%esp
478d6c:	84 c0                	test   %al,%al
478d6e:	74 3d                	je     0x478dad
478d70:	8b 4e 10             	mov    0x10(%esi),%ecx
478d73:	53                   	push   %ebx
478d74:	8d 41 04             	lea    0x4(%ecx),%eax
478d77:	89 46 10             	mov    %eax,0x10(%esi)
478d7a:	0f b7 19             	movzwl (%ecx),%ebx
478d7d:	8b cf                	mov    %edi,%ecx
478d7f:	e8 a6 ca ff ff       	call   0x47582a
478d84:	8b 8f 04 04 00 00    	mov    0x404(%edi),%ecx
478d8a:	85 c9                	test   %ecx,%ecx
478d8c:	75 02                	jne    0x478d90
478d8e:	8b cf                	mov    %edi,%ecx
478d90:	ff 76 08             	push   0x8(%esi)
478d93:	53                   	push   %ebx
478d94:	50                   	push   %eax
478d95:	51                   	push   %ecx
478d96:	8d 46 34             	lea    0x34(%esi),%eax
478d99:	50                   	push   %eax
478d9a:	e8 f6 d6 00 00       	call   0x486495
478d9f:	83 c4 14             	add    $0x14,%esp
478da2:	5b                   	pop    %ebx
478da3:	85 c0                	test   %eax,%eax
478da5:	74 26                	je     0x478dcd
478da7:	c6 46 2c 01          	movb   $0x1,0x2c(%esi)
478dab:	eb 20                	jmp    0x478dcd
478dad:	8b 97 04 04 00 00    	mov    0x404(%edi),%edx
478db3:	85 d2                	test   %edx,%edx
478db5:	75 02                	jne    0x478db9
478db7:	8b d7                	mov    %edi,%edx
478db9:	8b 4e 10             	mov    0x10(%esi),%ecx
478dbc:	8d 41 04             	lea    0x4(%ecx),%eax
478dbf:	89 46 10             	mov    %eax,0x10(%esi)
478dc2:	8a 01                	mov    (%ecx),%al
478dc4:	88 02                	mov    %al,(%edx)
478dc6:	c7 46 34 01 00 00 00 	movl   $0x1,0x34(%esi)
478dcd:	8b 87 04 04 00 00    	mov    0x404(%edi),%eax
478dd3:	85 c0                	test   %eax,%eax
478dd5:	74 02                	je     0x478dd9
478dd7:	8b f8                	mov    %eax,%edi
478dd9:	89 7e 30             	mov    %edi,0x30(%esi)
478ddc:	b0 01                	mov    $0x1,%al
478dde:	5f                   	pop    %edi
478ddf:	5e                   	pop    %esi
478de0:	c2 04 00             	ret    $0x4
478de3:	8b ff                	mov    %edi,%edi
478de5:	55                   	push   %ebp
478de6:	8b ec                	mov    %esp,%ebp
478de8:	51                   	push   %ecx
478de9:	53                   	push   %ebx
478dea:	56                   	push   %esi
478deb:	8b f1                	mov    %ecx,%esi
478ded:	57                   	push   %edi
478dee:	8b 56 10             	mov    0x10(%esi),%edx
478df1:	c6 46 38 01          	movb   $0x1,0x38(%esi)
478df5:	8d 42 04             	lea    0x4(%edx),%eax
478df8:	89 46 10             	mov    %eax,0x10(%esi)
478dfb:	ff 76 28             	push   0x28(%esi)
478dfe:	0f b7 46 2e          	movzwl 0x2e(%esi),%eax
478e02:	0f b7 1a             	movzwl (%edx),%ebx
478e05:	50                   	push   %eax
478e06:	ff 76 04             	push   0x4(%esi)
478e09:	ff 36                	push   (%esi)
478e0b:	e8 b3 cb ff ff       	call   0x4759c3
478e10:	83 c4 10             	add    $0x10,%esp
478e13:	84 c0                	test   %al,%al
478e15:	75 43                	jne    0x478e5a
478e17:	88 5d fc             	mov    %bl,-0x4(%ebp)
478e1a:	8b 5e 08             	mov    0x8(%esi),%ebx
478e1d:	88 45 fd             	mov    %al,-0x3(%ebp)
478e20:	38 43 14             	cmp    %al,0x14(%ebx)
478e23:	75 07                	jne    0x478e2c
478e25:	8b cb                	mov    %ebx,%ecx
478e27:	e8 e4 02 00 00       	call   0x479110
478e2c:	8b 43 0c             	mov    0xc(%ebx),%eax
478e2f:	8d 7e 3c             	lea    0x3c(%esi),%edi
478e32:	8b 48 04             	mov    0x4(%eax),%ecx
478e35:	8b 87 04 04 00 00    	mov    0x404(%edi),%eax
478e3b:	85 c0                	test   %eax,%eax
478e3d:	75 02                	jne    0x478e41
478e3f:	8b c7                	mov    %edi,%eax
478e41:	53                   	push   %ebx
478e42:	51                   	push   %ecx
478e43:	8d 4d fc             	lea    -0x4(%ebp),%ecx
478e46:	51                   	push   %ecx
478e47:	50                   	push   %eax
478e48:	e8 b2 d7 00 00       	call   0x4865ff
478e4d:	83 c4 10             	add    $0x10,%esp
478e50:	85 c0                	test   %eax,%eax
478e52:	79 18                	jns    0x478e6c
478e54:	c6 46 2c 01          	movb   $0x1,0x2c(%esi)
478e58:	eb 12                	jmp    0x478e6c
478e5a:	8d 7e 3c             	lea    0x3c(%esi),%edi
478e5d:	8b 87 04 04 00 00    	mov    0x404(%edi),%eax
478e63:	85 c0                	test   %eax,%eax
478e65:	75 02                	jne    0x478e69
478e67:	8b c7                	mov    %edi,%eax
478e69:	66 89 18             	mov    %bx,(%eax)
478e6c:	8b 87 04 04 00 00    	mov    0x404(%edi),%eax
478e72:	85 c0                	test   %eax,%eax
478e74:	74 02                	je     0x478e78
478e76:	8b f8                	mov    %eax,%edi
478e78:	89 7e 30             	mov    %edi,0x30(%esi)
478e7b:	b0 01                	mov    $0x1,%al
478e7d:	5f                   	pop    %edi
478e7e:	c7 46 34 01 00 00 00 	movl   $0x1,0x34(%esi)
478e85:	5e                   	pop    %esi
478e86:	5b                   	pop    %ebx
478e87:	c9                   	leave
478e88:	c2 04 00             	ret    $0x4
478e8b:	8b ff                	mov    %edi,%edi
478e8d:	56                   	push   %esi
478e8e:	8b f1                	mov    %ecx,%esi
478e90:	57                   	push   %edi
478e91:	8b 56 10             	mov    0x10(%esi),%edx
478e94:	8d 42 04             	lea    0x4(%edx),%eax
478e97:	89 46 10             	mov    %eax,0x10(%esi)
478e9a:	8b 3a                	mov    (%edx),%edi
478e9c:	e8 b8 d8 00 00       	call   0x486759
478ea1:	85 c0                	test   %eax,%eax
478ea3:	75 24                	jne    0x478ec9
478ea5:	8b 46 08             	mov    0x8(%esi),%eax
478ea8:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
478eac:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
478eb3:	33 c0                	xor    %eax,%eax
478eb5:	ff 76 08             	push   0x8(%esi)
478eb8:	50                   	push   %eax
478eb9:	50                   	push   %eax
478eba:	50                   	push   %eax
478ebb:	50                   	push   %eax
478ebc:	50                   	push   %eax
478ebd:	e8 e2 06 00 00       	call   0x4795a4
478ec2:	83 c4 18             	add    $0x18,%esp
478ec5:	32 c0                	xor    %al,%al
478ec7:	eb 44                	jmp    0x478f0d
478ec9:	ff 76 28             	push   0x28(%esi)
478ecc:	e8 2b fa ff ff       	call   0x4788fc
478ed1:	59                   	pop    %ecx
478ed2:	83 e8 01             	sub    $0x1,%eax
478ed5:	74 2b                	je     0x478f02
478ed7:	83 e8 01             	sub    $0x1,%eax
478eda:	74 1d                	je     0x478ef9
478edc:	48                   	dec    %eax
478edd:	83 e8 01             	sub    $0x1,%eax
478ee0:	74 10                	je     0x478ef2
478ee2:	83 e8 04             	sub    $0x4,%eax
478ee5:	75 be                	jne    0x478ea5
478ee7:	8b 46 14             	mov    0x14(%esi),%eax
478eea:	99                   	cltd
478eeb:	89 07                	mov    %eax,(%edi)
478eed:	89 57 04             	mov    %edx,0x4(%edi)
478ef0:	eb 15                	jmp    0x478f07
478ef2:	8b 46 14             	mov    0x14(%esi),%eax
478ef5:	89 07                	mov    %eax,(%edi)
478ef7:	eb 0e                	jmp    0x478f07
478ef9:	66 8b 46 14          	mov    0x14(%esi),%ax
478efd:	66 89 07             	mov    %ax,(%edi)
478f00:	eb 05                	jmp    0x478f07
478f02:	8a 46 14             	mov    0x14(%esi),%al
478f05:	88 07                	mov    %al,(%edi)
478f07:	c6 46 2c 01          	movb   $0x1,0x2c(%esi)
478f0b:	b0 01                	mov    $0x1,%al
478f0d:	5f                   	pop    %edi
478f0e:	5e                   	pop    %esi
478f0f:	c3                   	ret
478f10:	8b 51 1c             	mov    0x1c(%ecx),%edx
478f13:	8b c2                	mov    %edx,%eax
478f15:	c1 e8 05             	shr    $0x5,%eax
478f18:	a8 01                	test   $0x1,%al
478f1a:	74 09                	je     0x478f25
478f1c:	81 ca 80 00 00 00    	or     $0x80,%edx
478f22:	89 51 1c             	mov    %edx,0x1c(%ecx)
478f25:	6a 00                	push   $0x0
478f27:	e8 00 d3 ff ff       	call   0x47622c
478f2c:	c3                   	ret
478f2d:	8b 51 1c             	mov    0x1c(%ecx),%edx
478f30:	8b c2                	mov    %edx,%eax
478f32:	c1 e8 05             	shr    $0x5,%eax
478f35:	a8 01                	test   $0x1,%al
478f37:	74 09                	je     0x478f42
478f39:	81 ca 80 00 00 00    	or     $0x80,%edx
478f3f:	89 51 1c             	mov    %edx,0x1c(%ecx)
478f42:	6a 00                	push   $0x0
478f44:	e8 70 d4 ff ff       	call   0x4763b9
478f49:	c3                   	ret
478f4a:	6a 01                	push   $0x1
478f4c:	c7 41 24 08 00 00 00 	movl   $0x8,0x24(%ecx)
478f53:	c7 41 28 0a 00 00 00 	movl   $0xa,0x28(%ecx)
478f5a:	e8 0b d9 ff ff       	call   0x47686a
478f5f:	c3                   	ret
478f60:	6a 01                	push   $0x1
478f62:	c7 41 24 08 00 00 00 	movl   $0x8,0x24(%ecx)
478f69:	c7 41 28 0a 00 00 00 	movl   $0xa,0x28(%ecx)
478f70:	e8 82 da ff ff       	call   0x4769f7
478f75:	c3                   	ret
478f76:	8b ff                	mov    %edi,%edi
478f78:	53                   	push   %ebx
478f79:	56                   	push   %esi
478f7a:	8b f1                	mov    %ecx,%esi
478f7c:	57                   	push   %edi
478f7d:	8b 56 10             	mov    0x10(%esi),%edx
478f80:	8d 42 04             	lea    0x4(%edx),%eax
478f83:	89 46 10             	mov    %eax,0x10(%esi)
478f86:	8b 5e 24             	mov    0x24(%esi),%ebx
478f89:	8b 3a                	mov    (%edx),%edi
478f8b:	89 7e 30             	mov    %edi,0x30(%esi)
478f8e:	83 fb ff             	cmp    $0xffffffff,%ebx
478f91:	75 05                	jne    0x478f98
478f93:	bb ff ff ff 7f       	mov    $0x7fffffff,%ebx
478f98:	ff 76 28             	push   0x28(%esi)
478f9b:	0f b6 46 2d          	movzbl 0x2d(%esi),%eax
478f9f:	50                   	push   %eax
478fa0:	ff 76 04             	push   0x4(%esi)
478fa3:	ff 36                	push   (%esi)
478fa5:	e8 e8 c9 ff ff       	call   0x475992
478faa:	83 c4 10             	add    $0x10,%esp
478fad:	84 c0                	test   %al,%al
478faf:	74 19                	je     0x478fca
478fb1:	85 ff                	test   %edi,%edi
478fb3:	75 08                	jne    0x478fbd
478fb5:	bf f8 1a 4a 00       	mov    $0x4a1af8,%edi
478fba:	89 7e 30             	mov    %edi,0x30(%esi)
478fbd:	53                   	push   %ebx
478fbe:	57                   	push   %edi
478fbf:	c6 46 38 01          	movb   $0x1,0x38(%esi)
478fc3:	e8 53 9b 00 00       	call   0x482b1b
478fc8:	eb 13                	jmp    0x478fdd
478fca:	85 ff                	test   %edi,%edi
478fcc:	75 08                	jne    0x478fd6
478fce:	bf 08 1b 4a 00       	mov    $0x4a1b08,%edi
478fd3:	89 7e 30             	mov    %edi,0x30(%esi)
478fd6:	53                   	push   %ebx
478fd7:	57                   	push   %edi
478fd8:	e8 1c 9a 00 00       	call   0x4829f9
478fdd:	59                   	pop    %ecx
478fde:	59                   	pop    %ecx
478fdf:	5f                   	pop    %edi
478fe0:	89 46 34             	mov    %eax,0x34(%esi)
478fe3:	b0 01                	mov    $0x1,%al
478fe5:	5e                   	pop    %esi
478fe6:	5b                   	pop    %ebx
478fe7:	c3                   	ret
478fe8:	8b ff                	mov    %edi,%edi
478fea:	53                   	push   %ebx
478feb:	56                   	push   %esi
478fec:	8b f1                	mov    %ecx,%esi
478fee:	57                   	push   %edi
478fef:	8b 56 10             	mov    0x10(%esi),%edx
478ff2:	8d 42 04             	lea    0x4(%edx),%eax
478ff5:	89 46 10             	mov    %eax,0x10(%esi)
478ff8:	8b 5e 24             	mov    0x24(%esi),%ebx
478ffb:	8b 3a                	mov    (%edx),%edi
478ffd:	89 7e 30             	mov    %edi,0x30(%esi)
479000:	83 fb ff             	cmp    $0xffffffff,%ebx
479003:	75 05                	jne    0x47900a
479005:	bb ff ff ff 7f       	mov    $0x7fffffff,%ebx
47900a:	ff 76 28             	push   0x28(%esi)
47900d:	0f b7 46 2e          	movzwl 0x2e(%esi),%eax
479011:	50                   	push   %eax
479012:	ff 76 04             	push   0x4(%esi)
479015:	ff 36                	push   (%esi)
479017:	e8 a7 c9 ff ff       	call   0x4759c3
47901c:	83 c4 10             	add    $0x10,%esp
47901f:	84 c0                	test   %al,%al
479021:	74 1b                	je     0x47903e
479023:	85 ff                	test   %edi,%edi
479025:	75 08                	jne    0x47902f
479027:	bf f8 1a 4a 00       	mov    $0x4a1af8,%edi
47902c:	89 7e 30             	mov    %edi,0x30(%esi)
47902f:	53                   	push   %ebx
479030:	57                   	push   %edi
479031:	c6 46 38 01          	movb   $0x1,0x38(%esi)
479035:	e8 e1 9a 00 00       	call   0x482b1b
47903a:	59                   	pop    %ecx
47903b:	59                   	pop    %ecx
47903c:	eb 15                	jmp    0x479053
47903e:	85 ff                	test   %edi,%edi
479040:	75 07                	jne    0x479049
479042:	c7 46 30 08 1b 4a 00 	movl   $0x4a1b08,0x30(%esi)
479049:	6a 00                	push   $0x0
47904b:	53                   	push   %ebx
47904c:	8b ce                	mov    %esi,%ecx
47904e:	e8 09 00 00 00       	call   0x47905c
479053:	5f                   	pop    %edi
479054:	89 46 34             	mov    %eax,0x34(%esi)
479057:	b0 01                	mov    $0x1,%al
479059:	5e                   	pop    %esi
47905a:	5b                   	pop    %ebx
47905b:	c3                   	ret
47905c:	8b ff                	mov    %edi,%edi
47905e:	55                   	push   %ebp
47905f:	8b ec                	mov    %esp,%ebp
479061:	53                   	push   %ebx
479062:	56                   	push   %esi
479063:	8b f1                	mov    %ecx,%esi
479065:	57                   	push   %edi
479066:	8b 5e 08             	mov    0x8(%esi),%ebx
479069:	80 7b 14 00          	cmpb   $0x0,0x14(%ebx)
47906d:	75 07                	jne    0x479076
47906f:	8b cb                	mov    %ebx,%ecx
479071:	e8 9a 00 00 00       	call   0x479110
479076:	8b 76 30             	mov    0x30(%esi),%esi