4099fb:	0f 86 52 ff ff ff    	jbe    0x409953
409a01:	8b 4d 24             	mov    0x24(%ebp),%ecx
409a04:	8b 09                	mov    (%ecx),%ecx
409a06:	8b 89 bc 00 00 00    	mov    0xbc(%ecx),%ecx
409a0c:	8b 09                	mov    (%ecx),%ecx
409a0e:	3a 01                	cmp    (%ecx),%al
409a10:	0f 84 54 ff ff ff    	je     0x40996a
409a16:	3a c3                	cmp    %bl,%al
409a18:	0f 84 66 ff ff ff    	je     0x409984
409a1e:	8b 55 ac             	mov    -0x54(%ebp),%edx
409a21:	e9 14 01 00 00       	jmp    0x409b3a
409a26:	89 75 a8             	mov    %esi,-0x58(%ebp)
409a29:	eb 1a                	jmp    0x409a45
409a2b:	3c 39                	cmp    $0x39,%al
409a2d:	7f 1a                	jg     0x409a49
409a2f:	83 7d b4 19          	cmpl   $0x19,-0x4c(%ebp)
409a33:	73 0a                	jae    0x409a3f
409a35:	ff 45 b4             	incl   -0x4c(%ebp)
409a38:	2a c3                	sub    %bl,%al
409a3a:	88 07                	mov    %al,(%edi)
409a3c:	47                   	inc    %edi
409a3d:	eb 03                	jmp    0x409a42
409a3f:	ff 45 b0             	incl   -0x50(%ebp)
409a42:	8a 02                	mov    (%edx),%al
409a44:	42                   	inc    %edx
409a45:	3a c3                	cmp    %bl,%al
409a47:	7d e2                	jge    0x409a2b
409a49:	8b 4d 24             	mov    0x24(%ebp),%ecx
409a4c:	8b 09                	mov    (%ecx),%ecx
409a4e:	8b 89 bc 00 00 00    	mov    0xbc(%ecx),%ecx
409a54:	8b 09                	mov    (%ecx),%ecx
409a56:	3a 01                	cmp    (%ecx),%al
409a58:	0f 84 5d ff ff ff    	je     0x4099bb
409a5e:	3c 2b                	cmp    $0x2b,%al
409a60:	74 89                	je     0x4099eb
409a62:	3c 2d                	cmp    $0x2d,%al
409a64:	74 85                	je     0x4099eb
409a66:	e9 60 ff ff ff       	jmp    0x4099cb
409a6b:	83 7d b4 00          	cmpl   $0x0,-0x4c(%ebp)
409a6f:	89 75 a8             	mov    %esi,-0x58(%ebp)
409a72:	89 75 a4             	mov    %esi,-0x5c(%ebp)
409a75:	75 26                	jne    0x409a9d
409a77:	eb 06                	jmp    0x409a7f
409a79:	ff 4d b0             	decl   -0x50(%ebp)
409a7c:	8a 02                	mov    (%edx),%al
409a7e:	42                   	inc    %edx
409a7f:	3a c3                	cmp    %bl,%al
409a81:	74 f6                	je     0x409a79
409a83:	eb 18                	jmp    0x409a9d
409a85:	3c 39                	cmp    $0x39,%al
409a87:	7f d5                	jg     0x409a5e
409a89:	83 7d b4 19          	cmpl   $0x19,-0x4c(%ebp)
409a8d:	73 0b                	jae    0x409a9a
409a8f:	ff 45 b4             	incl   -0x4c(%ebp)
409a92:	2a c3                	sub    %bl,%al
409a94:	88 07                	mov    %al,(%edi)
409a96:	47                   	inc    %edi
409a97:	ff 4d b0             	decl   -0x50(%ebp)
409a9a:	8a 02                	mov    (%edx),%al
409a9c:	42                   	inc    %edx
409a9d:	3a c3                	cmp    %bl,%al
409a9f:	7d e4                	jge    0x409a85
409aa1:	eb bb                	jmp    0x409a5e
409aa3:	2a c3                	sub    %bl,%al
409aa5:	89 75 a4             	mov    %esi,-0x5c(%ebp)
409aa8:	3c 09                	cmp    $0x9,%al
409aaa:	0f 87 6e ff ff ff    	ja     0x409a1e
409ab0:	6a 04                	push   $0x4
409ab2:	e9 9e fe ff ff       	jmp    0x409955
409ab7:	8d 4a fe             	lea    -0x2(%edx),%ecx
409aba:	89 4d ac             	mov    %ecx,-0x54(%ebp)
409abd:	8a c8                	mov    %al,%cl
409abf:	80 e9 31             	sub    $0x31,%cl
409ac2:	80 f9 08             	cmp    $0x8,%cl
409ac5:	77 07                	ja     0x409ace
409ac7:	6a 09                	push   $0x9
409ac9:	e9 87 fe ff ff       	jmp    0x409955
409ace:	0f be c0             	movsbl %al,%eax
409ad1:	83 e8 2b             	sub    $0x2b,%eax
409ad4:	74 20                	je     0x409af6
409ad6:	48                   	dec    %eax
409ad7:	48                   	dec    %eax
409ad8:	74 10                	je     0x409aea
409ada:	83 e8 03             	sub    $0x3,%eax
409add:	0f 85 3b ff ff ff    	jne    0x409a1e
409ae3:	6a 08                	push   $0x8
409ae5:	e9 82 fe ff ff       	jmp    0x40996c
409aea:	83 4d 98 ff          	orl    $0xffffffff,-0x68(%ebp)
409aee:	6a 07                	push   $0x7
409af0:	59                   	pop    %ecx
409af1:	e9 40 fe ff ff       	jmp    0x409936
409af6:	6a 07                	push   $0x7
409af8:	e9 6f fe ff ff       	jmp    0x40996c
409afd:	89 75 a0             	mov    %esi,-0x60(%ebp)
409b00:	eb 03                	jmp    0x409b05
409b02:	8a 02                	mov    (%edx),%al
409b04:	42                   	inc    %edx
409b05:	3a c3                	cmp    %bl,%al
409b07:	74 f9                	je     0x409b02
409b09:	2c 31                	sub    $0x31,%al
409b0b:	3c 08                	cmp    $0x8,%al
409b0d:	76 b8                	jbe    0x409ac7
409b0f:	4a                   	dec    %edx
409b10:	eb 28                	jmp    0x409b3a
409b12:	8a c8                	mov    %al,%cl
409b14:	80 e9 31             	sub    $0x31,%cl
409b17:	80 f9 08             	cmp    $0x8,%cl
409b1a:	76 ab                	jbe    0x409ac7
409b1c:	3a c3                	cmp    %bl,%al
409b1e:	eb bd                	jmp    0x409add
409b20:	83 7d 20 00          	cmpl   $0x0,0x20(%ebp)
409b24:	74 47                	je     0x409b6d
409b26:	0f be c0             	movsbl %al,%eax
409b29:	83 e8 2b             	sub    $0x2b,%eax
409b2c:	8d 4a ff             	lea    -0x1(%edx),%ecx
409b2f:	89 4d ac             	mov    %ecx,-0x54(%ebp)
409b32:	74 c2                	je     0x409af6
409b34:	48                   	dec    %eax
409b35:	48                   	dec    %eax
409b36:	74 b2                	je     0x409aea
409b38:	8b d1                	mov    %ecx,%edx
409b3a:	83 7d a8 00          	cmpl   $0x0,-0x58(%ebp)
409b3e:	8b 45 90             	mov    -0x70(%ebp),%eax
409b41:	89 10                	mov    %edx,(%eax)
409b43:	0f 84 d9 03 00 00    	je     0x409f22
409b49:	6a 18                	push   $0x18
409b4b:	58                   	pop    %eax
409b4c:	39 45 b4             	cmp    %eax,-0x4c(%ebp)
409b4f:	76 10                	jbe    0x409b61
409b51:	80 7d f7 05          	cmpb   $0x5,-0x9(%ebp)
409b55:	7c 03                	jl     0x409b5a
409b57:	fe 45 f7             	incb   -0x9(%ebp)
409b5a:	4f                   	dec    %edi
409b5b:	ff 45 b0             	incl   -0x50(%ebp)
409b5e:	89 45 b4             	mov    %eax,-0x4c(%ebp)
409b61:	83 7d b4 00          	cmpl   $0x0,-0x4c(%ebp)
409b65:	0f 86 de 03 00 00    	jbe    0x409f49
409b6b:	eb 59                	jmp    0x409bc6
409b6d:	6a 0a                	push   $0xa
409b6f:	59                   	pop    %ecx
409b70:	4a                   	dec    %edx
409b71:	83 f9 0a             	cmp    $0xa,%ecx
409b74:	0f 85 bc fd ff ff    	jne    0x409936
409b7a:	eb be                	jmp    0x409b3a
409b7c:	89 75 a0             	mov    %esi,-0x60(%ebp)
409b7f:	33 c9                	xor    %ecx,%ecx
409b81:	eb 19                	jmp    0x409b9c
409b83:	3c 39                	cmp    $0x39,%al
409b85:	7f 20                	jg     0x409ba7
409b87:	6b c9 0a             	imul   $0xa,%ecx,%ecx
409b8a:	0f be f0             	movsbl %al,%esi
409b8d:	8d 4c 31 d0          	lea    -0x30(%ecx,%esi,1),%ecx
409b91:	81 f9 50 14 00 00    	cmp    $0x1450,%ecx
409b97:	7f 09                	jg     0x409ba2
409b99:	8a 02                	mov    (%edx),%al
409b9b:	42                   	inc    %edx
409b9c:	3a c3                	cmp    %bl,%al
409b9e:	7d e3                	jge    0x409b83
409ba0:	eb 05                	jmp    0x409ba7
409ba2:	b9 51 14 00 00       	mov    $0x1451,%ecx
409ba7:	89 4d 9c             	mov    %ecx,-0x64(%ebp)
409baa:	eb 0b                	jmp    0x409bb7
409bac:	3c 39                	cmp    $0x39,%al
409bae:	0f 8f 5b ff ff ff    	jg     0x409b0f
409bb4:	8a 02                	mov    (%edx),%al
409bb6:	42                   	inc    %edx
409bb7:	3a c3                	cmp    %bl,%al
409bb9:	7d f1                	jge    0x409bac
409bbb:	e9 4f ff ff ff       	jmp    0x409b0f
409bc0:	ff 4d b4             	decl   -0x4c(%ebp)
409bc3:	ff 45 b0             	incl   -0x50(%ebp)
409bc6:	4f                   	dec    %edi
409bc7:	80 3f 00             	cmpb   $0x0,(%edi)
409bca:	74 f4                	je     0x409bc0
409bcc:	8d 45 c4             	lea    -0x3c(%ebp),%eax
409bcf:	50                   	push   %eax
409bd0:	ff 75 b4             	push   -0x4c(%ebp)
409bd3:	8d 45 e0             	lea    -0x20(%ebp),%eax
409bd6:	50                   	push   %eax
409bd7:	e8 c9 14 00 00       	call   0x40b0a5
409bdc:	8b 45 9c             	mov    -0x64(%ebp),%eax
409bdf:	33 d2                	xor    %edx,%edx
409be1:	83 c4 0c             	add    $0xc,%esp
409be4:	39 55 98             	cmp    %edx,-0x68(%ebp)
409be7:	7d 02                	jge    0x409beb
409be9:	f7 d8                	neg    %eax
409beb:	03 45 b0             	add    -0x50(%ebp),%eax
409bee:	39 55 a0             	cmp    %edx,-0x60(%ebp)
409bf1:	75 03                	jne    0x409bf6
409bf3:	03 45 18             	add    0x18(%ebp),%eax
409bf6:	39 55 a4             	cmp    %edx,-0x5c(%ebp)
409bf9:	75 03                	jne    0x409bfe
409bfb:	2b 45 1c             	sub    0x1c(%ebp),%eax
409bfe:	3d 50 14 00 00       	cmp    $0x1450,%eax
409c03:	0f 8f 22 03 00 00    	jg     0x409f2b
409c09:	3d b0 eb ff ff       	cmp    $0xffffebb0,%eax
409c0e:	0f 8c 2e 03 00 00    	jl     0x409f42
409c14:	b9 c0 fd 41 00       	mov    $0x41fdc0,%ecx
409c19:	83 e9 60             	sub    $0x60,%ecx
409c1c:	89 45 ac             	mov    %eax,-0x54(%ebp)
409c1f:	3b c2                	cmp    %edx,%eax
409c21:	0f 84 e9 02 00 00    	je     0x409f10
409c27:	7d 0d                	jge    0x409c36
409c29:	f7 d8                	neg    %eax
409c2b:	b9 20 ff 41 00       	mov    $0x41ff20,%ecx
409c30:	89 45 ac             	mov    %eax,-0x54(%ebp)
409c33:	83 e9 60             	sub    $0x60,%ecx
409c36:	39 55 14             	cmp    %edx,0x14(%ebp)
409c39:	75 06                	jne    0x409c41
409c3b:	33 c0                	xor    %eax,%eax
409c3d:	66 89 45 c4          	mov    %ax,-0x3c(%ebp)
409c41:	39 55 ac             	cmp    %edx,-0x54(%ebp)
409c44:	0f 84 c6 02 00 00    	je     0x409f10
409c4a:	eb 05                	jmp    0x409c51
409c4c:	8b 4d 84             	mov    -0x7c(%ebp),%ecx
409c4f:	33 d2                	xor    %edx,%edx
409c51:	8b 45 ac             	mov    -0x54(%ebp),%eax
409c54:	c1 7d ac 03          	sarl   $0x3,-0x54(%ebp)
409c58:	83 c1 54             	add    $0x54,%ecx
409c5b:	83 e0 07             	and    $0x7,%eax
409c5e:	89 4d 84             	mov    %ecx,-0x7c(%ebp)
409c61:	3b c2                	cmp    %edx,%eax
409c63:	0f 84 9d 02 00 00    	je     0x409f06
409c69:	6b c0 0c             	imul   $0xc,%eax,%eax
409c6c:	03 c1                	add    %ecx,%eax
409c6e:	8b d8                	mov    %eax,%ebx
409c70:	b8 00 80 00 00       	mov    $0x8000,%eax
409c75:	66 39 03             	cmp    %ax,(%ebx)
409c78:	72 0e                	jb     0x409c88
409c7a:	8b f3                	mov    %ebx,%esi
409c7c:	8d 7d b8             	lea    -0x48(%ebp),%edi
409c7f:	a5                   	movsl  %ds:(%esi),%es:(%edi)
409c80:	a5                   	movsl  %ds:(%esi),%es:(%edi)
409c81:	a5                   	movsl  %ds:(%esi),%es:(%edi)
409c82:	ff 4d ba             	decl   -0x46(%ebp)
409c85:	8d 5d b8             	lea    -0x48(%ebp),%ebx
409c88:	0f b7 4b 0a          	movzwl 0xa(%ebx),%ecx
409c8c:	33 c0                	xor    %eax,%eax
409c8e:	89 45 b0             	mov    %eax,-0x50(%ebp)
409c91:	89 45 d4             	mov    %eax,-0x2c(%ebp)
409c94:	89 45 d8             	mov    %eax,-0x28(%ebp)
409c97:	89 45 dc             	mov    %eax,-0x24(%ebp)
409c9a:	8b 45 ce             	mov    -0x32(%ebp),%eax
409c9d:	8b f1                	mov    %ecx,%esi
409c9f:	ba ff 7f 00 00       	mov    $0x7fff,%edx
409ca4:	33 f0                	xor    %eax,%esi
409ca6:	23 c2                	and    %edx,%eax
409ca8:	23 ca                	and    %edx,%ecx
409caa:	81 e6 00 80 00 00    	and    $0x8000,%esi
409cb0:	bf ff 7f 00 00       	mov    $0x7fff,%edi
409cb5:	8d 14 01             	lea    (%ecx,%eax,1),%edx
409cb8:	89 75 90             	mov    %esi,-0x70(%ebp)
409cbb:	0f b7 d2             	movzwl %dx,%edx
409cbe:	66 3b c7             	cmp    %di,%ax
409cc1:	0f 83 21 02 00 00    	jae    0x409ee8
409cc7:	66 3b cf             	cmp    %di,%cx
409cca:	0f 83 18 02 00 00    	jae    0x409ee8
409cd0:	bf fd bf 00 00       	mov    $0xbffd,%edi
409cd5:	66 3b d7             	cmp    %di,%dx
409cd8:	0f 87 0a 02 00 00    	ja     0x409ee8
409cde:	be bf 3f 00 00       	mov    $0x3fbf,%esi
409ce3:	66 3b d6             	cmp    %si,%dx
409ce6:	77 0d                	ja     0x409cf5
409ce8:	33 c0                	xor    %eax,%eax
409cea:	89 45 c8             	mov    %eax,-0x38(%ebp)
409ced:	89 45 c4             	mov    %eax,-0x3c(%ebp)
409cf0:	e9 0e 02 00 00       	jmp    0x409f03
409cf5:	33 f6                	xor    %esi,%esi
409cf7:	66 3b c6             	cmp    %si,%ax
409cfa:	75 1f                	jne    0x409d1b
409cfc:	42                   	inc    %edx
409cfd:	f7 45 cc ff ff ff 7f 	testl  $0x7fffffff,-0x34(%ebp)
409d04:	75 15                	jne    0x409d1b
409d06:	39 75 c8             	cmp    %esi,-0x38(%ebp)
409d09:	75 10                	jne    0x409d1b
409d0b:	39 75 c4             	cmp    %esi,-0x3c(%ebp)
409d0e:	75 0b                	jne    0x409d1b
409d10:	33 c0                	xor    %eax,%eax
409d12:	66 89 45 ce          	mov    %ax,-0x32(%ebp)
409d16:	e9 eb 01 00 00       	jmp    0x409f06
409d1b:	66 3b ce             	cmp    %si,%cx
409d1e:	75 21                	jne    0x409d41
409d20:	42                   	inc    %edx
409d21:	f7 43 08 ff ff ff 7f 	testl  $0x7fffffff,0x8(%ebx)
409d28:	75 17                	jne    0x409d41
409d2a:	39 73 04             	cmp    %esi,0x4(%ebx)
409d2d:	75 12                	jne    0x409d41
409d2f:	39 33                	cmp    %esi,(%ebx)
409d31:	75 0e                	jne    0x409d41
409d33:	89 75 cc             	mov    %esi,-0x34(%ebp)
409d36:	89 75 c8             	mov    %esi,-0x38(%ebp)
409d39:	89 75 c4             	mov    %esi,-0x3c(%ebp)
409d3c:	e9 c5 01 00 00       	jmp    0x409f06
409d41:	89 75 98             	mov    %esi,-0x68(%ebp)
409d44:	8d 7d d8             	lea    -0x28(%ebp),%edi
409d47:	c7 45 a8 05 00 00 00 	movl   $0x5,-0x58(%ebp)
409d4e:	8b 45 98             	mov    -0x68(%ebp),%eax
409d51:	8b 4d a8             	mov    -0x58(%ebp),%ecx
409d54:	03 c0                	add    %eax,%eax
409d56:	89 4d 9c             	mov    %ecx,-0x64(%ebp)
409d59:	85 c9                	test   %ecx,%ecx
409d5b:	7e 52                	jle    0x409daf
409d5d:	8d 44 05 c4          	lea    -0x3c(%ebp,%eax,1),%eax
409d61:	89 45 a4             	mov    %eax,-0x5c(%ebp)
409d64:	8d 43 08             	lea    0x8(%ebx),%eax
409d67:	89 45 a0             	mov    %eax,-0x60(%ebp)
409d6a:	8b 45 a0             	mov    -0x60(%ebp),%eax
409d6d:	8b 4d a4             	mov    -0x5c(%ebp),%ecx
409d70:	0f b7 09             	movzwl (%ecx),%ecx
409d73:	0f b7 00             	movzwl (%eax),%eax
409d76:	83 65 b4 00          	andl   $0x0,-0x4c(%ebp)
409d7a:	0f af c1             	imul   %ecx,%eax
409d7d:	8b 4f fc             	mov    -0x4(%edi),%ecx
409d80:	8d 34 01             	lea    (%ecx,%eax,1),%esi
409d83:	3b f1                	cmp    %ecx,%esi
409d85:	72 04                	jb     0x409d8b
409d87:	3b f0                	cmp    %eax,%esi
409d89:	73 07                	jae    0x409d92
409d8b:	c7 45 b4 01 00 00 00 	movl   $0x1,-0x4c(%ebp)
409d92:	83 7d b4 00          	cmpl   $0x0,-0x4c(%ebp)
409d96:	89 77 fc             	mov    %esi,-0x4(%edi)
409d99:	74 03                	je     0x409d9e
409d9b:	66 ff 07             	incw   (%edi)
409d9e:	83 45 a4 02          	addl   $0x2,-0x5c(%ebp)
409da2:	83 6d a0 02          	subl   $0x2,-0x60(%ebp)
409da6:	ff 4d 9c             	decl   -0x64(%ebp)
409da9:	83 7d 9c 00          	cmpl   $0x0,-0x64(%ebp)
409dad:	7f bb                	jg     0x409d6a
409daf:	47                   	inc    %edi
409db0:	47                   	inc    %edi
409db1:	ff 45 98             	incl   -0x68(%ebp)
409db4:	ff 4d a8             	decl   -0x58(%ebp)
409db7:	83 7d a8 00          	cmpl   $0x0,-0x58(%ebp)
409dbb:	7f 91                	jg     0x409d4e
409dbd:	81 c2 02 c0 00 00    	add    $0xc002,%edx
409dc3:	66 85 d2             	test   %dx,%dx
409dc6:	7e 37                	jle    0x409dff
409dc8:	8b 7d dc             	mov    -0x24(%ebp),%edi
409dcb:	85 ff                	test   %edi,%edi
409dcd:	78 2b                	js     0x409dfa
409dcf:	8b 75 d8             	mov    -0x28(%ebp),%esi
409dd2:	8b 45 d4             	mov    -0x2c(%ebp),%eax
409dd5:	d1 65 d4             	shll   $1,-0x2c(%ebp)
409dd8:	c1 e8 1f             	shr    $0x1f,%eax
409ddb:	8b ce                	mov    %esi,%ecx
409ddd:	03 f6                	add    %esi,%esi
409ddf:	0b f0                	or     %eax,%esi
409de1:	c1 e9 1f             	shr    $0x1f,%ecx
409de4:	8d 04 3f             	lea    (%edi,%edi,1),%eax
409de7:	0b c1                	or     %ecx,%eax