409a97:	bf 01 00 00 00       	mov    $0x1,%edi
409a9c:	e9 de fd ff ff       	jmp    0x40987f
409aa1:	83 bc 24 a8 00 00 00 	cmpl   $0x0,0xa8(%esp)
409aa8:	00
409aa9:	0f 85 f0 2c 07 00    	jne    0x47c79f
409aaf:	8b 44 24 20          	mov    0x20(%esp),%eax
409ab3:	85 c0                	test   %eax,%eax
409ab5:	0f 84 67 2d 07 00    	je     0x47c822
409abb:	8b 4d 0c             	mov    0xc(%ebp),%ecx
409abe:	8d 44 24 18          	lea    0x18(%esp),%eax
409ac2:	50                   	push   %eax
409ac3:	e8 78 90 00 00       	call   0x412b40
409ac8:	8d 4c 24 18          	lea    0x18(%esp),%ecx
409acc:	e8 21 b9 ff ff       	call   0x4053f2
409ad1:	8d 4c 24 28          	lea    0x28(%esp),%ecx
409ad5:	e8 5d 30 00 00       	call   0x40cb37
409ada:	8d 4c 24 70          	lea    0x70(%esp),%ecx
409ade:	e8 37 f3 ff ff       	call   0x408e1a
409ae3:	5f                   	pop    %edi
409ae4:	5e                   	pop    %esi
409ae5:	33 c0                	xor    %eax,%eax
409ae7:	5b                   	pop    %ebx
409ae8:	8b e5                	mov    %ebp,%esp
409aea:	5d                   	pop    %ebp
409aeb:	c2 08 00             	ret    $0x8
409aee:	56                   	push   %esi
409aef:	8d 4c 24 2c          	lea    0x2c(%esp),%ecx
409af3:	e8 71 28 00 00       	call   0x40c369
409af8:	8b 5c 24 34          	mov    0x34(%esp),%ebx
409afc:	8b 44 24 28          	mov    0x28(%esp),%eax
409b00:	e9 8b fe ff ff       	jmp    0x409990
409b05:	b8 08 00 00 00       	mov    $0x8,%eax
409b0a:	89 44 24 3c          	mov    %eax,0x3c(%esp)
409b0e:	e9 2c ff ff ff       	jmp    0x409a3f
409b13:	33 f6                	xor    %esi,%esi
409b15:	e9 1f fc ff ff       	jmp    0x409739
409b1a:	b8 01 00 00 00       	mov    $0x1,%eax
409b1f:	e9 2c fc ff ff       	jmp    0x409750
409b24:	be fa ff ff ff       	mov    $0xfffffffa,%esi
409b29:	e9 d5 2c 07 00       	jmp    0x47c803
409b2e:	be f9 ff ff ff       	mov    $0xfffffff9,%esi
409b33:	e9 cb 2c 07 00       	jmp    0x47c803
409b38:	33 db                	xor    %ebx,%ebx
409b3a:	e9 1b fe ff ff       	jmp    0x40995a
409b3f:	b8 08 00 00 00       	mov    $0x8,%eax
409b44:	e9 26 fe ff ff       	jmp    0x40996f
409b49:	ff d0                	call   *%eax
409b4b:	e9 77 fe ff ff       	jmp    0x4099c7
409b50:	33 c0                	xor    %eax,%eax
409b52:	e9 aa fe ff ff       	jmp    0x409a01
409b57:	cc                   	int3
409b58:	cc                   	int3
409b59:	cc                   	int3
409b5a:	cc                   	int3
409b5b:	cc                   	int3
409b5c:	cc                   	int3
409b5d:	cc                   	int3
409b5e:	cc                   	int3
409b5f:	cc                   	int3
409b60:	55                   	push   %ebp
409b61:	8b ec                	mov    %esp,%ebp
409b63:	81 ec 14 01 00 00    	sub    $0x114,%esp
409b69:	53                   	push   %ebx
409b6a:	56                   	push   %esi
409b6b:	8b 75 10             	mov    0x10(%ebp),%esi
409b6e:	8b d9                	mov    %ecx,%ebx
409b70:	8b 4d 08             	mov    0x8(%ebp),%ecx
409b73:	8d 04 36             	lea    (%esi,%esi,1),%eax
409b76:	89 85 f0 fe ff ff    	mov    %eax,-0x110(%ebp)
409b7c:	03 c1                	add    %ecx,%eax
409b7e:	89 85 fc fe ff ff    	mov    %eax,-0x104(%ebp)
409b84:	89 45 fc             	mov    %eax,-0x4(%ebp)
409b87:	83 c0 fe             	add    $0xfffffffe,%eax
409b8a:	57                   	push   %edi
409b8b:	8b 7d 0c             	mov    0xc(%ebp),%edi
409b8e:	c7 45 e0 00 00 00 00 	movl   $0x0,-0x20(%ebp)
409b95:	c7 45 dc 00 00 00 00 	movl   $0x0,-0x24(%ebp)
409b9c:	c7 85 f4 fe ff ff 00 	movl   $0x0,-0x10c(%ebp)
409ba3:	00 00 00
409ba6:	c7 45 cc 00 00 00 00 	movl   $0x0,-0x34(%ebp)
409bad:	c7 45 f0 00 00 00 00 	movl   $0x0,-0x10(%ebp)
409bb4:	c7 85 04 ff ff ff 00 	movl   $0x0,-0xfc(%ebp)
409bbb:	00 00 00
409bbe:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
409bc5:	c7 45 d8 00 00 00 00 	movl   $0x0,-0x28(%ebp)
409bcc:	c7 85 00 ff ff ff 00 	movl   $0x0,-0x100(%ebp)
409bd3:	00 00 00
409bd6:	89 85 f8 fe ff ff    	mov    %eax,-0x108(%ebp)
409bdc:	85 db                	test   %ebx,%ebx
409bde:	0f 84 da 1f 08 00    	je     0x48bbbe
409be4:	8b 55 14             	mov    0x14(%ebp),%edx
409be7:	f7 c2 6f 5a 0f e2    	test   $0xe20f5a6f,%edx
409bed:	0f 85 fb 1f 08 00    	jne    0x48bbee
409bf3:	85 db                	test   %ebx,%ebx
409bf5:	0f 84 05 20 08 00    	je     0x48bc00
409bfb:	85 c9                	test   %ecx,%ecx
409bfd:	0f 84 fd 1f 08 00    	je     0x48bc00
409c03:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
409c07:	8b 45 1c             	mov    0x1c(%ebp),%eax
409c0a:	0f 84 e8 1f 08 00    	je     0x48bbf8
409c10:	85 c0                	test   %eax,%eax
409c12:	0f 88 f2 1f 08 00    	js     0x48bc0a
409c18:	85 ff                	test   %edi,%edi
409c1a:	0f 88 f4 1f 08 00    	js     0x48bc14
409c20:	85 f6                	test   %esi,%esi
409c22:	0f 88 72 28 08 00    	js     0x48c49a
409c28:	3b f7                	cmp    %edi,%esi
409c2a:	0f 8f 6a 28 08 00    	jg     0x48c49a
409c30:	8b 03                	mov    (%ebx),%eax
409c32:	3d 45 52 43 50       	cmp    $0x50435245,%eax
409c37:	0f 85 e1 1f 08 00    	jne    0x48bc1e
409c3d:	f6 43 0c 02          	testb  $0x2,0xc(%ebx)
409c41:	0f 84 eb 1f 08 00    	je     0x48bc32
409c47:	8b 4b 08             	mov    0x8(%ebx),%ecx
409c4a:	f7 c1 00 08 00 00    	test   $0x800,%ecx
409c50:	0f 84 f7 05 00 00    	je     0x40a24d
409c56:	b8 01 00 00 00       	mov    $0x1,%eax
409c5b:	89 45 f4             	mov    %eax,-0xc(%ebp)
409c5e:	89 85 58 ff ff ff    	mov    %eax,-0xa8(%ebp)
409c64:	f7 c2 00 00 00 08    	test   $0x8000000,%edx
409c6a:	0f 85 e4 05 00 00    	jne    0x40a254
409c70:	f7 c2 00 80 00 00    	test   $0x8000,%edx
409c76:	0f 85 e2 05 00 00    	jne    0x40a25e
409c7c:	33 c0                	xor    %eax,%eax
409c7e:	83 7d f4 00          	cmpl   $0x0,-0xc(%ebp)
409c82:	89 45 94             	mov    %eax,-0x6c(%ebp)
409c85:	74 0c                	je     0x409c93
409c87:	f7 c2 00 20 00 00    	test   $0x2000,%edx
409c8d:	0f 84 a9 1f 08 00    	je     0x48bc3c
409c93:	f7 43 0c 00 20 00 00 	testl  $0x2000,0xc(%ebx)
409c9a:	0f b7 43 22          	movzwl 0x22(%ebx),%eax
409c9e:	0f b7 53 24          	movzwl 0x24(%ebx),%edx
409ca2:	8d 04 43             	lea    (%ebx,%eax,2),%eax
409ca5:	89 85 38 ff ff ff    	mov    %eax,-0xc8(%ebp)
409cab:	0f b7 43 26          	movzwl 0x26(%ebx),%eax
409caf:	89 85 28 ff ff ff    	mov    %eax,-0xd8(%ebp)
409cb5:	8b 43 30             	mov    0x30(%ebx),%eax
409cb8:	89 95 2c ff ff ff    	mov    %edx,-0xd4(%ebp)
409cbe:	c7 85 0c ff ff ff 80 	movl   $0x989680,-0xf4(%ebp)
409cc5:	96 98 00
409cc8:	c7 85 10 ff ff ff 80 	movl   $0x989680,-0xf0(%ebp)
409ccf:	96 98 00
409cd2:	c7 45 b4 00 00 00 00 	movl   $0x0,-0x4c(%ebp)
409cd9:	89 45 ec             	mov    %eax,-0x14(%ebp)
409cdc:	0f 85 d3 1f 08 00    	jne    0x48bcb5
409ce2:	f7 43 0c 00 40 00 00 	testl  $0x4000,0xc(%ebx)
409ce9:	0f 85 e4 1f 08 00    	jne    0x48bcd3
409cef:	85 c0                	test   %eax,%eax
409cf1:	75 08                	jne    0x409cfb
409cf3:	b8 e0 e7 4a 00       	mov    $0x4ae7e0,%eax
409cf8:	89 45 ec             	mov    %eax,-0x14(%ebp)
409cfb:	8b c1                	mov    %ecx,%eax
409cfd:	0b 45 14             	or     0x14(%ebp),%eax
409d00:	a8 10                	test   $0x10,%al
409d02:	0f 85 ec 1f 08 00    	jne    0x48bcf4
409d08:	c7 45 c8 00 00 00 00 	movl   $0x0,-0x38(%ebp)
409d0f:	f7 43 0c 00 01 00 00 	testl  $0x100,0xc(%ebx)
409d16:	0f 85 e4 1f 08 00    	jne    0x48bd00
409d1c:	c7 45 e4 00 00 00 00 	movl   $0x0,-0x1c(%ebp)
409d23:	f7 c1 00 00 04 00    	test   $0x40000,%ecx
409d29:	0f 85 dd 1f 08 00    	jne    0x48bd0c
409d2f:	c7 45 d0 00 00 00 00 	movl   $0x0,-0x30(%ebp)
409d36:	0f b7 43 26          	movzwl 0x26(%ebx),%eax
409d3a:	0f af d0             	imul   %eax,%edx
409d3d:	0f b7 43 22          	movzwl 0x22(%ebx),%eax
409d41:	03 d0                	add    %eax,%edx
409d43:	89 75 a0             	mov    %esi,-0x60(%ebp)
409d46:	8d 04 53             	lea    (%ebx,%edx,2),%eax
409d49:	89 85 7c ff ff ff    	mov    %eax,-0x84(%ebp)
409d4f:	8b 45 08             	mov    0x8(%ebp),%eax
409d52:	89 45 80             	mov    %eax,-0x80(%ebp)
409d55:	8d 04 78             	lea    (%eax,%edi,2),%eax
409d58:	89 45 84             	mov    %eax,-0x7c(%ebp)
409d5b:	89 45 f8             	mov    %eax,-0x8(%ebp)
409d5e:	f6 c1 20             	test   $0x20,%cl
409d61:	0f 85 01 05 00 00    	jne    0x40a268
409d67:	33 c0                	xor    %eax,%eax
409d69:	89 85 64 ff ff ff    	mov    %eax,-0x9c(%ebp)
409d6f:	f7 c1 00 00 00 20    	test   $0x20000000,%ecx
409d75:	0f 85 f7 04 00 00    	jne    0x40a272
409d7b:	33 c0                	xor    %eax,%eax
409d7d:	89 85 60 ff ff ff    	mov    %eax,-0xa0(%ebp)
409d83:	f7 c1 00 00 00 02    	test   $0x2000000,%ecx
409d89:	0f 85 ed 04 00 00    	jne    0x40a27c
409d8f:	33 c0                	xor    %eax,%eax
409d91:	8b 55 14             	mov    0x14(%ebp),%edx
409d94:	89 85 5c ff ff ff    	mov    %eax,-0xa4(%ebp)
409d9a:	c7 85 34 ff ff ff 00 	movl   $0x0,-0xcc(%ebp)
409da1:	00 00 00
409da4:	84 d2                	test   %dl,%dl
409da6:	0f 88 da 04 00 00    	js     0x40a286
409dac:	33 c0                	xor    %eax,%eax
409dae:	89 85 50 ff ff ff    	mov    %eax,-0xb0(%ebp)
409db4:	f7 c2 00 01 00 00    	test   $0x100,%edx
409dba:	0f 85 d0 04 00 00    	jne    0x40a290
409dc0:	33 c0                	xor    %eax,%eax
409dc2:	89 85 54 ff ff ff    	mov    %eax,-0xac(%ebp)
409dc8:	f7 c2 00 04 00 00    	test   $0x400,%edx
409dce:	0f 85 c6 04 00 00    	jne    0x40a29a
409dd4:	33 c0                	xor    %eax,%eax
409dd6:	89 85 68 ff ff ff    	mov    %eax,-0x98(%ebp)
409ddc:	f7 c2 00 00 00 10    	test   $0x10000000,%edx
409de2:	0f 85 bc 04 00 00    	jne    0x40a2a4
409de8:	33 c0                	xor    %eax,%eax
409dea:	8b 73 0c             	mov    0xc(%ebx),%esi
409ded:	89 85 6c ff ff ff    	mov    %eax,-0x94(%ebp)
409df3:	c7 85 70 ff ff ff 00 	movl   $0x0,-0x90(%ebp)
409dfa:	00 00 00
409dfd:	c7 45 bc 00 00 00 00 	movl   $0x0,-0x44(%ebp)
409e04:	c7 45 b8 00 00 00 00 	movl   $0x0,-0x48(%ebp)
409e0b:	c7 45 b0 00 00 00 00 	movl   $0x0,-0x50(%ebp)
409e12:	f7 c6 00 10 00 00    	test   $0x1000,%esi
409e18:	0f 85 90 04 00 00    	jne    0x40a2ae
409e1e:	33 c0                	xor    %eax,%eax
409e20:	89 85 78 ff ff ff    	mov    %eax,-0x88(%ebp)
409e26:	8b 45 ec             	mov    -0x14(%ebp),%eax
409e29:	89 85 44 ff ff ff    	mov    %eax,-0xbc(%ebp)
409e2f:	8d b8 00 01 00 00    	lea    0x100(%eax),%edi
409e35:	05 40 03 00 00       	add    $0x340,%eax
409e3a:	89 85 4c ff ff ff    	mov    %eax,-0xb4(%ebp)
409e40:	8b c2                	mov    %edx,%eax
409e42:	89 bd 48 ff ff ff    	mov    %edi,-0xb8(%ebp)
409e48:	25 00 00 80 01       	and    $0x1800000,%eax
409e4d:	0f 85 c5 1e 08 00    	jne    0x48bd18
409e53:	f7 c1 00 00 80 01    	test   $0x1800000,%ecx
409e59:	0f 85 de 1e 08 00    	jne    0x48bd3d
409e5f:	c7 85 74 ff ff ff 01 	movl   $0x1,-0x8c(%ebp)
409e66:	00 00 00
409e69:	f7 c2 00 00 70 00    	test   $0x700000,%edx
409e6f:	0f 85 43 04 00 00    	jne    0x40a2b8
409e75:	81 e1 00 00 70 00    	and    $0x700000,%ecx
409e7b:	0f 85 cf 1e 08 00    	jne    0x48bd50
409e81:	c7 85 20 ff ff ff 02 	movl   $0x2,-0xe0(%ebp)
409e88:	00 00 00
409e8b:	83 7d 94 00          	cmpl   $0x0,-0x6c(%ebp)
409e8f:	0f 85 67 1f 08 00    	jne    0x48bdfc
409e95:	b8 56 55 55 55       	mov    $0x55555556,%eax
409e9a:	f7 6d 1c             	imull  0x1c(%ebp)
409e9d:	8b c2                	mov    %edx,%eax
409e9f:	c1 e8 1f             	shr    $0x1f,%eax
409ea2:	03 c2                	add    %edx,%eax
409ea4:	8d 3c 40             	lea    (%eax,%eax,2),%edi
409ea7:	b8 56 55 55 55       	mov    $0x55555556,%eax
409eac:	8d 0c 3f             	lea    (%edi,%edi,1),%ecx
409eaf:	f7 e9                	imul   %ecx
409eb1:	8b c2                	mov    %edx,%eax
409eb3:	c1 e8 1f             	shr    $0x1f,%eax
409eb6:	03 c2                	add    %edx,%eax
409eb8:	89 45 ec             	mov    %eax,-0x14(%ebp)
409ebb:	0f b7 43 20          	movzwl 0x20(%ebx),%eax
409ebf:	66 85 c0             	test   %ax,%ax
409ec2:	0f 85 4a 1f 08 00    	jne    0x48be12
409ec8:	8b 75 18             	mov    0x18(%ebp),%esi
409ecb:	89 b5 14 ff ff ff    	mov    %esi,-0xec(%ebp)
409ed1:	8d 0c 3f             	lea    (%edi,%edi,1),%ecx
409ed4:	b8 56 55 55 55       	mov    $0x55555556,%eax
409ed9:	f7 e9                	imul   %ecx
409edb:	8b c2                	mov    %edx,%eax
409edd:	c1 e8 1f             	shr    $0x1f,%eax
409ee0:	03 c2                	add    %edx,%eax
409ee2:	89 bd 18 ff ff ff    	mov    %edi,-0xe8(%ebp)
409ee8:	89 85 1c ff ff ff    	mov    %eax,-0xe4(%ebp)
409eee:	c7 45 9c 00 00 00 00 	movl   $0x0,-0x64(%ebp)
409ef5:	85 f6                	test   %esi,%esi
409ef7:	74 37                	je     0x409f30
409ef9:	0f b7 43 1e          	movzwl 0x1e(%ebx),%eax
409efd:	8d 0c be             	lea    (%esi,%edi,4),%ecx
409f00:	c1 e0 02             	shl    $0x2,%eax
409f03:	8b d1                	mov    %ecx,%edx
409f05:	2b d0                	sub    %eax,%edx
409f07:	8d 46 08             	lea    0x8(%esi),%eax
409f0a:	3b d0                	cmp    %eax,%edx
409f0c:	0f 82 ad 03 00 00    	jb     0x40a2bf
409f12:	83 e9 04             	sub    $0x4,%ecx
409f15:	3b ca                	cmp    %edx,%ecx
409f17:	0f 83 f3 01 00 00    	jae    0x40a110
409f1d:	c7 46 04 ff ff ff ff 	movl   $0xffffffff,0x4(%esi)
409f24:	8b 85 14 ff ff ff    	mov    -0xec(%ebp),%eax
409f2a:	c7 00 ff ff ff ff    	movl   $0xffffffff,(%eax)
409f30:	83 7d c8 00          	cmpl   $0x0,-0x38(%ebp)
409f34:	75 0b                	jne    0x409f41
409f36:	8b 43 0c             	mov    0xc(%ebx),%eax
409f39:	a8 10                	test   $0x10,%al
409f3b:	0f 85 ae 02 00 00    	jne    0x40a1ef
409f41:	8b 95 48 ff ff ff    	mov    -0xb8(%ebp),%edx
409f47:	8b 4d f4             	mov    -0xc(%ebp),%ecx
409f4a:	8b 43 0c             	mov    0xc(%ebx),%eax
409f4d:	a8 40                	test   $0x40,%al
409f4f:	0f 85 bb 02 00 00    	jne    0x40a210
409f55:	83 7d d0 00          	cmpl   $0x0,-0x30(%ebp)
409f59:	8b 7d f8             	mov    -0x8(%ebp),%edi
409f5c:	8b cf                	mov    %edi,%ecx
409f5e:	89 4d 10             	mov    %ecx,0x10(%ebp)
409f61:	0f 85 cb 1f 08 00    	jne    0x48bf32
409f67:	8b 73 08             	mov    0x8(%ebx),%esi
409f6a:	0b 75 14             	or     0x14(%ebp),%esi
409f6d:	81 e6 00 00 00 04    	and    $0x4000000,%esi
409f73:	75 12                	jne    0x409f87
409f75:	39 75 dc             	cmp    %esi,-0x24(%ebp)
409f78:	0f 85 41 02 00 00    	jne    0x40a1bf
409f7e:	39 75 e4             	cmp    %esi,-0x1c(%ebp)
409f81:	0f 85 18 21 08 00    	jne    0x48c09f
409f87:	89 4d f8             	mov    %ecx,-0x8(%ebp)
409f8a:	85 f6                	test   %esi,%esi
409f8c:	75 0c                	jne    0x409f9a
409f8e:	39 b5 f4 fe ff ff    	cmp    %esi,-0x10c(%ebp)
409f94:	0f 85 8e 01 00 00    	jne    0x40a128
409f9a:	8b 45 fc             	mov    -0x4(%ebp),%eax
409f9d:	8b 95 7c ff ff ff    	mov    -0x84(%ebp),%edx
409fa3:	6a 00                	push   $0x0
409fa5:	6a 00                	push   $0x0
409fa7:	8d 8d 08 ff ff ff    	lea    -0xf8(%ebp),%ecx
409fad:	51                   	push   %ecx
409fae:	6a 02                	push   $0x2
409fb0:	50                   	push   %eax
409fb1:	8b c8                	mov    %eax,%ecx
409fb3:	89 45 88             	mov    %eax,-0x78(%ebp)
409fb6:	89 45 90             	mov    %eax,-0x70(%ebp)
409fb9:	c7 85 08 ff ff ff 00 	movl   $0x0,-0xf8(%ebp)
409fc0:	00 00 00
409fc3:	c7 45 a4 00 00 00 00 	movl   $0x0,-0x5c(%ebp)
409fca:	c7 45 98 00 00 00 00 	movl   $0x0,-0x68(%ebp)
409fd1:	c7 85 30 ff ff ff 00 	movl   $0x0,-0xd0(%ebp)
409fd8:	00 00 00
409fdb:	e8 20 03 00 00       	call   0x40a300
409fe0:	83 c4 14             	add    $0x14,%esp
409fe3:	83 bd 70 ff ff ff 00 	cmpl   $0x0,-0x90(%ebp)
409fea:	8b f0                	mov    %eax,%esi
409fec:	0f 85 aa 22 08 00    	jne    0x48c29c
409ff2:	85 f6                	test   %esi,%esi
409ff4:	7e 6d                	jle    0x40a063
409ff6:	83 fe 01             	cmp    $0x1,%esi
409ff9:	0f 85 ab 23 08 00    	jne    0x48c3aa
409fff:	83 7d e0 00          	cmpl   $0x0,-0x20(%ebp)
40a003:	8b 75 ec             	mov    -0x14(%ebp),%esi
40a006:	0f 85 fd 23 08 00    	jne    0x48c409
40a00c:	f7 45 9c 00 00 01 00 	testl  $0x10000,-0x64(%ebp)
40a013:	8b 4d 98             	mov    -0x68(%ebp),%ecx
40a016:	0f 85 33 24 08 00    	jne    0x48c44f
40a01c:	8b c1                	mov    %ecx,%eax
40a01e:	99                   	cltd
40a01f:	2b c2                	sub    %edx,%eax
40a021:	8b f0                	mov    %eax,%esi
40a023:	d1 fe                	sar    $1,%esi
40a025:	0f b7 7b 1e          	movzwl 0x1e(%ebx),%edi
40a029:	8b c1                	mov    %ecx,%eax
40a02b:	99                   	cltd
40a02c:	2b c2                	sub    %edx,%eax
40a02e:	d1 f8                	sar    $1,%eax
40a030:	3b c7                	cmp    %edi,%eax