406bed:	33 c9                	xor    %ecx,%ecx
406bef:	99                   	cltd
406bf0:	03 0f                	add    (%edi),%ecx
406bf2:	89 0e                	mov    %ecx,(%esi)
406bf4:	83 d0 00             	adc    $0x0,%eax
406bf7:	89 46 04             	mov    %eax,0x4(%esi)
406bfa:	b0 01                	mov    $0x1,%al
406bfc:	5f                   	pop    %edi
406bfd:	5e                   	pop    %esi
406bfe:	5d                   	pop    %ebp
406bff:	c3                   	ret
406c00:	8b ff                	mov    %edi,%edi
406c02:	55                   	push   %ebp
406c03:	8b ec                	mov    %esp,%ebp
406c05:	56                   	push   %esi
406c06:	57                   	push   %edi
406c07:	0f b6 7d 08          	movzbl 0x8(%ebp),%edi
406c0b:	8b c7                	mov    %edi,%eax
406c0d:	c1 e8 04             	shr    $0x4,%eax
406c10:	a8 01                	test   $0x1,%al
406c12:	75 12                	jne    0x406c26
406c14:	ff 75 0c             	push   0xc(%ebp)
406c17:	e8 26 01 00 00       	call   0x406d42
406c1c:	be 00 80 00 00       	mov    $0x8000,%esi
406c21:	59                   	pop    %ecx
406c22:	84 c0                	test   %al,%al
406c24:	74 05                	je     0x406c2b
406c26:	be 40 40 00 00       	mov    $0x4040,%esi
406c2b:	ff 75 0c             	push   0xc(%ebp)
406c2e:	c1 e7 07             	shl    $0x7,%edi
406c31:	f7 d7                	not    %edi
406c33:	81 e7 80 00 00 00    	and    $0x80,%edi
406c39:	81 cf 00 01 00 00    	or     $0x100,%edi
406c3f:	0b f7                	or     %edi,%esi
406c41:	e8 8d 00 00 00       	call   0x406cd3
406c46:	59                   	pop    %ecx
406c47:	84 c0                	test   %al,%al
406c49:	74 03                	je     0x406c4e
406c4b:	83 ce 40             	or     $0x40,%esi
406c4e:	8b c6                	mov    %esi,%eax
406c50:	c1 e8 03             	shr    $0x3,%eax
406c53:	83 e0 38             	and    $0x38,%eax
406c56:	0b f0                	or     %eax,%esi
406c58:	8b c6                	mov    %esi,%eax
406c5a:	c1 e8 06             	shr    $0x6,%eax
406c5d:	83 e0 07             	and    $0x7,%eax
406c60:	5f                   	pop    %edi
406c61:	0b c6                	or     %esi,%eax
406c63:	5e                   	pop    %esi
406c64:	5d                   	pop    %ebp
406c65:	c3                   	ret
406c66:	8b ff                	mov    %edi,%edi
406c68:	55                   	push   %ebp
406c69:	8b ec                	mov    %esp,%ebp
406c6b:	8b 4d 08             	mov    0x8(%ebp),%ecx
406c6e:	33 d2                	xor    %edx,%edx
406c70:	53                   	push   %ebx
406c71:	56                   	push   %esi
406c72:	8b 75 0c             	mov    0xc(%ebp),%esi
406c75:	57                   	push   %edi
406c76:	6a 41                	push   $0x41
406c78:	5b                   	pop    %ebx
406c79:	89 16                	mov    %edx,(%esi)
406c7b:	0f b7 01             	movzwl (%ecx),%eax
406c7e:	6a 5a                	push   $0x5a
406c80:	5f                   	pop    %edi
406c81:	66 3b d8             	cmp    %ax,%bx
406c84:	77 05                	ja     0x406c8b
406c86:	66 3b c7             	cmp    %di,%ax
406c89:	76 0f                	jbe    0x406c9a
406c8b:	6a 61                	push   $0x61
406c8d:	5a                   	pop    %edx
406c8e:	66 3b d0             	cmp    %ax,%dx
406c91:	77 39                	ja     0x406ccc
406c93:	83 f8 7a             	cmp    $0x7a,%eax
406c96:	77 34                	ja     0x406ccc
406c98:	33 d2                	xor    %edx,%edx
406c9a:	66 83 79 02 3a       	cmpw   $0x3a,0x2(%ecx)
406c9f:	75 24                	jne    0x406cc5
406ca1:	66 39 51 04          	cmp    %dx,0x4(%ecx)
406ca5:	75 0c                	jne    0x406cb3
406ca7:	6a 02                	push   $0x2
406ca9:	e8 23 10 00 00       	call   0x407cd1
406cae:	59                   	pop    %ecx
406caf:	32 c0                	xor    %al,%al
406cb1:	eb 1b                	jmp    0x406cce
406cb3:	66 3b c3             	cmp    %bx,%ax
406cb6:	72 08                	jb     0x406cc0
406cb8:	66 3b c7             	cmp    %di,%ax
406cbb:	77 03                	ja     0x406cc0
406cbd:	83 c0 20             	add    $0x20,%eax
406cc0:	83 c0 a0             	add    $0xffffffa0,%eax
406cc3:	89 06                	mov    %eax,(%esi)
406cc5:	e8 a6 4d 00 00       	call   0x40ba70
406cca:	89 06                	mov    %eax,(%esi)
406ccc:	b0 01                	mov    $0x1,%al
406cce:	5f                   	pop    %edi
406ccf:	5e                   	pop    %esi
406cd0:	5b                   	pop    %ebx
406cd1:	5d                   	pop    %ebp
406cd2:	c3                   	ret
406cd3:	8b ff                	mov    %edi,%edi
406cd5:	55                   	push   %ebp
406cd6:	8b ec                	mov    %esp,%ebp
406cd8:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
406cdc:	75 04                	jne    0x406ce2
406cde:	32 c0                	xor    %al,%al
406ce0:	5d                   	pop    %ebp
406ce1:	c3                   	ret
406ce2:	56                   	push   %esi
406ce3:	6a 2e                	push   $0x2e
406ce5:	ff 75 08             	push   0x8(%ebp)
406ce8:	e8 27 d7 ff ff       	call   0x404414
406ced:	8b f0                	mov    %eax,%esi
406cef:	59                   	pop    %ecx
406cf0:	59                   	pop    %ecx
406cf1:	85 f6                	test   %esi,%esi
406cf3:	74 44                	je     0x406d39
406cf5:	68 14 0b 42 00       	push   $0x420b14
406cfa:	56                   	push   %esi
406cfb:	e8 e5 12 00 00       	call   0x407fe5
406d00:	59                   	pop    %ecx
406d01:	59                   	pop    %ecx
406d02:	85 c0                	test   %eax,%eax
406d04:	74 37                	je     0x406d3d
406d06:	68 fc bc 41 00       	push   $0x41bcfc
406d0b:	56                   	push   %esi
406d0c:	e8 d4 12 00 00       	call   0x407fe5
406d11:	59                   	pop    %ecx
406d12:	59                   	pop    %ecx
406d13:	85 c0                	test   %eax,%eax
406d15:	74 26                	je     0x406d3d
406d17:	68 08 bd 41 00       	push   $0x41bd08
406d1c:	56                   	push   %esi
406d1d:	e8 c3 12 00 00       	call   0x407fe5
406d22:	59                   	pop    %ecx
406d23:	59                   	pop    %ecx
406d24:	85 c0                	test   %eax,%eax
406d26:	74 15                	je     0x406d3d
406d28:	68 14 bd 41 00       	push   $0x41bd14
406d2d:	56                   	push   %esi
406d2e:	e8 b2 12 00 00       	call   0x407fe5
406d33:	59                   	pop    %ecx
406d34:	59                   	pop    %ecx
406d35:	85 c0                	test   %eax,%eax
406d37:	74 04                	je     0x406d3d
406d39:	32 c0                	xor    %al,%al
406d3b:	eb 02                	jmp    0x406d3f
406d3d:	b0 01                	mov    $0x1,%al
406d3f:	5e                   	pop    %esi
406d40:	5d                   	pop    %ebp
406d41:	c3                   	ret
406d42:	8b ff                	mov    %edi,%edi
406d44:	55                   	push   %ebp
406d45:	8b ec                	mov    %esp,%ebp
406d47:	8b 4d 08             	mov    0x8(%ebp),%ecx
406d4a:	85 c9                	test   %ecx,%ecx
406d4c:	74 47                	je     0x406d95
406d4e:	0f b7 01             	movzwl (%ecx),%eax
406d51:	6a 41                	push   $0x41
406d53:	5a                   	pop    %edx
406d54:	66 3b d0             	cmp    %ax,%dx
406d57:	77 05                	ja     0x406d5e
406d59:	83 f8 5a             	cmp    $0x5a,%eax
406d5c:	76 0d                	jbe    0x406d6b
406d5e:	6a 61                	push   $0x61
406d60:	5a                   	pop    %edx
406d61:	66 3b d0             	cmp    %ax,%dx
406d64:	77 0f                	ja     0x406d75
406d66:	83 f8 7a             	cmp    $0x7a,%eax
406d69:	77 0a                	ja     0x406d75
406d6b:	66 83 79 02 3a       	cmpw   $0x3a,0x2(%ecx)
406d70:	75 03                	jne    0x406d75
406d72:	83 c1 04             	add    $0x4,%ecx
406d75:	0f b7 01             	movzwl (%ecx),%eax
406d78:	66 85 c0             	test   %ax,%ax
406d7b:	75 04                	jne    0x406d81
406d7d:	b0 01                	mov    $0x1,%al
406d7f:	5d                   	pop    %ebp
406d80:	c3                   	ret
406d81:	50                   	push   %eax
406d82:	e8 d6 00 00 00       	call   0x406e5d
406d87:	83 c4 04             	add    $0x4,%esp
406d8a:	84 c0                	test   %al,%al
406d8c:	74 07                	je     0x406d95
406d8e:	66 83 79 02 00       	cmpw   $0x0,0x2(%ecx)
406d93:	74 e8                	je     0x406d7d
406d95:	32 c0                	xor    %al,%al
406d97:	5d                   	pop    %ebp
406d98:	c3                   	ret
406d99:	8b ff                	mov    %edi,%edi
406d9b:	55                   	push   %ebp
406d9c:	8b ec                	mov    %esp,%ebp
406d9e:	8b 55 08             	mov    0x8(%ebp),%edx
406da1:	8b ca                	mov    %edx,%ecx
406da3:	56                   	push   %esi
406da4:	57                   	push   %edi
406da5:	33 ff                	xor    %edi,%edi
406da7:	8d 71 02             	lea    0x2(%ecx),%esi
406daa:	66 8b 01             	mov    (%ecx),%ax
406dad:	83 c1 02             	add    $0x2,%ecx
406db0:	66 3b c7             	cmp    %di,%ax
406db3:	75 f5                	jne    0x406daa
406db5:	2b ce                	sub    %esi,%ecx
406db7:	d1 f9                	sar    $1,%ecx
406db9:	83 f9 05             	cmp    $0x5,%ecx
406dbc:	0f 82 95 00 00 00    	jb     0x406e57
406dc2:	0f b7 02             	movzwl (%edx),%eax
406dc5:	50                   	push   %eax
406dc6:	e8 92 00 00 00       	call   0x406e5d
406dcb:	83 c4 04             	add    $0x4,%esp
406dce:	84 c0                	test   %al,%al
406dd0:	0f 84 81 00 00 00    	je     0x406e57
406dd6:	0f b7 42 02          	movzwl 0x2(%edx),%eax
406dda:	50                   	push   %eax
406ddb:	e8 7d 00 00 00       	call   0x406e5d
406de0:	83 c4 04             	add    $0x4,%esp
406de3:	84 c0                	test   %al,%al
406de5:	74 70                	je     0x406e57
406de7:	0f b7 42 04          	movzwl 0x4(%edx),%eax
406deb:	50                   	push   %eax
406dec:	e8 6c 00 00 00       	call   0x406e5d
406df1:	83 c4 04             	add    $0x4,%esp
406df4:	84 c0                	test   %al,%al
406df6:	75 5f                	jne    0x406e57
406df8:	8d 4a 06             	lea    0x6(%edx),%ecx
406dfb:	0f b7 01             	movzwl (%ecx),%eax
406dfe:	66 85 c0             	test   %ax,%ax
406e01:	74 54                	je     0x406e57
406e03:	50                   	push   %eax
406e04:	e8 54 00 00 00       	call   0x406e5d
406e09:	83 c4 04             	add    $0x4,%esp
406e0c:	84 c0                	test   %al,%al
406e0e:	75 0b                	jne    0x406e1b
406e10:	83 c1 02             	add    $0x2,%ecx
406e13:	0f b7 01             	movzwl (%ecx),%eax
406e16:	66 85 c0             	test   %ax,%ax
406e19:	75 e8                	jne    0x406e03
406e1b:	66 39 39             	cmp    %di,(%ecx)
406e1e:	74 37                	je     0x406e57
406e20:	83 c1 02             	add    $0x2,%ecx
406e23:	66 39 39             	cmp    %di,(%ecx)
406e26:	74 2f                	je     0x406e57
406e28:	0f b7 01             	movzwl (%ecx),%eax
406e2b:	66 85 c0             	test   %ax,%ax
406e2e:	74 23                	je     0x406e53
406e30:	50                   	push   %eax
406e31:	e8 27 00 00 00       	call   0x406e5d
406e36:	83 c4 04             	add    $0x4,%esp
406e39:	84 c0                	test   %al,%al
406e3b:	75 0b                	jne    0x406e48
406e3d:	83 c1 02             	add    $0x2,%ecx
406e40:	0f b7 01             	movzwl (%ecx),%eax
406e43:	66 85 c0             	test   %ax,%ax
406e46:	75 e8                	jne    0x406e30
406e48:	66 39 39             	cmp    %di,(%ecx)
406e4b:	74 06                	je     0x406e53
406e4d:	66 39 79 02          	cmp    %di,0x2(%ecx)
406e51:	75 04                	jne    0x406e57
406e53:	b0 01                	mov    $0x1,%al
406e55:	eb 02                	jmp    0x406e59
406e57:	32 c0                	xor    %al,%al
406e59:	5f                   	pop    %edi
406e5a:	5e                   	pop    %esi
406e5b:	5d                   	pop    %ebp
406e5c:	c3                   	ret
406e5d:	8b ff                	mov    %edi,%edi
406e5f:	55                   	push   %ebp
406e60:	8b ec                	mov    %esp,%ebp
406e62:	66 83 7d 08 5c       	cmpw   $0x5c,0x8(%ebp)
406e67:	74 0b                	je     0x406e74
406e69:	66 83 7d 08 2f       	cmpw   $0x2f,0x8(%ebp)
406e6e:	74 04                	je     0x406e74
406e70:	33 c0                	xor    %eax,%eax
406e72:	5d                   	pop    %ebp
406e73:	c3                   	ret
406e74:	33 c0                	xor    %eax,%eax
406e76:	40                   	inc    %eax
406e77:	5d                   	pop    %ebp
406e78:	c3                   	ret
406e79:	8b ff                	mov    %edi,%edi
406e7b:	55                   	push   %ebp
406e7c:	8b ec                	mov    %esp,%ebp
406e7e:	81 ec 10 02 00 00    	sub    $0x210,%esp
406e84:	a1 0c 30 42 00       	mov    0x42300c,%eax
406e89:	33 c5                	xor    %ebp,%eax
406e8b:	89 45 fc             	mov    %eax,-0x4(%ebp)
406e8e:	56                   	push   %esi
406e8f:	8b 75 08             	mov    0x8(%ebp),%esi
406e92:	68 20 bd 41 00       	push   $0x41bd20
406e97:	56                   	push   %esi
406e98:	e8 ad 4d 00 00       	call   0x40bc4a
406e9d:	59                   	pop    %ecx
406e9e:	59                   	pop    %ecx
406e9f:	85 c0                	test   %eax,%eax
406ea1:	75 04                	jne    0x406ea7
406ea3:	32 c0                	xor    %al,%al
406ea5:	eb 70                	jmp    0x406f17
406ea7:	53                   	push   %ebx
406ea8:	8d 85 f0 fd ff ff    	lea    -0x210(%ebp),%eax
406eae:	33 db                	xor    %ebx,%ebx
406eb0:	50                   	push   %eax
406eb1:	68 04 01 00 00       	push   $0x104
406eb6:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
406ebc:	89 9d f0 fd ff ff    	mov    %ebx,-0x210(%ebp)
406ec2:	56                   	push   %esi
406ec3:	50                   	push   %eax
406ec4:	e8 97 fc ff ff       	call   0x406b60
406ec9:	8b d0                	mov    %eax,%edx
406ecb:	83 c4 10             	add    $0x10,%esp
406ece:	85 d2                	test   %edx,%edx
406ed0:	74 36                	je     0x406f08
406ed2:	8b ca                	mov    %edx,%ecx
406ed4:	57                   	push   %edi
406ed5:	8d 79 02             	lea    0x2(%ecx),%edi
406ed8:	66 8b 01             	mov    (%ecx),%ax
406edb:	83 c1 02             	add    $0x2,%ecx
406ede:	66 3b c3             	cmp    %bx,%ax
406ee1:	75 f5                	jne    0x406ed8
406ee3:	2b cf                	sub    %edi,%ecx
406ee5:	d1 f9                	sar    $1,%ecx
406ee7:	5f                   	pop    %edi
406ee8:	83 f9 03             	cmp    $0x3,%ecx
406eeb:	74 0b                	je     0x406ef8
406eed:	52                   	push   %edx
406eee:	e8 a6 fe ff ff       	call   0x406d99
406ef3:	59                   	pop    %ecx
406ef4:	84 c0                	test   %al,%al
406ef6:	74 10                	je     0x406f08
406ef8:	56                   	push   %esi
406ef9:	ff 15 10 b1 41 00    	call   *0x41b110
406eff:	33 db                	xor    %ebx,%ebx
406f01:	43                   	inc    %ebx
406f02:	3b c3                	cmp    %ebx,%eax
406f04:	77 02                	ja     0x406f08
406f06:	33 db                	xor    %ebx,%ebx
406f08:	ff b5 f0 fd ff ff    	push   -0x210(%ebp)
406f0e:	e8 4c 0b 00 00       	call   0x407a5f
406f13:	59                   	pop    %ecx
406f14:	8a c3                	mov    %bl,%al
406f16:	5b                   	pop    %ebx
406f17:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406f1a:	33 cd                	xor    %ebp,%ecx
406f1c:	5e                   	pop    %esi
406f1d:	e8 34 c0 ff ff       	call   0x402f56
406f22:	8b e5                	mov    %ebp,%esp
406f24:	5d                   	pop    %ebp
406f25:	c3                   	ret
406f26:	8b ff                	mov    %edi,%edi
406f28:	55                   	push   %ebp