40f712:	83 ff 01             	cmp    $0x1,%edi
40f715:	0f 85 f9 04 00 00    	jne    0x40fc14
40f71b:	8b 5d c4             	mov    -0x3c(%ebp),%ebx
40f71e:	8b c3                	mov    %ebx,%eax
40f720:	85 c0                	test   %eax,%eax
40f722:	0f 88 cf 05 00 00    	js     0x40fcf7
40f728:	8b 4d 08             	mov    0x8(%ebp),%ecx
40f72b:	8b 55 f8             	mov    -0x8(%ebp),%edx
40f72e:	8b 41 04             	mov    0x4(%ecx),%eax
40f731:	8b 04 90             	mov    (%eax,%edx,4),%eax
40f734:	66 83 78 08 4f       	cmpw   $0x4f,0x8(%eax)
40f739:	0f 85 66 94 06 00    	jne    0x478ba5
40f73f:	42                   	inc    %edx
40f740:	89 55 f8             	mov    %edx,-0x8(%ebp)
40f743:	83 ff 01             	cmp    $0x1,%edi
40f746:	0f 85 eb 04 00 00    	jne    0x40fc37
40f74c:	8b 45 ec             	mov    -0x14(%ebp),%eax
40f74f:	8b 7d 08             	mov    0x8(%ebp),%edi
40f752:	89 9c 85 4c fe ff ff 	mov    %ebx,-0x1b4(%ebp,%eax,4)
40f759:	8b 4f 04             	mov    0x4(%edi),%ecx
40f75c:	8b d8                	mov    %eax,%ebx
40f75e:	8b 04 91             	mov    (%ecx,%edx,4),%eax
40f761:	43                   	inc    %ebx
40f762:	66 83 78 08 4e       	cmpw   $0x4e,0x8(%eax)
40f767:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40f76a:	0f 84 75 ff ff ff    	je     0x40f6e5
40f770:	83 7e 0c 05          	cmpl   $0x5,0xc(%esi)
40f774:	0f 85 cb 92 06 00    	jne    0x478a45
40f77a:	8b 06                	mov    (%esi),%eax
40f77c:	33 c9                	xor    %ecx,%ecx
40f77e:	c7 80 10 02 00 00 00 	movl   $0x0,0x210(%eax)
40f785:	00 00 00
40f788:	85 db                	test   %ebx,%ebx
40f78a:	7e 32                	jle    0x40f7be
40f78c:	8d 64 24 00          	lea    0x0(%esp),%esp
40f790:	83 7e 0c 05          	cmpl   $0x5,0xc(%esi)
40f794:	75 23                	jne    0x40f7b9
40f796:	8b 16                	mov    (%esi),%edx
40f798:	8b ba 10 02 00 00    	mov    0x210(%edx),%edi
40f79e:	83 ff 40             	cmp    $0x40,%edi
40f7a1:	7d 16                	jge    0x40f7b9
40f7a3:	8b 84 8d 4c fe ff ff 	mov    -0x1b4(%ebp,%ecx,4),%eax
40f7aa:	89 84 ba 0c 01 00 00 	mov    %eax,0x10c(%edx,%edi,4)
40f7b1:	8b 06                	mov    (%esi),%eax
40f7b3:	ff 80 10 02 00 00    	incl   0x210(%eax)
40f7b9:	41                   	inc    %ecx
40f7ba:	3b cb                	cmp    %ebx,%ecx
40f7bc:	7c d2                	jl     0x40f790
40f7be:	6a 00                	push   $0x0
40f7c0:	6a 01                	push   $0x1
40f7c2:	56                   	push   %esi
40f7c3:	e8 c8 23 00 00       	call   0x411b90
40f7c8:	8b f0                	mov    %eax,%esi
40f7ca:	83 c4 0c             	add    $0xc,%esp
40f7cd:	89 75 b8             	mov    %esi,-0x48(%ebp)
40f7d0:	85 f6                	test   %esi,%esi
40f7d2:	0f 84 dd 93 06 00    	je     0x478bb5
40f7d8:	8b 4d cc             	mov    -0x34(%ebp),%ecx
40f7db:	85 c9                	test   %ecx,%ecx
40f7dd:	0f 85 6e 92 06 00    	jne    0x478a51
40f7e3:	8b 45 d0             	mov    -0x30(%ebp),%eax
40f7e6:	83 f8 05             	cmp    $0x5,%eax
40f7e9:	0f 8d 74 92 06 00    	jge    0x478a63
40f7ef:	8b 7d 08             	mov    0x8(%ebp),%edi
40f7f2:	8b 5d f0             	mov    -0x10(%ebp),%ebx
40f7f5:	c7 45 d0 01 00 00 00 	movl   $0x1,-0x30(%ebp)
40f7fc:	c7 45 c4 00 00 00 00 	movl   $0x0,-0x3c(%ebp)
40f803:	c6 45 eb 01          	movb   $0x1,-0x15(%ebp)
40f807:	8b 4f 04             	mov    0x4(%edi),%ecx
40f80a:	8b 55 f8             	mov    -0x8(%ebp),%edx
40f80d:	8b 04 91             	mov    (%ecx,%edx,4),%eax
40f810:	66 83 78 08 4e       	cmpw   $0x4e,0x8(%eax)
40f815:	0f 85 16 fc ff ff    	jne    0x40f431
40f81b:	e9 80 fe ff ff       	jmp    0x40f6a0
40f820:	8b 75 08             	mov    0x8(%ebp),%esi
40f823:	8b 55 b0             	mov    -0x50(%ebp),%edx
40f826:	8b 4e 04             	mov    0x4(%esi),%ecx
40f829:	c7 45 d4 00 00 00 00 	movl   $0x0,-0x2c(%ebp)
40f830:	c7 45 dc 00 00 00 00 	movl   $0x0,-0x24(%ebp)
40f837:	c7 45 e0 01 00 00 00 	movl   $0x1,-0x20(%ebp)
40f83e:	8b 44 91 fc          	mov    -0x4(%ecx,%edx,4),%eax
40f842:	33 db                	xor    %ebx,%ebx
40f844:	0f bf 40 0a          	movswl 0xa(%eax),%eax
40f848:	89 45 98             	mov    %eax,-0x68(%ebp)
40f84b:	8b 04 91             	mov    (%ecx,%edx,4),%eax
40f84e:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40f851:	66 83 78 08 4e       	cmpw   $0x4e,0x8(%eax)
40f856:	0f 85 8f 00 00 00    	jne    0x40f8eb
40f85c:	8d 64 24 00          	lea    0x0(%esp),%esp
40f860:	8b 44 91 04          	mov    0x4(%ecx,%edx,4),%eax
40f864:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40f867:	0f bf 40 0a          	movswl 0xa(%eax),%eax
40f86b:	42                   	inc    %edx
40f86c:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40f86f:	6a ff                	push   $0xffffffff
40f871:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40f874:	50                   	push   %eax
40f875:	8d 45 ac             	lea    -0x54(%ebp),%eax
40f878:	50                   	push   %eax
40f879:	56                   	push   %esi
40f87a:	89 55 ac             	mov    %edx,-0x54(%ebp)
40f87d:	e8 ae 05 00 00       	call   0x40fe30
40f882:	85 c0                	test   %eax,%eax
40f884:	0f 88 f2 94 06 00    	js     0x478d7c
40f88a:	8b 75 e0             	mov    -0x20(%ebp),%esi
40f88d:	83 fe 01             	cmp    $0x1,%esi
40f890:	0f 85 c6 03 00 00    	jne    0x40fc5c
40f896:	8b 5d d4             	mov    -0x2c(%ebp),%ebx
40f899:	8b c3                	mov    %ebx,%eax
40f89b:	85 c0                	test   %eax,%eax
40f89d:	0f 88 73 04 00 00    	js     0x40fd16
40f8a3:	8b 4d 08             	mov    0x8(%ebp),%ecx
40f8a6:	8b 55 ac             	mov    -0x54(%ebp),%edx
40f8a9:	8b 41 04             	mov    0x4(%ecx),%eax
40f8ac:	8b 04 90             	mov    (%eax,%edx,4),%eax
40f8af:	66 83 78 08 4f       	cmpw   $0x4f,0x8(%eax)
40f8b4:	0f 85 a5 94 06 00    	jne    0x478d5f
40f8ba:	42                   	inc    %edx
40f8bb:	89 55 b0             	mov    %edx,-0x50(%ebp)
40f8be:	83 fe 01             	cmp    $0x1,%esi
40f8c1:	0f 85 b8 03 00 00    	jne    0x40fc7f
40f8c7:	8b 45 ec             	mov    -0x14(%ebp),%eax
40f8ca:	8b 75 08             	mov    0x8(%ebp),%esi
40f8cd:	89 9c 85 4c fe ff ff 	mov    %ebx,-0x1b4(%ebp,%eax,4)
40f8d4:	8b 4e 04             	mov    0x4(%esi),%ecx
40f8d7:	8b d8                	mov    %eax,%ebx
40f8d9:	8b 04 91             	mov    (%ecx,%edx,4),%eax
40f8dc:	43                   	inc    %ebx
40f8dd:	66 83 78 08 4e       	cmpw   $0x4e,0x8(%eax)
40f8e2:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40f8e5:	0f 84 75 ff ff ff    	je     0x40f860
40f8eb:	8b 75 90             	mov    -0x70(%ebp),%esi
40f8ee:	83 7e 0c 05          	cmpl   $0x5,0xc(%esi)
40f8f2:	0f 85 91 94 06 00    	jne    0x478d89
40f8f8:	8b 06                	mov    (%esi),%eax
40f8fa:	33 c9                	xor    %ecx,%ecx
40f8fc:	c7 80 10 02 00 00 00 	movl   $0x0,0x210(%eax)
40f903:	00 00 00
40f906:	85 db                	test   %ebx,%ebx
40f908:	7e 3a                	jle    0x40f944
40f90a:	8b 7d 90             	mov    -0x70(%ebp),%edi
40f90d:	8d 49 00             	lea    0x0(%ecx),%ecx
40f910:	83 7f 0c 05          	cmpl   $0x5,0xc(%edi)
40f914:	75 23                	jne    0x40f939
40f916:	8b 17                	mov    (%edi),%edx
40f918:	8b b2 10 02 00 00    	mov    0x210(%edx),%esi
40f91e:	83 fe 40             	cmp    $0x40,%esi
40f921:	7d 16                	jge    0x40f939
40f923:	8b 84 8d 4c fe ff ff 	mov    -0x1b4(%ebp,%ecx,4),%eax
40f92a:	89 84 b2 0c 01 00 00 	mov    %eax,0x10c(%edx,%esi,4)
40f931:	8b 07                	mov    (%edi),%eax
40f933:	ff 80 10 02 00 00    	incl   0x210(%eax)
40f939:	41                   	inc    %ecx
40f93a:	3b cb                	cmp    %ebx,%ecx
40f93c:	7c d2                	jl     0x40f910
40f93e:	8b 7d 88             	mov    -0x78(%ebp),%edi
40f941:	8b 75 90             	mov    -0x70(%ebp),%esi
40f944:	6a 00                	push   $0x0
40f946:	6a 00                	push   $0x0
40f948:	56                   	push   %esi
40f949:	e8 42 22 00 00       	call   0x411b90
40f94e:	8b f0                	mov    %eax,%esi
40f950:	83 c4 0c             	add    $0xc,%esp
40f953:	85 f6                	test   %esi,%esi
40f955:	0f 84 14 94 06 00    	je     0x478d6f
40f95b:	8b 4d dc             	mov    -0x24(%ebp),%ecx
40f95e:	85 c9                	test   %ecx,%ecx
40f960:	0f 85 2f 94 06 00    	jne    0x478d95
40f966:	8b 45 e0             	mov    -0x20(%ebp),%eax
40f969:	83 f8 05             	cmp    $0x5,%eax
40f96c:	0f 8d 35 94 06 00    	jge    0x478da7
40f972:	8b 5d 08             	mov    0x8(%ebp),%ebx
40f975:	e9 41 fb ff ff       	jmp    0x40f4bb
40f97a:	8b 77 18             	mov    0x18(%edi),%esi
40f97d:	8d 47 18             	lea    0x18(%edi),%eax
40f980:	89 45 98             	mov    %eax,-0x68(%ebp)
40f983:	85 f6                	test   %esi,%esi
40f985:	0f 84 a0 fc ff ff    	je     0x40f62b
40f98b:	8b 46 04             	mov    0x4(%esi),%eax
40f98e:	39 45 b8             	cmp    %eax,-0x48(%ebp)
40f991:	0f 87 ed 01 00 00    	ja     0x40fb84
40f997:	8b 0e                	mov    (%esi),%ecx
40f999:	8b 55 c0             	mov    -0x40(%ebp),%edx
40f99c:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40f99f:	85 db                	test   %ebx,%ebx
40f9a1:	74 16                	je     0x40f9b9
40f9a3:	66 8b 02             	mov    (%edx),%ax
40f9a6:	66 3b 01             	cmp    (%ecx),%ax
40f9a9:	75 14                	jne    0x40f9bf
40f9ab:	83 c2 02             	add    $0x2,%edx
40f9ae:	83 c1 02             	add    $0x2,%ecx
40f9b1:	ff 4d e4             	decl   -0x1c(%ebp)
40f9b4:	75 ed                	jne    0x40f9a3
40f9b6:	8b 46 04             	mov    0x4(%esi),%eax
40f9b9:	3b d8                	cmp    %eax,%ebx
40f9bb:	72 04                	jb     0x40f9c1
40f9bd:	eb 24                	jmp    0x40f9e3
40f9bf:	73 22                	jae    0x40f9e3
40f9c1:	8b 4d 98             	mov    -0x68(%ebp),%ecx
40f9c4:	8b fe                	mov    %esi,%edi
40f9c6:	8b 47 1c             	mov    0x1c(%edi),%eax
40f9c9:	89 01                	mov    %eax,(%ecx)
40f9cb:	a1 e0 20 4c 00       	mov    0x4c20e0,%eax
40f9d0:	89 47 1c             	mov    %eax,0x1c(%edi)
40f9d3:	89 3d e0 20 4c 00    	mov    %edi,0x4c20e0
40f9d9:	83 7f 18 00          	cmpl   $0x0,0x18(%edi)
40f9dd:	0f 84 48 fc ff ff    	je     0x40f62b
40f9e3:	8b 4d 88             	mov    -0x78(%ebp),%ecx
40f9e6:	8b 5d b8             	mov    -0x48(%ebp),%ebx
40f9e9:	89 79 18             	mov    %edi,0x18(%ecx)
40f9ec:	a1 e0 20 4c 00       	mov    0x4c20e0,%eax
40f9f1:	89 45 88             	mov    %eax,-0x78(%ebp)
40f9f4:	8b 78 18             	mov    0x18(%eax),%edi
40f9f7:	89 3d e0 20 4c 00    	mov    %edi,0x4c20e0
40f9fd:	e9 de fb ff ff       	jmp    0x40f5e0
40fa02:	8b d3                	mov    %ebx,%edx
40fa04:	e9 b9 f8 ff ff       	jmp    0x40f2c2
40fa09:	8b d8                	mov    %eax,%ebx
40fa0b:	e9 35 f9 ff ff       	jmp    0x40f345
40fa10:	8b 5f 1c             	mov    0x1c(%edi),%ebx
40fa13:	8d 47 1c             	lea    0x1c(%edi),%eax
40fa16:	89 45 98             	mov    %eax,-0x68(%ebp)
40fa19:	85 db                	test   %ebx,%ebx
40fa1b:	0f 84 0a fc ff ff    	je     0x40f62b
40fa21:	8b 43 04             	mov    0x4(%ebx),%eax
40fa24:	8b 4d b8             	mov    -0x48(%ebp),%ecx
40fa27:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40fa2a:	3b c1                	cmp    %ecx,%eax
40fa2c:	0f 87 48 01 00 00    	ja     0x40fb7a
40fa32:	8b 4d c0             	mov    -0x40(%ebp),%ecx
40fa35:	8b 13                	mov    (%ebx),%edx
40fa37:	8b f0                	mov    %eax,%esi
40fa39:	85 c0                	test   %eax,%eax
40fa3b:	74 17                	je     0x40fa54
40fa3d:	8d 49 00             	lea    0x0(%ecx),%ecx
40fa40:	66 8b 02             	mov    (%edx),%ax
40fa43:	66 3b 01             	cmp    (%ecx),%ax
40fa46:	75 34                	jne    0x40fa7c
40fa48:	83 c2 02             	add    $0x2,%edx
40fa4b:	83 c1 02             	add    $0x2,%ecx
40fa4e:	4e                   	dec    %esi
40fa4f:	75 ef                	jne    0x40fa40
40fa51:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40fa54:	3b 45 b8             	cmp    -0x48(%ebp),%eax
40fa57:	73 25                	jae    0x40fa7e
40fa59:	8b 4d 98             	mov    -0x68(%ebp),%ecx
40fa5c:	8b fb                	mov    %ebx,%edi
40fa5e:	8b 47 18             	mov    0x18(%edi),%eax
40fa61:	89 01                	mov    %eax,(%ecx)
40fa63:	a1 e0 20 4c 00       	mov    0x4c20e0,%eax
40fa68:	89 47 18             	mov    %eax,0x18(%edi)
40fa6b:	89 3d e0 20 4c 00    	mov    %edi,0x4c20e0
40fa71:	83 7f 1c 00          	cmpl   $0x0,0x1c(%edi)
40fa75:	75 07                	jne    0x40fa7e
40fa77:	e9 af fb ff ff       	jmp    0x40f62b
40fa7c:	72 db                	jb     0x40fa59
40fa7e:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40fa81:	8b 5d b8             	mov    -0x48(%ebp),%ebx
40fa84:	89 79 1c             	mov    %edi,0x1c(%ecx)
40fa87:	a1 e0 20 4c 00       	mov    0x4c20e0,%eax
40fa8c:	89 45 ec             	mov    %eax,-0x14(%ebp)
40fa8f:	8b 78 1c             	mov    0x1c(%eax),%edi
40fa92:	89 3d e0 20 4c 00    	mov    %edi,0x4c20e0
40fa98:	e9 43 fb ff ff       	jmp    0x40f5e0
40fa9d:	8b 10                	mov    (%eax),%edx
40fa9f:	85 c9                	test   %ecx,%ecx
40faa1:	0f 84 e1 f7 ff ff    	je     0x40f288
40faa7:	eb 07                	jmp    0x40fab0
40faa9:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40fab0:	66 8b 07             	mov    (%edi),%ax
40fab3:	66 3b 02             	cmp    (%edx),%ax
40fab6:	0f 84 e9 00 00 00    	je     0x40fba5
40fabc:	0f b7 c0             	movzwl %ax,%eax
40fabf:	66 3b 02             	cmp    (%edx),%ax
40fac2:	e9 cb f7 ff ff       	jmp    0x40f292
40fac7:	8b 46 0c             	mov    0xc(%esi),%eax
40faca:	ff 08                	decl   (%eax)
40facc:	8b 46 0c             	mov    0xc(%esi),%eax
40facf:	83 38 00             	cmpl   $0x0,(%eax)
40fad2:	0f 84 b3 00 00 00    	je     0x40fb8b
40fad8:	56                   	push   %esi
40fad9:	e8 80 fa 00 00       	call   0x41f55e
40fade:	83 c4 04             	add    $0x4,%esp
40fae1:	c7 45 a4 00 00 00 00 	movl   $0x0,-0x5c(%ebp)
40fae8:	e9 3e fa ff ff       	jmp    0x40f52b
40faed:	66 83 f9 52          	cmp    $0x52,%cx
40faf1:	0f 84 8a f9 ff ff    	je     0x40f481
40faf7:	e9 2f 91 06 00       	jmp    0x478c2b
40fafc:	83 c7 ae             	add    $0xffffffae,%edi
40faff:	83 ff 04             	cmp    $0x4,%edi
40fb02:	0f 87 18 fa ff ff    	ja     0x40f520
40fb08:	ff 24 bd 20 fd 40 00 	jmp    *0x40fd20(,%edi,4)
40fb0f:	8d 45 9c             	lea    -0x64(%ebp),%eax
40fb12:	50                   	push   %eax
40fb13:	8b ce                	mov    %esi,%ecx
40fb15:	e8 0b 4a 00 00       	call   0x414525
40fb1a:	e9 01 fa ff ff       	jmp    0x40f520
40fb1f:	8b 17                	mov    (%edi),%edx
40fb21:	8b 75 c0             	mov    -0x40(%ebp),%esi
40fb24:	85 c9                	test   %ecx,%ecx
40fb26:	0f 84 eb fa ff ff    	je     0x40f617
40fb2c:	8d 64 24 00          	lea    0x0(%esp),%esp
40fb30:	66 8b 06             	mov    (%esi),%ax
40fb33:	66 3b 02             	cmp    (%edx),%ax
40fb36:	74 11                	je     0x40fb49
40fb38:	0f b7 c0             	movzwl %ax,%eax
40fb3b:	66 3b 02             	cmp    (%edx),%ax
40fb3e:	1b c0                	sbb    %eax,%eax
40fb40:	83 e0 fe             	and    $0xfffffffe,%eax
40fb43:	40                   	inc    %eax
40fb44:	e9 d0 fa ff ff       	jmp    0x40f619
40fb49:	83 c6 02             	add    $0x2,%esi
40fb4c:	83 c2 02             	add    $0x2,%edx
40fb4f:	49                   	dec    %ecx
40fb50:	75 de                	jne    0x40fb30
40fb52:	e9 c0 fa ff ff       	jmp    0x40f617
40fb57:	83 7d a8 04          	cmpl   $0x4,-0x58(%ebp)
40fb5b:	0f 85 90 f9 ff ff    	jne    0x40f4f1
40fb61:	8b 4e 08             	mov    0x8(%esi),%ecx
40fb64:	8b 75 a4             	mov    -0x5c(%ebp),%esi
40fb67:	3b ce                	cmp    %esi,%ecx
40fb69:	0f 84 b1 f9 ff ff    	je     0x40f520
40fb6f:	56                   	push   %esi
40fb70:	e8 d2 e1 ff ff       	call   0x40dd47
40fb75:	e9 a6 f9 ff ff       	jmp    0x40f520
40fb7a:	8b c1                	mov    %ecx,%eax
40fb7c:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40fb7f:	e9 ae fe ff ff       	jmp    0x40fa32
40fb84:	8b d8                	mov    %eax,%ebx
40fb86:	e9 0c fe ff ff       	jmp    0x40f997
40fb8b:	ff 36                	push   (%esi)
40fb8d:	e8 cc f9 00 00       	call   0x41f55e
40fb92:	83 c4 04             	add    $0x4,%esp
40fb95:	ff 76 0c             	push   0xc(%esi)
40fb98:	e8 c1 f9 00 00       	call   0x41f55e
40fb9d:	83 c4 04             	add    $0x4,%esp
40fba0:	e9 33 ff ff ff       	jmp    0x40fad8
40fba5:	83 c7 02             	add    $0x2,%edi
40fba8:	83 c2 02             	add    $0x2,%edx
40fbab:	49                   	dec    %ecx
40fbac:	0f 85 fe fe ff ff    	jne    0x40fab0
40fbb2:	33 c0                	xor    %eax,%eax
40fbb4:	e9 df f6 ff ff       	jmp    0x40f298
40fbb9:	8b cf                	mov    %edi,%ecx
40fbbb:	e8 77 cf ff ff       	call   0x40cb37
40fbc0:	57                   	push   %edi
40fbc1:	e8 98 f9 00 00       	call   0x41f55e
40fbc6:	83 c4 04             	add    $0x4,%esp
40fbc9:	c7 46 08 00 00 00 00 	movl   $0x0,0x8(%esi)
40fbd0:	e9 27 f9 ff ff       	jmp    0x40f4fc