40a5f0:	85 f6                	test   %esi,%esi
40a5f2:	79 07                	jns    0x40a5fb
40a5f4:	68 8c ea 44 00       	push   $0x44ea8c
40a5f9:	eb 33                	jmp    0x40a62e
40a5fb:	ff 77 14             	push   0x14(%edi)
40a5fe:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40a601:	50                   	push   %eax
40a602:	e8 b0 58 01 00       	call   0x41feb7
40a607:	8b f0                	mov    %eax,%esi
40a609:	85 f6                	test   %esi,%esi
40a60b:	79 07                	jns    0x40a614
40a60d:	68 ac ea 44 00       	push   $0x44eaac
40a612:	eb 1a                	jmp    0x40a62e
40a614:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40a617:	50                   	push   %eax
40a618:	ff 77 04             	push   0x4(%edi)
40a61b:	ff 75 0c             	push   0xc(%ebp)
40a61e:	e8 14 db ff ff       	call   0x408137
40a623:	8b f0                	mov    %eax,%esi
40a625:	85 f6                	test   %esi,%esi
40a627:	79 24                	jns    0x40a64d
40a629:	68 18 d2 44 00       	push   $0x44d218
40a62e:	56                   	push   %esi
40a62f:	e8 fb 5a 03 00       	call   0x44012f
40a634:	59                   	pop    %ecx
40a635:	59                   	pop    %ecx
40a636:	85 f6                	test   %esi,%esi
40a638:	79 13                	jns    0x40a64d
40a63a:	56                   	push   %esi
40a63b:	ff 75 f8             	push   -0x8(%ebp)
40a63e:	68 cc ea 44 00       	push   $0x44eacc
40a643:	6a 02                	push   $0x2
40a645:	e8 d0 5f 03 00       	call   0x44061a
40a64a:	83 c4 10             	add    $0x10,%esp
40a64d:	ff 75 f8             	push   -0x8(%ebp)
40a650:	e8 3e 81 ff ff       	call   0x402793
40a655:	ff 75 f0             	push   -0x10(%ebp)
40a658:	e8 36 81 ff ff       	call   0x402793
40a65d:	83 7d f4 00          	cmpl   $0x0,-0xc(%ebp)
40a661:	74 0d                	je     0x40a670
40a663:	ff 75 f4             	push   -0xc(%ebp)
40a666:	ff 15 00 b0 44 00    	call   *0x44b000
40a66c:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
40a670:	85 db                	test   %ebx,%ebx
40a672:	74 06                	je     0x40a67a
40a674:	53                   	push   %ebx
40a675:	e8 1f 93 ff ff       	call   0x403999
40a67a:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40a67d:	50                   	push   %eax
40a67e:	e8 16 5e 01 00       	call   0x420499
40a683:	5f                   	pop    %edi
40a684:	8b c6                	mov    %esi,%eax
40a686:	5e                   	pop    %esi
40a687:	5b                   	pop    %ebx
40a688:	8b e5                	mov    %ebp,%esp
40a68a:	5d                   	pop    %ebp
40a68b:	c2 08 00             	ret    $0x8
40a68e:	55                   	push   %ebp
40a68f:	8b ec                	mov    %esp,%ebp
40a691:	83 ec 0c             	sub    $0xc,%esp
40a694:	8b 45 08             	mov    0x8(%ebp),%eax
40a697:	53                   	push   %ebx
40a698:	33 db                	xor    %ebx,%ebx
40a69a:	56                   	push   %esi
40a69b:	8b cb                	mov    %ebx,%ecx
40a69d:	89 5d f4             	mov    %ebx,-0xc(%ebp)
40a6a0:	57                   	push   %edi
40a6a1:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40a6a4:	39 58 04             	cmp    %ebx,0x4(%eax)
40a6a7:	0f 86 37 01 00 00    	jbe    0x40a7e4
40a6ad:	8b 7d 0c             	mov    0xc(%ebp),%edi
40a6b0:	8b d3                	mov    %ebx,%edx
40a6b2:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40a6b5:	8b 30                	mov    (%eax),%esi
40a6b7:	03 f2                	add    %edx,%esi
40a6b9:	8b 46 08             	mov    0x8(%esi),%eax
40a6bc:	85 c0                	test   %eax,%eax
40a6be:	74 36                	je     0x40a6f6
40a6c0:	66 39 18             	cmp    %bx,(%eax)
40a6c3:	74 31                	je     0x40a6f6
40a6c5:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40a6c8:	51                   	push   %ecx
40a6c9:	50                   	push   %eax
40a6ca:	57                   	push   %edi
40a6cb:	e8 e4 f0 ff ff       	call   0x4097b4
40a6d0:	8b d8                	mov    %eax,%ebx
40a6d2:	81 fb 0d 00 07 80    	cmp    $0x8007000d,%ebx
40a6d8:	0f 84 d4 00 00 00    	je     0x40a7b2
40a6de:	85 db                	test   %ebx,%ebx
40a6e0:	0f 88 eb 00 00 00    	js     0x40a7d1
40a6e6:	83 7d f4 00          	cmpl   $0x0,-0xc(%ebp)
40a6ea:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a6ed:	8b 55 f8             	mov    -0x8(%ebp),%edx
40a6f0:	0f 84 c2 00 00 00    	je     0x40a7b8
40a6f6:	8b 46 0c             	mov    0xc(%esi),%eax
40a6f9:	83 e8 01             	sub    $0x1,%eax
40a6fc:	0f 84 93 00 00 00    	je     0x40a795
40a702:	83 e8 01             	sub    $0x1,%eax
40a705:	74 61                	je     0x40a768
40a707:	83 e8 01             	sub    $0x1,%eax
40a70a:	74 3d                	je     0x40a749
40a70c:	83 e8 01             	sub    $0x1,%eax
40a70f:	74 2f                	je     0x40a740
40a711:	83 e8 01             	sub    $0x1,%eax
40a714:	74 21                	je     0x40a737
40a716:	83 e8 01             	sub    $0x1,%eax
40a719:	0f 85 99 00 00 00    	jne    0x40a7b8
40a71f:	68 01 40 00 80       	push   $0x80004001
40a724:	ff 36                	push   (%esi)
40a726:	68 a4 ed 44 00       	push   $0x44eda4
40a72b:	6a 02                	push   $0x2
40a72d:	e8 e8 5e 03 00       	call   0x44061a
40a732:	83 c4 10             	add    $0x10,%esp
40a735:	eb 7b                	jmp    0x40a7b2
40a737:	57                   	push   %edi
40a738:	56                   	push   %esi
40a739:	e8 ed f7 ff ff       	call   0x409f2b
40a73e:	eb 72                	jmp    0x40a7b2
40a740:	57                   	push   %edi
40a741:	56                   	push   %esi
40a742:	e8 6d f6 ff ff       	call   0x409db4
40a747:	eb 69                	jmp    0x40a7b2
40a749:	8b 46 10             	mov    0x10(%esi),%eax
40a74c:	83 e8 01             	sub    $0x1,%eax
40a74f:	74 0e                	je     0x40a75f
40a751:	83 e8 01             	sub    $0x1,%eax
40a754:	75 62                	jne    0x40a7b8
40a756:	57                   	push   %edi
40a757:	56                   	push   %esi
40a758:	e8 b4 fb ff ff       	call   0x40a311
40a75d:	eb 53                	jmp    0x40a7b2
40a75f:	57                   	push   %edi
40a760:	56                   	push   %esi
40a761:	e8 17 fa ff ff       	call   0x40a17d
40a766:	eb 4a                	jmp    0x40a7b2
40a768:	8b 46 10             	mov    0x10(%esi),%eax
40a76b:	83 e8 01             	sub    $0x1,%eax
40a76e:	74 1c                	je     0x40a78c
40a770:	83 e8 01             	sub    $0x1,%eax
40a773:	74 0e                	je     0x40a783
40a775:	83 e8 01             	sub    $0x1,%eax
40a778:	75 3e                	jne    0x40a7b8
40a77a:	57                   	push   %edi
40a77b:	56                   	push   %esi
40a77c:	e8 b8 f4 ff ff       	call   0x409c39
40a781:	eb 2f                	jmp    0x40a7b2
40a783:	57                   	push   %edi
40a784:	56                   	push   %esi
40a785:	e8 79 f5 ff ff       	call   0x409d03
40a78a:	eb 26                	jmp    0x40a7b2
40a78c:	57                   	push   %edi
40a78d:	56                   	push   %esi
40a78e:	e8 ac f3 ff ff       	call   0x409b3f
40a793:	eb 1d                	jmp    0x40a7b2
40a795:	8b 46 10             	mov    0x10(%esi),%eax
40a798:	83 e8 01             	sub    $0x1,%eax
40a79b:	74 0e                	je     0x40a7ab
40a79d:	83 e8 01             	sub    $0x1,%eax
40a7a0:	75 16                	jne    0x40a7b8
40a7a2:	57                   	push   %edi
40a7a3:	56                   	push   %esi
40a7a4:	e8 c4 f2 ff ff       	call   0x409a6d
40a7a9:	eb 07                	jmp    0x40a7b2
40a7ab:	57                   	push   %edi
40a7ac:	56                   	push   %esi
40a7ad:	e8 e9 f1 ff ff       	call   0x40999b
40a7b2:	8b 55 f8             	mov    -0x8(%ebp),%edx
40a7b5:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a7b8:	8b 45 08             	mov    0x8(%ebp),%eax
40a7bb:	41                   	inc    %ecx
40a7bc:	83 c2 2c             	add    $0x2c,%edx
40a7bf:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40a7c2:	33 db                	xor    %ebx,%ebx
40a7c4:	89 55 f8             	mov    %edx,-0x8(%ebp)
40a7c7:	3b 48 04             	cmp    0x4(%eax),%ecx
40a7ca:	73 18                	jae    0x40a7e4
40a7cc:	e9 e4 fe ff ff       	jmp    0x40a6b5
40a7d1:	ff 76 08             	push   0x8(%esi)
40a7d4:	ff 36                	push   (%esi)
40a7d6:	68 50 e6 44 00       	push   $0x44e650
40a7db:	53                   	push   %ebx
40a7dc:	e8 4e 59 03 00       	call   0x44012f
40a7e1:	83 c4 10             	add    $0x10,%esp
40a7e4:	5f                   	pop    %edi
40a7e5:	5e                   	pop    %esi
40a7e6:	8b c3                	mov    %ebx,%eax
40a7e8:	5b                   	pop    %ebx
40a7e9:	8b e5                	mov    %ebp,%esp
40a7eb:	5d                   	pop    %ebp
40a7ec:	c2 08 00             	ret    $0x8
40a7ef:	55                   	push   %ebp
40a7f0:	8b ec                	mov    %esp,%ebp
40a7f2:	83 ec 18             	sub    $0x18,%esp
40a7f5:	33 c0                	xor    %eax,%eax
40a7f7:	56                   	push   %esi
40a7f8:	89 45 ec             	mov    %eax,-0x14(%ebp)
40a7fb:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a7fe:	89 45 f0             	mov    %eax,-0x10(%ebp)
40a801:	89 45 f4             	mov    %eax,-0xc(%ebp)
40a804:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a807:	8d 45 ec             	lea    -0x14(%ebp),%eax
40a80a:	50                   	push   %eax
40a80b:	68 c0 e0 44 00       	push   $0x44e0c0
40a810:	ff 75 0c             	push   0xc(%ebp)
40a813:	e8 eb 8f 03 00       	call   0x443803
40a818:	8b f0                	mov    %eax,%esi
40a81a:	85 f6                	test   %esi,%esi
40a81c:	79 12                	jns    0x40a830
40a81e:	68 80 e1 44 00       	push   $0x44e180
40a823:	56                   	push   %esi
40a824:	e8 06 59 03 00       	call   0x44012f
40a829:	59                   	pop    %ecx
40a82a:	59                   	pop    %ecx
40a82b:	e9 c8 07 00 00       	jmp    0x40aff8
40a830:	8b 45 ec             	mov    -0x14(%ebp),%eax
40a833:	8d 55 f0             	lea    -0x10(%ebp),%edx
40a836:	52                   	push   %edx
40a837:	50                   	push   %eax
40a838:	8b 08                	mov    (%eax),%ecx
40a83a:	ff 51 20             	call   *0x20(%ecx)
40a83d:	8b f0                	mov    %eax,%esi
40a83f:	85 f6                	test   %esi,%esi
40a841:	79 07                	jns    0x40a84a
40a843:	68 a0 e1 44 00       	push   $0x44e1a0
40a848:	eb d9                	jmp    0x40a823
40a84a:	8b 45 f0             	mov    -0x10(%ebp),%eax
40a84d:	85 c0                	test   %eax,%eax
40a84f:	0f 84 a3 07 00 00    	je     0x40aff8
40a855:	6b c0 2c             	imul   $0x2c,%eax,%eax
40a858:	6a 01                	push   $0x1
40a85a:	50                   	push   %eax
40a85b:	e8 74 90 ff ff       	call   0x4038d4
40a860:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a863:	89 01                	mov    %eax,(%ecx)
40a865:	85 c0                	test   %eax,%eax
40a867:	75 19                	jne    0x40a882
40a869:	be 0e 00 07 80       	mov    $0x8007000e,%esi
40a86e:	56                   	push   %esi
40a86f:	6a 4f                	push   $0x4f
40a871:	68 c4 e1 44 00       	push   $0x44e1c4
40a876:	e8 58 8f ff ff       	call   0x4037d3
40a87b:	68 d0 e1 44 00       	push   $0x44e1d0
40a880:	eb a1                	jmp    0x40a823
40a882:	8b 45 f0             	mov    -0x10(%ebp),%eax
40a885:	33 f6                	xor    %esi,%esi
40a887:	89 41 04             	mov    %eax,0x4(%ecx)
40a88a:	89 75 0c             	mov    %esi,0xc(%ebp)
40a88d:	53                   	push   %ebx
40a88e:	57                   	push   %edi
40a88f:	85 c0                	test   %eax,%eax
40a891:	0f 84 5f 07 00 00    	je     0x40aff6
40a897:	8b 1d 28 b1 44 00    	mov    0x44b128,%ebx
40a89d:	8b d6                	mov    %esi,%edx
40a89f:	89 55 e8             	mov    %edx,-0x18(%ebp)
40a8a2:	8b 39                	mov    (%ecx),%edi
40a8a4:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a8a7:	50                   	push   %eax
40a8a8:	8d 45 f8             	lea    -0x8(%ebp),%eax
40a8ab:	03 fa                	add    %edx,%edi
40a8ad:	50                   	push   %eax
40a8ae:	ff 75 ec             	push   -0x14(%ebp)
40a8b1:	e8 aa 8e 03 00       	call   0x443760
40a8b6:	8b f0                	mov    %eax,%esi
40a8b8:	85 f6                	test   %esi,%esi
40a8ba:	0f 88 29 07 00 00    	js     0x40afe9
40a8c0:	57                   	push   %edi
40a8c1:	68 64 ca 44 00       	push   $0x44ca64
40a8c6:	ff 75 f8             	push   -0x8(%ebp)
40a8c9:	e8 f9 88 03 00       	call   0x4431c7
40a8ce:	8b f0                	mov    %eax,%esi
40a8d0:	85 f6                	test   %esi,%esi
40a8d2:	0f 88 0a 07 00 00    	js     0x40afe2
40a8d8:	8d 47 04             	lea    0x4(%edi),%eax
40a8db:	50                   	push   %eax
40a8dc:	68 ec c9 44 00       	push   $0x44c9ec
40a8e1:	ff 75 f8             	push   -0x8(%ebp)
40a8e4:	e8 de 88 03 00       	call   0x4431c7
40a8e9:	8b f0                	mov    %eax,%esi
40a8eb:	85 f6                	test   %esi,%esi
40a8ed:	0f 88 e8 06 00 00    	js     0x40afdb
40a8f3:	8d 47 08             	lea    0x8(%edi),%eax
40a8f6:	50                   	push   %eax
40a8f7:	68 0c dc 44 00       	push   $0x44dc0c
40a8fc:	ff 75 f8             	push   -0x8(%ebp)
40a8ff:	e8 c3 88 03 00       	call   0x4431c7
40a904:	8b f0                	mov    %eax,%esi
40a906:	81 fe 90 04 07 80    	cmp    $0x80070490,%esi
40a90c:	74 08                	je     0x40a916
40a90e:	85 f6                	test   %esi,%esi
40a910:	0f 88 10 06 00 00    	js     0x40af26
40a916:	6a ff                	push   $0xffffffff
40a918:	68 38 e2 44 00       	push   $0x44e238
40a91d:	6a ff                	push   $0xffffffff
40a91f:	ff 75 f4             	push   -0xc(%ebp)
40a922:	33 f6                	xor    %esi,%esi
40a924:	56                   	push   %esi
40a925:	6a 7f                	push   $0x7f
40a927:	ff d3                	call   *%ebx
40a929:	83 f8 02             	cmp    $0x2,%eax
40a92c:	75 7f                	jne    0x40a9ad
40a92e:	8d 47 14             	lea    0x14(%edi),%eax
40a931:	c7 47 0c 01 00 00 00 	movl   $0x1,0xc(%edi)
40a938:	50                   	push   %eax
40a939:	68 58 e2 44 00       	push   $0x44e258
40a93e:	ff 75 f8             	push   -0x8(%ebp)
40a941:	e8 81 88 03 00       	call   0x4431c7
40a946:	8b f0                	mov    %eax,%esi
40a948:	85 f6                	test   %esi,%esi
40a94a:	0f 88 e0 05 00 00    	js     0x40af30
40a950:	8d 45 fc             	lea    -0x4(%ebp),%eax
40a953:	50                   	push   %eax
40a954:	68 1c cb 44 00       	push   $0x44cb1c
40a959:	ff 75 f8             	push   -0x8(%ebp)
40a95c:	e8 66 88 03 00       	call   0x4431c7
40a961:	8b f0                	mov    %eax,%esi
40a963:	85 f6                	test   %esi,%esi
40a965:	0f 88 43 06 00 00    	js     0x40afae
40a96b:	6a ff                	push   $0xffffffff
40a96d:	68 7c e2 44 00       	push   $0x44e27c
40a972:	6a ff                	push   $0xffffffff
40a974:	ff 75 fc             	push   -0x4(%ebp)
40a977:	33 f6                	xor    %esi,%esi
40a979:	56                   	push   %esi
40a97a:	6a 7f                	push   $0x7f
40a97c:	ff d3                	call   *%ebx
40a97e:	6a 02                	push   $0x2
40a980:	5a                   	pop    %edx
40a981:	3b c2                	cmp    %edx,%eax
40a983:	0f 84 54 05 00 00    	je     0x40aedd
40a989:	6a ff                	push   $0xffffffff
40a98b:	68 8c e2 44 00       	push   $0x44e28c
40a990:	6a ff                	push   $0xffffffff
40a992:	ff 75 fc             	push   -0x4(%ebp)
40a995:	56                   	push   %esi
40a996:	6a 7f                	push   $0x7f
40a998:	ff d3                	call   *%ebx
40a99a:	6a 02                	push   $0x2
40a99c:	5a                   	pop    %edx
40a99d:	3b c2                	cmp    %edx,%eax
40a99f:	0f 85 f7 05 00 00    	jne    0x40af9c
40a9a5:	89 57 10             	mov    %edx,0x10(%edi)
40a9a8:	e9 37 05 00 00       	jmp    0x40aee4
40a9ad:	6a ff                	push   $0xffffffff
40a9af:	68 98 e2 44 00       	push   $0x44e298
40a9b4:	6a ff                	push   $0xffffffff
40a9b6:	ff 75 f4             	push   -0xc(%ebp)
40a9b9:	56                   	push   %esi
40a9ba:	6a 7f                	push   $0x7f
40a9bc:	ff d3                	call   *%ebx
40a9be:	6a 02                	push   $0x2