40f885:	83 ec 30             	sub    $0x30,%esp
40f888:	a1 08 85 43 00       	mov    0x438508,%eax
40f88d:	33 c5                	xor    %ebp,%eax
40f88f:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f892:	53                   	push   %ebx
40f893:	8b 5d 08             	mov    0x8(%ebp),%ebx
40f896:	56                   	push   %esi
40f897:	57                   	push   %edi
40f898:	8b f1                	mov    %ecx,%esi
40f89a:	89 5d e0             	mov    %ebx,-0x20(%ebp)
40f89d:	0f b7 03             	movzwl (%ebx),%eax
40f8a0:	25 ff 0f 00 00       	and    $0xfff,%eax
40f8a5:	83 f8 40             	cmp    $0x40,%eax
40f8a8:	74 2b                	je     0x40f8d5
40f8aa:	83 f8 1f             	cmp    $0x1f,%eax
40f8ad:	74 26                	je     0x40f8d5
40f8af:	83 f8 0b             	cmp    $0xb,%eax
40f8b2:	74 21                	je     0x40f8d5
40f8b4:	83 f8 15             	cmp    $0x15,%eax
40f8b7:	74 1c                	je     0x40f8d5
40f8b9:	83 f8 14             	cmp    $0x14,%eax
40f8bc:	74 17                	je     0x40f8d5
40f8be:	83 f8 48             	cmp    $0x48,%eax
40f8c1:	0f 87 b5 15 01 00    	ja     0x420e7c
40f8c7:	0f b6 80 10 fb 40 00 	movzbl 0x40fb10(%eax),%eax
40f8ce:	ff 24 85 08 fb 40 00 	jmp    *0x40fb08(,%eax,4)
40f8d5:	8b cb                	mov    %ebx,%ecx
40f8d7:	e8 54 37 00 00       	call   0x413030
40f8dc:	85 c0                	test   %eax,%eax
40f8de:	0f 88 a2 15 01 00    	js     0x420e86
40f8e4:	66 83 3b 1f          	cmpw   $0x1f,(%ebx)
40f8e8:	0f 84 fd 01 00 00    	je     0x40faeb
40f8ee:	33 ff                	xor    %edi,%edi
40f8f0:	39 be c4 09 00 00    	cmp    %edi,0x9c4(%esi)
40f8f6:	75 22                	jne    0x40f91a
40f8f8:	8b 86 b8 09 00 00    	mov    0x9b8(%esi),%eax
40f8fe:	89 be c0 09 00 00    	mov    %edi,0x9c0(%esi)
40f904:	89 86 bc 09 00 00    	mov    %eax,0x9bc(%esi)
40f90a:	89 be b8 09 00 00    	mov    %edi,0x9b8(%esi)
40f910:	c7 86 c4 09 00 00 01 	movl   $0x1,0x9c4(%esi)
40f917:	00 00 00
40f91a:	ba 02 00 00 00       	mov    $0x2,%edx
40f91f:	33 c9                	xor    %ecx,%ecx
40f921:	89 55 dc             	mov    %edx,-0x24(%ebp)
40f924:	85 c9                	test   %ecx,%ecx
40f926:	0f 88 54 01 00 00    	js     0x40fa80
40f92c:	8b 86 90 09 00 00    	mov    0x990(%esi),%eax
40f932:	33 c9                	xor    %ecx,%ecx
40f934:	89 45 f4             	mov    %eax,-0xc(%ebp)
40f937:	40                   	inc    %eax
40f938:	89 86 90 09 00 00    	mov    %eax,0x990(%esi)
40f93e:	c7 45 f8 00 00 00 00 	movl   $0x0,-0x8(%ebp)
40f945:	c7 45 e8 47 54 48 52 	movl   $0x52485447,-0x18(%ebp)
40f94c:	c7 45 ec 00 00 00 00 	movl   $0x0,-0x14(%ebp)
40f953:	c7 45 f0 02 00 00 00 	movl   $0x2,-0x10(%ebp)
40f95a:	39 8e c0 09 00 00    	cmp    %ecx,0x9c0(%esi)
40f960:	0f 84 7a 01 00 00    	je     0x40fae0
40f966:	89 8e b8 09 00 00    	mov    %ecx,0x9b8(%esi)
40f96c:	8b 8e c8 09 00 00    	mov    0x9c8(%esi),%ecx
40f972:	89 7d d8             	mov    %edi,-0x28(%ebp)
40f975:	6a 00                	push   $0x0
40f977:	89 4d d0             	mov    %ecx,-0x30(%ebp)
40f97a:	8b 01                	mov    (%ecx),%eax
40f97c:	6a 04                	push   $0x4
40f97e:	8b 40 04             	mov    0x4(%eax),%eax
40f981:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40f984:	3d 70 2d 41 00       	cmp    $0x412d70,%eax
40f989:	0f 85 14 15 01 00    	jne    0x420ea3
40f98f:	8d 45 d8             	lea    -0x28(%ebp),%eax
40f992:	50                   	push   %eax
40f993:	e8 d8 33 00 00       	call   0x412d70
40f998:	8b c8                	mov    %eax,%ecx
40f99a:	8b 86 b8 09 00 00    	mov    0x9b8(%esi),%eax
40f9a0:	85 c9                	test   %ecx,%ecx
40f9a2:	78 60                	js     0x40fa04
40f9a4:	83 c0 04             	add    $0x4,%eax
40f9a7:	89 86 b8 09 00 00    	mov    %eax,0x9b8(%esi)
40f9ad:	85 c9                	test   %ecx,%ecx
40f9af:	78 53                	js     0x40fa04
40f9b1:	8d 50 03             	lea    0x3(%eax),%edx
40f9b4:	33 c9                	xor    %ecx,%ecx
40f9b6:	83 e2 fc             	and    $0xfffffffc,%edx
40f9b9:	f7 d7                	not    %edi
40f9bb:	2b d0                	sub    %eax,%edx
40f9bd:	89 7d d4             	mov    %edi,-0x2c(%ebp)
40f9c0:	89 55 e4             	mov    %edx,-0x1c(%ebp)
40f9c3:	0f 85 f1 14 01 00    	jne    0x420eba
40f9c9:	03 c2                	add    %edx,%eax
40f9cb:	83 be c0 09 00 00 00 	cmpl   $0x0,0x9c0(%esi)
40f9d2:	89 86 b8 09 00 00    	mov    %eax,0x9b8(%esi)
40f9d8:	74 2a                	je     0x40fa04
40f9da:	8b be c8 09 00 00    	mov    0x9c8(%esi),%edi
40f9e0:	6a 00                	push   $0x0
40f9e2:	6a 04                	push   $0x4
40f9e4:	8b 07                	mov    (%edi),%eax
40f9e6:	8b 40 04             	mov    0x4(%eax),%eax
40f9e9:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40f9ec:	3d 70 2d 41 00       	cmp    $0x412d70,%eax
40f9f1:	0f 85 09 15 01 00    	jne    0x420f00
40f9f7:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40f9fa:	8b cf                	mov    %edi,%ecx
40f9fc:	50                   	push   %eax
40f9fd:	e8 6e 33 00 00       	call   0x412d70
40fa02:	8b c8                	mov    %eax,%ecx
40fa04:	33 c0                	xor    %eax,%eax
40fa06:	c7 86 b8 09 00 00 00 	movl   $0x0,0x9b8(%esi)
40fa0d:	00 00 00
40fa10:	85 c9                	test   %ecx,%ecx
40fa12:	78 69                	js     0x40fa7d
40fa14:	8d 50 07             	lea    0x7(%eax),%edx
40fa17:	83 e2 f8             	and    $0xfffffff8,%edx
40fa1a:	2b d0                	sub    %eax,%edx
40fa1c:	89 55 e4             	mov    %edx,-0x1c(%ebp)
40fa1f:	0f 85 f1 14 01 00    	jne    0x420f16
40fa25:	85 c9                	test   %ecx,%ecx
40fa27:	78 54                	js     0x40fa7d
40fa29:	03 c2                	add    %edx,%eax
40fa2b:	83 be c0 09 00 00 00 	cmpl   $0x0,0x9c0(%esi)
40fa32:	89 86 b8 09 00 00    	mov    %eax,0x9b8(%esi)
40fa38:	74 2a                	je     0x40fa64
40fa3a:	8b be c8 09 00 00    	mov    0x9c8(%esi),%edi
40fa40:	6a 00                	push   $0x0
40fa42:	6a 14                	push   $0x14
40fa44:	8b 07                	mov    (%edi),%eax
40fa46:	8b 40 04             	mov    0x4(%eax),%eax
40fa49:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40fa4c:	3d 70 2d 41 00       	cmp    $0x412d70,%eax
40fa51:	0f 85 fe 14 01 00    	jne    0x420f55
40fa57:	8d 45 e8             	lea    -0x18(%ebp),%eax
40fa5a:	8b cf                	mov    %edi,%ecx
40fa5c:	50                   	push   %eax
40fa5d:	e8 0e 33 00 00       	call   0x412d70
40fa62:	8b c8                	mov    %eax,%ecx
40fa64:	85 c9                	test   %ecx,%ecx
40fa66:	78 15                	js     0x40fa7d
40fa68:	83 86 b8 09 00 00 14 	addl   $0x14,0x9b8(%esi)
40fa6f:	85 c9                	test   %ecx,%ecx
40fa71:	78 0a                	js     0x40fa7d
40fa73:	53                   	push   %ebx
40fa74:	8b ce                	mov    %esi,%ecx
40fa76:	e8 e5 00 00 00       	call   0x40fb60
40fa7b:	8b c8                	mov    %eax,%ecx
40fa7d:	8b 55 dc             	mov    -0x24(%ebp),%edx
40fa80:	83 be c4 09 00 00 00 	cmpl   $0x0,0x9c4(%esi)
40fa87:	8b be b8 09 00 00    	mov    0x9b8(%esi),%edi
40fa8d:	74 2a                	je     0x40fab9
40fa8f:	8b 86 bc 09 00 00    	mov    0x9bc(%esi),%eax
40fa95:	c7 86 c0 09 00 00 01 	movl   $0x1,0x9c0(%esi)
40fa9c:	00 00 00
40fa9f:	89 86 b8 09 00 00    	mov    %eax,0x9b8(%esi)
40faa5:	c7 86 bc 09 00 00 00 	movl   $0x0,0x9bc(%esi)
40faac:	00 00 00
40faaf:	c7 86 c4 09 00 00 00 	movl   $0x0,0x9c4(%esi)
40fab6:	00 00 00
40fab9:	83 ea 01             	sub    $0x1,%edx
40fabc:	89 55 dc             	mov    %edx,-0x24(%ebp)
40fabf:	0f 85 5f fe ff ff    	jne    0x40f924
40fac5:	66 83 3b 1f          	cmpw   $0x1f,(%ebx)
40fac9:	8b c1                	mov    %ecx,%eax
40facb:	74 2d                	je     0x40fafa
40facd:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40fad0:	5f                   	pop    %edi
40fad1:	5e                   	pop    %esi
40fad2:	33 cd                	xor    %ebp,%ecx
40fad4:	5b                   	pop    %ebx
40fad5:	e8 e6 ac 00 00       	call   0x41a7c0
40fada:	8b e5                	mov    %ebp,%esp
40fadc:	5d                   	pop    %ebp
40fadd:	c2 04 00             	ret    $0x4
40fae0:	8b 86 b8 09 00 00    	mov    0x9b8(%esi),%eax
40fae6:	e9 29 ff ff ff       	jmp    0x40fa14
40faeb:	83 7b 08 00          	cmpl   $0x0,0x8(%ebx)
40faef:	0f 85 f9 fd ff ff    	jne    0x40f8ee
40faf5:	e9 9d 13 01 00       	jmp    0x420e97
40fafa:	81 7b 08 cc 3f 40 00 	cmpl   $0x403fcc,0x8(%ebx)
40fb01:	75 ca                	jne    0x40facd
40fb03:	e9 63 14 01 00       	jmp    0x420f6b
40fb08:	d5 f8                	aad    $0xf8
40fb0a:	40                   	inc    %eax
40fb0b:	00 7c 0e 42          	add    %bh,0x42(%esi,%ecx,1)
40fb17:	00 00                	add    %al,(%eax)
40fb19:	01 00                	add    %eax,(%eax)
40fb1b:	01 00                	add    %eax,(%eax)
40fb1d:	01 00                	add    %eax,(%eax)
40fb1f:	01 00                	add    %eax,(%eax)
40fb21:	00 00                	add    %al,(%eax)
40fb23:	00 00                	add    %al,(%eax)
40fb25:	00 00                	add    %al,(%eax)
40fb27:	00 01                	add    %al,(%ecx)
40fb29:	01 01                	add    %eax,(%ecx)
40fb2b:	01 01                	add    %eax,(%ecx)
40fb2d:	01 00                	add    %eax,(%eax)
40fb2f:	01 01                	add    %eax,(%ecx)
40fb31:	01 01                	add    %eax,(%ecx)
40fb33:	01 01                	add    %eax,(%ecx)
40fb35:	01 01                	add    %eax,(%ecx)
40fb37:	01 01                	add    %eax,(%ecx)
40fb39:	01 01                	add    %eax,(%ecx)
40fb3b:	01 01                	add    %eax,(%ecx)
40fb3d:	01 01                	add    %eax,(%ecx)
40fb3f:	01 01                	add    %eax,(%ecx)
40fb41:	01 01                	add    %eax,(%ecx)
40fb43:	01 01                	add    %eax,(%ecx)
40fb45:	01 01                	add    %eax,(%ecx)
40fb47:	01 01                	add    %eax,(%ecx)
40fb49:	01 01                	add    %eax,(%ecx)
40fb4b:	01 01                	add    %eax,(%ecx)
40fb4d:	01 01                	add    %eax,(%ecx)
40fb4f:	01 01                	add    %eax,(%ecx)
40fb59:	cc                   	int3
40fb5a:	cc                   	int3
40fb5b:	cc                   	int3
40fb5c:	cc                   	int3
40fb5d:	cc                   	int3
40fb5e:	cc                   	int3
40fb5f:	cc                   	int3
40fb60:	8b ff                	mov    %edi,%edi
40fb62:	55                   	push   %ebp
40fb63:	8b ec                	mov    %esp,%ebp
40fb65:	83 e4 f8             	and    $0xfffffff8,%esp
40fb68:	83 ec 34             	sub    $0x34,%esp
40fb6b:	53                   	push   %ebx
40fb6c:	56                   	push   %esi
40fb6d:	8b 75 08             	mov    0x8(%ebp),%esi
40fb70:	8b d9                	mov    %ecx,%ebx
40fb72:	89 5c 24 10          	mov    %ebx,0x10(%esp)
40fb76:	57                   	push   %edi
40fb77:	85 f6                	test   %esi,%esi
40fb79:	0f 84 f8 13 01 00    	je     0x420f77
40fb7f:	0f b7 16             	movzwl (%esi),%edx
40fb82:	8b c2                	mov    %edx,%eax
40fb84:	8b ca                	mov    %edx,%ecx
40fb86:	81 e1 ff 0f 00 00    	and    $0xfff,%ecx
40fb8c:	83 f9 42             	cmp    $0x42,%ecx
40fb8f:	0f 83 6b 02 00 00    	jae    0x40fe00
40fb95:	2d 41 10 00 00       	sub    $0x1041,%eax
40fb9a:	0f 84 6e 02 00 00    	je     0x40fe0e
40fba0:	83 e8 07             	sub    $0x7,%eax
40fba3:	0f 84 65 02 00 00    	je     0x40fe0e
40fba9:	8b c2                	mov    %edx,%eax
40fbab:	b9 08 00 00 00       	mov    $0x8,%ecx
40fbb0:	25 ff 0f 00 00       	and    $0xfff,%eax
40fbb5:	66 3b c8             	cmp    %ax,%cx
40fbb8:	0f 84 15 02 00 00    	je     0x40fdd3
40fbbe:	c6 44 24 13 00       	movb   $0x0,0x13(%esp)
40fbc3:	8b 83 b8 09 00 00    	mov    0x9b8(%ebx),%eax
40fbc9:	81 c3 b8 09 00 00    	add    $0x9b8,%ebx
40fbcf:	33 c9                	xor    %ecx,%ecx
40fbd1:	89 5c 24 1c          	mov    %ebx,0x1c(%esp)
40fbd5:	8d 78 07             	lea    0x7(%eax),%edi
40fbd8:	83 e7 f8             	and    $0xfffffff8,%edi
40fbdb:	2b f8                	sub    %eax,%edi
40fbdd:	74 37                	je     0x40fc16
40fbdf:	39 4b 08             	cmp    %ecx,0x8(%ebx)
40fbe2:	74 32                	je     0x40fc16
40fbe4:	8b 4b 10             	mov    0x10(%ebx),%ecx
40fbe7:	6a 00                	push   $0x0
40fbe9:	57                   	push   %edi
40fbea:	89 4c 24 28          	mov    %ecx,0x28(%esp)
40fbee:	8b 01                	mov    (%ecx),%eax
40fbf0:	68 18 86 43 00       	push   $0x438618
40fbf5:	8b 40 04             	mov    0x4(%eax),%eax
40fbf8:	89 44 24 24          	mov    %eax,0x24(%esp)
40fbfc:	3d 70 2d 41 00       	cmp    $0x412d70,%eax
40fc01:	0f 85 7a 13 01 00    	jne    0x420f81
40fc07:	e8 64 31 00 00       	call   0x412d70
40fc0c:	8b c8                	mov    %eax,%ecx
40fc0e:	85 c9                	test   %ecx,%ecx
40fc10:	0f 88 a5 00 00 00    	js     0x40fcbb
40fc16:	01 3b                	add    %edi,(%ebx)
40fc18:	83 7b 08 00          	cmpl   $0x0,0x8(%ebx)
40fc1c:	74 2f                	je     0x40fc4d
40fc1e:	83 7b 18 00          	cmpl   $0x0,0x18(%ebx)
40fc22:	8b 7b 10             	mov    0x10(%ebx),%edi
40fc25:	6a 00                	push   $0x0
40fc27:	0f 85 69 13 01 00    	jne    0x420f96
40fc2d:	8b 07                	mov    (%edi),%eax
40fc2f:	6a 10                	push   $0x10
40fc31:	56                   	push   %esi
40fc32:	8b 40 04             	mov    0x4(%eax),%eax
40fc35:	89 44 24 2c          	mov    %eax,0x2c(%esp)
40fc39:	3d 70 2d 41 00       	cmp    $0x412d70,%eax
40fc3e:	0f 85 9d 13 01 00    	jne    0x420fe1
40fc44:	8b cf                	mov    %edi,%ecx
40fc46:	e8 25 31 00 00       	call   0x412d70
40fc4b:	8b c8                	mov    %eax,%ecx
40fc4d:	85 c9                	test   %ecx,%ecx
40fc4f:	78 6a                	js     0x40fcbb
40fc51:	83 7b 18 00          	cmpl   $0x0,0x18(%ebx)
40fc55:	8b 03                	mov    (%ebx),%eax
40fc57:	0f 85 97 13 01 00    	jne    0x420ff4
40fc5d:	83 c0 10             	add    $0x10,%eax
40fc60:	89 03                	mov    %eax,(%ebx)
40fc62:	85 c9                	test   %ecx,%ecx
40fc64:	78 55                	js     0x40fcbb
40fc66:	0f b7 06             	movzwl (%esi),%eax
40fc69:	83 f8 1f             	cmp    $0x1f,%eax
40fc6c:	74 58                	je     0x40fcc6
40fc6e:	83 c0 e2             	add    $0xffffffe2,%eax
40fc71:	83 f8 2a             	cmp    $0x2a,%eax
40fc74:	77 24                	ja     0x40fc9a
40fc76:	0f b6 80 40 fe 40 00 	movzbl 0x40fe40(%eax),%eax
40fc7d:	ff 24 85 2c fe 40 00 	jmp    *0x40fe2c(,%eax,4)
40fc84:	ff 76 0c             	push   0xc(%esi)
40fc87:	ff 76 08             	push   0x8(%esi)
40fc8a:	8b cb                	mov    %ebx,%ecx
40fc8c:	e8 85 f0 ff ff       	call   0x40ed16
40fc91:	8b c8                	mov    %eax,%ecx
40fc93:	eb 05                	jmp    0x40fc9a
40fc95:	01 33                	add    %esi,(%ebx)
40fc97:	8b 75 08             	mov    0x8(%ebp),%esi
40fc9a:	8b 7c 24 14          	mov    0x14(%esp),%edi
40fc9e:	85 c9                	test   %ecx,%ecx
40fca0:	78 0e                	js     0x40fcb0
40fca2:	0f b7 06             	movzwl (%esi),%eax
40fca5:	a9 00 10 00 00       	test   $0x1000,%eax
40fcaa:	0f 85 e4 00 00 00    	jne    0x40fd94
40fcb0:	80 7c 24 13 00       	cmpb   $0x0,0x13(%esp)
40fcb5:	0f 85 2e 01 00 00    	jne    0x40fde9
40fcbb:	8b c1                	mov    %ecx,%eax
40fcbd:	5f                   	pop    %edi
40fcbe:	5e                   	pop    %esi
40fcbf:	5b                   	pop    %ebx
40fcc0:	8b e5                	mov    %ebp,%esp
40fcc2:	5d                   	pop    %ebp
40fcc3:	c2 04 00             	ret    $0x4
40fcc6:	8b 7e 08             	mov    0x8(%esi),%edi
40fcc9:	89 7c 24 20          	mov    %edi,0x20(%esp)
40fccd:	85 ff                	test   %edi,%edi
40fccf:	0f 84 c3 13 01 00    	je     0x421098
40fcd5:	8b f7                	mov    %edi,%esi
40fcd7:	8d 4e 02             	lea    0x2(%esi),%ecx
40fcda:	8d 9b 00 00 00 00    	lea    0x0(%ebx),%ebx
40fce0:	66 8b 06             	mov    (%esi),%ax
40fce3:	83 c6 02             	add    $0x2,%esi
40fce6:	66 85 c0             	test   %ax,%ax
40fce9:	75 f5                	jne    0x40fce0
40fceb:	8b 03                	mov    (%ebx),%eax
40fced:	2b f1                	sub    %ecx,%esi
40fcef:	d1 fe                	sar    $1,%esi
40fcf1:	33 c9                	xor    %ecx,%ecx
40fcf3:	89 74 24 18          	mov    %esi,0x18(%esp)
40fcf7:	8d 50 03             	lea    0x3(%eax),%edx
40fcfa:	83 e2 fc             	and    $0xfffffffc,%edx
40fcfd:	2b d0                	sub    %eax,%edx
40fcff:	89 54 24 24          	mov    %edx,0x24(%esp)
40fd03:	0f 85 20 13 01 00    	jne    0x421029
40fd09:	01 13                	add    %edx,(%ebx)
40fd0b:	83 7b 08 00          	cmpl   $0x0,0x8(%ebx)
40fd0f:	74 2b                	je     0x40fd3c