407b6f:	8b 4d fc             	mov    -0x4(%ebp),%ecx
407b72:	8b 55 f8             	mov    -0x8(%ebp),%edx
407b75:	8b c1                	mov    %ecx,%eax
407b77:	0b c2                	or     %edx,%eax
407b79:	75 04                	jne    0x407b7f
407b7b:	83 66 1c df          	andl   $0xffffffdf,0x1c(%esi)
407b7f:	83 7d f4 08          	cmpl   $0x8,-0xc(%ebp)
407b83:	ff 75 08             	push   0x8(%ebp)
407b86:	88 5e 38             	mov    %bl,0x38(%esi)
407b89:	75 0b                	jne    0x407b96
407b8b:	52                   	push   %edx
407b8c:	51                   	push   %ecx
407b8d:	8b ce                	mov    %esi,%ecx
407b8f:	e8 a2 03 00 00       	call   0x407f36
407b94:	eb 08                	jmp    0x407b9e
407b96:	51                   	push   %ecx
407b97:	8b ce                	mov    %esi,%ecx
407b99:	e8 1c 02 00 00       	call   0x407dba
407b9e:	8b 46 1c             	mov    0x1c(%esi),%eax
407ba1:	c1 e8 07             	shr    $0x7,%eax
407ba4:	a8 01                	test   $0x1,%al
407ba6:	74 19                	je     0x407bc1
407ba8:	39 5e 34             	cmp    %ebx,0x34(%esi)
407bab:	74 08                	je     0x407bb5
407bad:	8b 46 30             	mov    0x30(%esi),%eax
407bb0:	80 38 30             	cmpb   $0x30,(%eax)
407bb3:	74 0c                	je     0x407bc1
407bb5:	ff 4e 30             	decl   0x30(%esi)
407bb8:	8b 4e 30             	mov    0x30(%esi),%ecx
407bbb:	c6 01 30             	movb   $0x30,(%ecx)
407bbe:	ff 46 34             	incl   0x34(%esi)
407bc1:	b0 01                	mov    $0x1,%al
407bc3:	5f                   	pop    %edi
407bc4:	5e                   	pop    %esi
407bc5:	5b                   	pop    %ebx
407bc6:	c9                   	leave
407bc7:	c2 04 00             	ret    $0x4
407bca:	8b ff                	mov    %edi,%edi
407bcc:	55                   	push   %ebp
407bcd:	8b ec                	mov    %esp,%ebp
407bcf:	83 ec 0c             	sub    $0xc,%esp
407bd2:	53                   	push   %ebx
407bd3:	56                   	push   %esi
407bd4:	8b f1                	mov    %ecx,%esi
407bd6:	57                   	push   %edi
407bd7:	ff 76 28             	push   0x28(%esi)
407bda:	e8 83 0e 00 00       	call   0x408a62
407bdf:	59                   	pop    %ecx
407be0:	8b c8                	mov    %eax,%ecx
407be2:	89 45 f4             	mov    %eax,-0xc(%ebp)
407be5:	6a 00                	push   $0x0
407be7:	5b                   	pop    %ebx
407be8:	83 e9 01             	sub    $0x1,%ecx
407beb:	0f 84 99 00 00 00    	je     0x407c8a
407bf1:	83 e9 01             	sub    $0x1,%ecx
407bf4:	74 75                	je     0x407c6b
407bf6:	49                   	dec    %ecx
407bf7:	83 e9 01             	sub    $0x1,%ecx
407bfa:	74 46                	je     0x407c42
407bfc:	83 e9 04             	sub    $0x4,%ecx
407bff:	74 27                	je     0x407c28
407c01:	8b 46 08             	mov    0x8(%esi),%eax
407c04:	83 c0 18             	add    $0x18,%eax
407c07:	c6 40 04 01          	movb   $0x1,0x4(%eax)
407c0b:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
407c11:	ff 76 08             	push   0x8(%esi)
407c14:	53                   	push   %ebx
407c15:	53                   	push   %ebx
407c16:	53                   	push   %ebx
407c17:	53                   	push   %ebx
407c18:	53                   	push   %ebx
407c19:	e8 2e f8 ff ff       	call   0x40744c
407c1e:	83 c4 18             	add    $0x18,%esp
407c21:	32 c0                	xor    %al,%al
407c23:	e9 28 01 00 00       	jmp    0x407d50
407c28:	8b 4e 10             	mov    0x10(%esi),%ecx
407c2b:	8b 7e 1c             	mov    0x1c(%esi),%edi
407c2e:	8b c7                	mov    %edi,%eax
407c30:	c1 e8 04             	shr    $0x4,%eax
407c33:	a8 01                	test   $0x1,%al
407c35:	8d 41 08             	lea    0x8(%ecx),%eax
407c38:	89 46 10             	mov    %eax,0x10(%esi)
407c3b:	8b 01                	mov    (%ecx),%eax
407c3d:	8b 51 04             	mov    0x4(%ecx),%edx
407c40:	eb 66                	jmp    0x407ca8
407c42:	8b 7e 1c             	mov    0x1c(%esi),%edi
407c45:	8b c7                	mov    %edi,%eax
407c47:	c1 e8 04             	shr    $0x4,%eax
407c4a:	a8 01                	test   $0x1,%al
407c4c:	74 0d                	je     0x407c5b
407c4e:	8b 46 10             	mov    0x10(%esi),%eax
407c51:	8d 48 04             	lea    0x4(%eax),%ecx
407c54:	89 4e 10             	mov    %ecx,0x10(%esi)
407c57:	8b 00                	mov    (%eax),%eax
407c59:	eb 4c                	jmp    0x407ca7
407c5b:	8b 4e 10             	mov    0x10(%esi),%ecx
407c5e:	89 5d f8             	mov    %ebx,-0x8(%ebp)
407c61:	8d 41 04             	lea    0x4(%ecx),%eax
407c64:	89 46 10             	mov    %eax,0x10(%esi)
407c67:	8b 01                	mov    (%ecx),%eax
407c69:	eb 40                	jmp    0x407cab
407c6b:	8b 7e 1c             	mov    0x1c(%esi),%edi
407c6e:	8b c7                	mov    %edi,%eax
407c70:	8b 4e 10             	mov    0x10(%esi),%ecx
407c73:	c1 e8 04             	shr    $0x4,%eax
407c76:	a8 01                	test   $0x1,%al
407c78:	8d 41 04             	lea    0x4(%ecx),%eax
407c7b:	89 46 10             	mov    %eax,0x10(%esi)
407c7e:	74 05                	je     0x407c85
407c80:	0f bf 01             	movswl (%ecx),%eax
407c83:	eb 22                	jmp    0x407ca7
407c85:	0f b7 01             	movzwl (%ecx),%eax
407c88:	eb 1d                	jmp    0x407ca7
407c8a:	8b 7e 1c             	mov    0x1c(%esi),%edi
407c8d:	8b c7                	mov    %edi,%eax
407c8f:	8b 4e 10             	mov    0x10(%esi),%ecx
407c92:	c1 e8 04             	shr    $0x4,%eax
407c95:	a8 01                	test   $0x1,%al
407c97:	8d 41 04             	lea    0x4(%ecx),%eax
407c9a:	89 46 10             	mov    %eax,0x10(%esi)
407c9d:	74 05                	je     0x407ca4
407c9f:	0f be 01             	movsbl (%ecx),%eax
407ca2:	eb 03                	jmp    0x407ca7
407ca4:	0f b6 01             	movzbl (%ecx),%eax
407ca7:	99                   	cltd
407ca8:	89 55 f8             	mov    %edx,-0x8(%ebp)
407cab:	8b 55 f8             	mov    -0x8(%ebp),%edx
407cae:	89 45 fc             	mov    %eax,-0x4(%ebp)
407cb1:	8b c7                	mov    %edi,%eax
407cb3:	8b 4d fc             	mov    -0x4(%ebp),%ecx
407cb6:	c1 e8 04             	shr    $0x4,%eax
407cb9:	a8 01                	test   $0x1,%al
407cbb:	74 16                	je     0x407cd3
407cbd:	3b d3                	cmp    %ebx,%edx
407cbf:	7f 12                	jg     0x407cd3
407cc1:	7c 04                	jl     0x407cc7
407cc3:	3b cb                	cmp    %ebx,%ecx
407cc5:	73 0c                	jae    0x407cd3
407cc7:	f7 d9                	neg    %ecx
407cc9:	13 d3                	adc    %ebx,%edx
407ccb:	f7 da                	neg    %edx
407ccd:	83 cf 40             	or     $0x40,%edi
407cd0:	89 7e 1c             	mov    %edi,0x1c(%esi)
407cd3:	83 7e 24 00          	cmpl   $0x0,0x24(%esi)
407cd7:	89 55 f8             	mov    %edx,-0x8(%ebp)
407cda:	89 4d fc             	mov    %ecx,-0x4(%ebp)
407cdd:	7d 09                	jge    0x407ce8
407cdf:	c7 46 24 01 00 00 00 	movl   $0x1,0x24(%esi)
407ce6:	eb 1a                	jmp    0x407d02
407ce8:	ff 76 08             	push   0x8(%esi)
407ceb:	83 e7 f7             	and    $0xfffffff7,%edi
407cee:	8d 4e 3c             	lea    0x3c(%esi),%ecx
407cf1:	ff 76 24             	push   0x24(%esi)
407cf4:	89 7e 1c             	mov    %edi,0x1c(%esi)
407cf7:	e8 a1 f8 ff ff       	call   0x40759d
407cfc:	8b 4d fc             	mov    -0x4(%ebp),%ecx
407cff:	8b 55 f8             	mov    -0x8(%ebp),%edx
407d02:	8b c1                	mov    %ecx,%eax
407d04:	0b c2                	or     %edx,%eax
407d06:	75 04                	jne    0x407d0c
407d08:	83 66 1c df          	andl   $0xffffffdf,0x1c(%esi)
407d0c:	83 7d f4 08          	cmpl   $0x8,-0xc(%ebp)
407d10:	ff 75 08             	push   0x8(%ebp)
407d13:	88 5e 38             	mov    %bl,0x38(%esi)
407d16:	75 0b                	jne    0x407d23
407d18:	52                   	push   %edx
407d19:	51                   	push   %ecx
407d1a:	8b ce                	mov    %esi,%ecx
407d1c:	e8 bc 02 00 00       	call   0x407fdd
407d21:	eb 08                	jmp    0x407d2b
407d23:	51                   	push   %ecx
407d24:	8b ce                	mov    %esi,%ecx
407d26:	e8 16 01 00 00       	call   0x407e41
407d2b:	8b 46 1c             	mov    0x1c(%esi),%eax
407d2e:	c1 e8 07             	shr    $0x7,%eax
407d31:	a8 01                	test   $0x1,%al
407d33:	74 19                	je     0x407d4e
407d35:	39 5e 34             	cmp    %ebx,0x34(%esi)
407d38:	74 08                	je     0x407d42
407d3a:	8b 46 30             	mov    0x30(%esi),%eax
407d3d:	80 38 30             	cmpb   $0x30,(%eax)
407d40:	74 0c                	je     0x407d4e
407d42:	ff 4e 30             	decl   0x30(%esi)
407d45:	8b 4e 30             	mov    0x30(%esi),%ecx
407d48:	c6 01 30             	movb   $0x30,(%ecx)
407d4b:	ff 46 34             	incl   0x34(%esi)
407d4e:	b0 01                	mov    $0x1,%al
407d50:	5f                   	pop    %edi
407d51:	5e                   	pop    %esi
407d52:	5b                   	pop    %ebx
407d53:	c9                   	leave
407d54:	c2 04 00             	ret    $0x4
407d57:	8b ff                	mov    %edi,%edi
407d59:	55                   	push   %ebp
407d5a:	8b ec                	mov    %esp,%ebp
407d5c:	53                   	push   %ebx
407d5d:	56                   	push   %esi
407d5e:	8b f1                	mov    %ecx,%esi
407d60:	57                   	push   %edi
407d61:	8d 4e 3c             	lea    0x3c(%esi),%ecx
407d64:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
407d6a:	85 ff                	test   %edi,%edi
407d6c:	75 02                	jne    0x407d70
407d6e:	8b f9                	mov    %ecx,%edi
407d70:	e8 10 f8 ff ff       	call   0x407585
407d75:	8b 55 08             	mov    0x8(%ebp),%edx
407d78:	8d 48 ff             	lea    -0x1(%eax),%ecx
407d7b:	03 cf                	add    %edi,%ecx
407d7d:	89 4e 30             	mov    %ecx,0x30(%esi)
407d80:	8b c1                	mov    %ecx,%eax
407d82:	8b d9                	mov    %ecx,%ebx
407d84:	8b 7e 24             	mov    0x24(%esi),%edi
407d87:	85 ff                	test   %edi,%edi
407d89:	7f 04                	jg     0x407d8f
407d8b:	85 d2                	test   %edx,%edx
407d8d:	74 1b                	je     0x407daa
407d8f:	8d 47 ff             	lea    -0x1(%edi),%eax
407d92:	89 46 24             	mov    %eax,0x24(%esi)
407d95:	8a c2                	mov    %dl,%al
407d97:	24 07                	and    $0x7,%al
407d99:	c1 ea 03             	shr    $0x3,%edx
407d9c:	04 30                	add    $0x30,%al
407d9e:	88 03                	mov    %al,(%ebx)
407da0:	ff 4e 30             	decl   0x30(%esi)
407da3:	8b 46 30             	mov    0x30(%esi),%eax
407da6:	8b d8                	mov    %eax,%ebx
407da8:	eb da                	jmp    0x407d84
407daa:	2b c8                	sub    %eax,%ecx
407dac:	40                   	inc    %eax
407dad:	89 4e 34             	mov    %ecx,0x34(%esi)
407db0:	5f                   	pop    %edi
407db1:	89 46 30             	mov    %eax,0x30(%esi)
407db4:	5e                   	pop    %esi
407db5:	5b                   	pop    %ebx
407db6:	5d                   	pop    %ebp
407db7:	c2 08 00             	ret    $0x8
407dba:	8b ff                	mov    %edi,%edi
407dbc:	55                   	push   %ebp
407dbd:	8b ec                	mov    %esp,%ebp
407dbf:	51                   	push   %ecx
407dc0:	51                   	push   %ecx
407dc1:	53                   	push   %ebx
407dc2:	56                   	push   %esi
407dc3:	8b f1                	mov    %ecx,%esi
407dc5:	57                   	push   %edi
407dc6:	8d 4e 3c             	lea    0x3c(%esi),%ecx
407dc9:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
407dcf:	85 ff                	test   %edi,%edi
407dd1:	75 02                	jne    0x407dd5
407dd3:	8b f9                	mov    %ecx,%edi
407dd5:	e8 ab f7 ff ff       	call   0x407585
407dda:	8b 5d 08             	mov    0x8(%ebp),%ebx
407ddd:	48                   	dec    %eax
407dde:	03 f8                	add    %eax,%edi
407de0:	89 7d f8             	mov    %edi,-0x8(%ebp)
407de3:	8b c7                	mov    %edi,%eax
407de5:	89 7e 30             	mov    %edi,0x30(%esi)
407de8:	89 7d fc             	mov    %edi,-0x4(%ebp)
407deb:	8b 4e 24             	mov    0x24(%esi),%ecx
407dee:	85 c9                	test   %ecx,%ecx
407df0:	7f 04                	jg     0x407df6
407df2:	85 db                	test   %ebx,%ebx
407df4:	74 38                	je     0x407e2e
407df6:	49                   	dec    %ecx
407df7:	33 d2                	xor    %edx,%edx
407df9:	6a 0a                	push   $0xa
407dfb:	89 4e 24             	mov    %ecx,0x24(%esi)
407dfe:	8b c3                	mov    %ebx,%eax
407e00:	59                   	pop    %ecx
407e01:	f7 f1                	div    %ecx
407e03:	8b c3                	mov    %ebx,%eax
407e05:	6a 0a                	push   $0xa
407e07:	5b                   	pop    %ebx
407e08:	8d 4a 30             	lea    0x30(%edx),%ecx
407e0b:	33 d2                	xor    %edx,%edx
407e0d:	f7 f3                	div    %ebx
407e0f:	8b d8                	mov    %eax,%ebx
407e11:	80 f9 39             	cmp    $0x39,%cl
407e14:	7e 0c                	jle    0x407e22
407e16:	8a 45 0c             	mov    0xc(%ebp),%al
407e19:	34 01                	xor    $0x1,%al
407e1b:	c0 e0 05             	shl    $0x5,%al
407e1e:	04 07                	add    $0x7,%al
407e20:	02 c8                	add    %al,%cl
407e22:	88 0f                	mov    %cl,(%edi)
407e24:	ff 4e 30             	decl   0x30(%esi)
407e27:	8b 46 30             	mov    0x30(%esi),%eax
407e2a:	8b f8                	mov    %eax,%edi
407e2c:	eb bd                	jmp    0x407deb
407e2e:	8b 7d f8             	mov    -0x8(%ebp),%edi
407e31:	2b f8                	sub    %eax,%edi
407e33:	40                   	inc    %eax
407e34:	89 7e 34             	mov    %edi,0x34(%esi)
407e37:	5f                   	pop    %edi
407e38:	89 46 30             	mov    %eax,0x30(%esi)
407e3b:	5e                   	pop    %esi
407e3c:	5b                   	pop    %ebx
407e3d:	c9                   	leave
407e3e:	c2 08 00             	ret    $0x8
407e41:	8b ff                	mov    %edi,%edi
407e43:	55                   	push   %ebp
407e44:	8b ec                	mov    %esp,%ebp
407e46:	51                   	push   %ecx
407e47:	53                   	push   %ebx
407e48:	56                   	push   %esi
407e49:	8b f1                	mov    %ecx,%esi
407e4b:	57                   	push   %edi
407e4c:	8d 4e 3c             	lea    0x3c(%esi),%ecx
407e4f:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
407e55:	85 ff                	test   %edi,%edi
407e57:	75 02                	jne    0x407e5b
407e59:	8b f9                	mov    %ecx,%edi
407e5b:	e8 25 f7 ff ff       	call   0x407585
407e60:	8a 7d 0c             	mov    0xc(%ebp),%bh
407e63:	8b 55 08             	mov    0x8(%ebp),%edx
407e66:	8d 48 ff             	lea    -0x1(%eax),%ecx
407e69:	03 cf                	add    %edi,%ecx
407e6b:	89 4e 30             	mov    %ecx,0x30(%esi)
407e6e:	8b c1                	mov    %ecx,%eax
407e70:	89 4d fc             	mov    %ecx,-0x4(%ebp)
407e73:	8b 7e 24             	mov    0x24(%esi),%edi
407e76:	85 ff                	test   %edi,%edi
407e78:	7f 04                	jg     0x407e7e
407e7a:	85 d2                	test   %edx,%edx
407e7c:	74 30                	je     0x407eae
407e7e:	8d 47 ff             	lea    -0x1(%edi),%eax
407e81:	89 46 24             	mov    %eax,0x24(%esi)
407e84:	8a c2                	mov    %dl,%al
407e86:	24 0f                	and    $0xf,%al
407e88:	c1 ea 04             	shr    $0x4,%edx
407e8b:	04 30                	add    $0x30,%al
407e8d:	8a d8                	mov    %al,%bl
407e8f:	3c 39                	cmp    $0x39,%al
407e91:	76 0b                	jbe    0x407e9e
407e93:	8a c7                	mov    %bh,%al
407e95:	34 01                	xor    $0x1,%al
407e97:	c0 e0 05             	shl    $0x5,%al
407e9a:	04 07                	add    $0x7,%al
407e9c:	02 c3                	add    %bl,%al
407e9e:	8b 7d fc             	mov    -0x4(%ebp),%edi
407ea1:	88 07                	mov    %al,(%edi)
407ea3:	ff 4e 30             	decl   0x30(%esi)
407ea6:	8b 46 30             	mov    0x30(%esi),%eax
407ea9:	89 45 fc             	mov    %eax,-0x4(%ebp)
407eac:	eb c5                	jmp    0x407e73
407eae:	2b c8                	sub    %eax,%ecx
407eb0:	40                   	inc    %eax
407eb1:	89 4e 34             	mov    %ecx,0x34(%esi)
407eb4:	5f                   	pop    %edi
407eb5:	89 46 30             	mov    %eax,0x30(%esi)