40f649:	8b ec                	mov    %esp,%ebp
40f64b:	51                   	push   %ecx
40f64c:	51                   	push   %ecx
40f64d:	8b 51 48             	mov    0x48(%ecx),%edx
40f650:	85 d2                	test   %edx,%edx
40f652:	74 0b                	je     0x40f65f
40f654:	8b 41 50             	mov    0x50(%ecx),%eax
40f657:	f7 d8                	neg    %eax
40f659:	1b c0                	sbb    %eax,%eax
40f65b:	23 c2                	and    %edx,%eax
40f65d:	c9                   	leave
40f65e:	c3                   	ret
40f65f:	83 79 08 00          	cmpl   $0x0,0x8(%ecx)
40f663:	75 30                	jne    0x40f695
40f665:	8b 41 04             	mov    0x4(%ecx),%eax
40f668:	8b 40 4c             	mov    0x4c(%eax),%eax
40f66b:	8b 08                	mov    (%eax),%ecx
40f66d:	8d 55 f8             	lea    -0x8(%ebp),%edx
40f670:	52                   	push   %edx
40f671:	68 b0 c4 48 00       	push   $0x48c4b0
40f676:	50                   	push   %eax
40f677:	ff 11                	call   *(%ecx)
40f679:	85 c0                	test   %eax,%eax
40f67b:	7c 32                	jl     0x40f6af
40f67d:	8b 45 f8             	mov    -0x8(%ebp),%eax
40f680:	8b 08                	mov    (%eax),%ecx
40f682:	8d 55 fc             	lea    -0x4(%ebp),%edx
40f685:	52                   	push   %edx
40f686:	50                   	push   %eax
40f687:	ff 51 14             	call   *0x14(%ecx)
40f68a:	8b 45 f8             	mov    -0x8(%ebp),%eax
40f68d:	8b 08                	mov    (%eax),%ecx
40f68f:	50                   	push   %eax
40f690:	ff 51 08             	call   *0x8(%ecx)
40f693:	eb 15                	jmp    0x40f6aa
40f695:	8b 49 08             	mov    0x8(%ecx),%ecx
40f698:	8b 01                	mov    (%ecx),%eax
40f69a:	8d 55 fc             	lea    -0x4(%ebp),%edx
40f69d:	52                   	push   %edx
40f69e:	68 9c 46 49 00       	push   $0x49469c
40f6a3:	51                   	push   %ecx
40f6a4:	ff 10                	call   *(%eax)
40f6a6:	85 c0                	test   %eax,%eax
40f6a8:	7c 05                	jl     0x40f6af
40f6aa:	8b 45 fc             	mov    -0x4(%ebp),%eax
40f6ad:	c9                   	leave
40f6ae:	c3                   	ret
40f6af:	33 c0                	xor    %eax,%eax
40f6b1:	c9                   	leave
40f6b2:	c3                   	ret
40f6b3:	ff 74 24 04          	push   0x4(%esp)
40f6b7:	ff 15 f0 0a 4b 00    	call   *0x4b0af0
40f6bd:	c3                   	ret
40f6be:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40f6c2:	53                   	push   %ebx
40f6c3:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
40f6c7:	8b 43 10             	mov    0x10(%ebx),%eax
40f6ca:	89 41 10             	mov    %eax,0x10(%ecx)
40f6cd:	8b 43 10             	mov    0x10(%ebx),%eax
40f6d0:	83 e8 00             	sub    $0x0,%eax
40f6d3:	56                   	push   %esi
40f6d4:	57                   	push   %edi
40f6d5:	74 18                	je     0x40f6ef
40f6d7:	48                   	dec    %eax
40f6d8:	74 05                	je     0x40f6df
40f6da:	48                   	dec    %eax
40f6db:	74 1a                	je     0x40f6f7
40f6dd:	eb 42                	jmp    0x40f721
40f6df:	8b f3                	mov    %ebx,%esi
40f6e1:	8b f9                	mov    %ecx,%edi
40f6e3:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40f6e4:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40f6e5:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40f6e6:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40f6e7:	8b 43 14             	mov    0x14(%ebx),%eax
40f6ea:	89 41 14             	mov    %eax,0x14(%ecx)
40f6ed:	eb 32                	jmp    0x40f721
40f6ef:	8b f3                	mov    %ebx,%esi
40f6f1:	8b f9                	mov    %ecx,%edi
40f6f3:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40f6f4:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40f6f5:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40f6f6:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40f6f7:	ff 73 14             	push   0x14(%ebx)
40f6fa:	e8 c9 8d 00 00       	call   0x4184c8
40f6ff:	59                   	pop    %ecx
40f700:	8d 44 00 02          	lea    0x2(%eax,%eax,1),%eax
40f704:	50                   	push   %eax
40f705:	ff 15 18 0b 4b 00    	call   *0x4b0b18
40f70b:	85 c0                	test   %eax,%eax
40f70d:	8b 4c 24 10          	mov    0x10(%esp),%ecx
40f711:	89 41 14             	mov    %eax,0x14(%ecx)
40f714:	74 0e                	je     0x40f724
40f716:	ff 73 14             	push   0x14(%ebx)
40f719:	50                   	push   %eax
40f71a:	e8 38 70 00 00       	call   0x416757
40f71f:	59                   	pop    %ecx
40f720:	59                   	pop    %ecx
40f721:	33 c0                	xor    %eax,%eax
40f723:	40                   	inc    %eax
40f724:	5f                   	pop    %edi
40f725:	5e                   	pop    %esi
40f726:	5b                   	pop    %ebx
40f727:	c2 08 00             	ret    $0x8
40f72a:	83 7c 24 08 00       	cmpl   $0x0,0x8(%esp)
40f72f:	56                   	push   %esi
40f730:	8b f1                	mov    %ecx,%esi
40f732:	8b 06                	mov    (%esi),%eax
40f734:	74 17                	je     0x40f74d
40f736:	6a 00                	push   $0x0
40f738:	ff 74 24 0c          	push   0xc(%esp)
40f73c:	ff 50 04             	call   *0x4(%eax)
40f73f:	ff 74 24 08          	push   0x8(%esp)
40f743:	8d 4e 18             	lea    0x18(%esi),%ecx
40f746:	e8 e6 cf 02 00       	call   0x43c731
40f74b:	eb 1f                	jmp    0x40f76c
40f74d:	ff 50 14             	call   *0x14(%eax)
40f750:	6a 00                	push   $0x0
40f752:	ff 74 24 0c          	push   0xc(%esp)
40f756:	83 c6 18             	add    $0x18,%esi
40f759:	8b ce                	mov    %esi,%ecx
40f75b:	e8 04 cf 02 00       	call   0x43c664
40f760:	85 c0                	test   %eax,%eax
40f762:	74 08                	je     0x40f76c
40f764:	50                   	push   %eax
40f765:	8b ce                	mov    %esi,%ecx
40f767:	e8 9a ce 02 00       	call   0x43c606
40f76c:	5e                   	pop    %esi
40f76d:	c2 08 00             	ret    $0x8
40f770:	66 8b 54 24 0c       	mov    0xc(%esp),%dx
40f775:	8b c1                	mov    %ecx,%eax
40f777:	33 c9                	xor    %ecx,%ecx
40f779:	89 08                	mov    %ecx,(%eax)
40f77b:	66 89 50 04          	mov    %dx,0x4(%eax)
40f77f:	8b 54 24 08          	mov    0x8(%esp),%edx
40f783:	89 48 0c             	mov    %ecx,0xc(%eax)
40f786:	89 48 14             	mov    %ecx,0x14(%eax)
40f789:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40f78d:	89 50 08             	mov    %edx,0x8(%eax)
40f790:	89 48 18             	mov    %ecx,0x18(%eax)
40f793:	c2 0c 00             	ret    $0xc
40f796:	8b 44 24 04          	mov    0x4(%esp),%eax
40f79a:	89 01                	mov    %eax,(%ecx)
40f79c:	c2 04 00             	ret    $0x4
40f79f:	8b 41 18             	mov    0x18(%ecx),%eax
40f7a2:	c3                   	ret
40f7a3:	56                   	push   %esi
40f7a4:	8b f1                	mov    %ecx,%esi
40f7a6:	83 7e 0c 00          	cmpl   $0x0,0xc(%esi)
40f7aa:	75 04                	jne    0x40f7b0
40f7ac:	33 c0                	xor    %eax,%eax
40f7ae:	5e                   	pop    %esi
40f7af:	c3                   	ret
40f7b0:	8b 4e 0c             	mov    0xc(%esi),%ecx
40f7b3:	8b 01                	mov    (%ecx),%eax
40f7b5:	ff 90 b4 00 00 00    	call   *0xb4(%eax)
40f7bb:	8b 46 0c             	mov    0xc(%esi),%eax
40f7be:	8b 88 8c 00 00 00    	mov    0x8c(%eax),%ecx
40f7c4:	8b 01                	mov    (%ecx),%eax
40f7c6:	6a 01                	push   $0x1
40f7c8:	56                   	push   %esi
40f7c9:	ff 50 04             	call   *0x4(%eax)
40f7cc:	8b 46 0c             	mov    0xc(%esi),%eax
40f7cf:	8b 88 8c 00 00 00    	mov    0x8c(%eax),%ecx
40f7d5:	8b 01                	mov    (%ecx),%eax
40f7d7:	5e                   	pop    %esi
40f7d8:	ff 20                	jmp    *(%eax)
40f7da:	8b 44 24 0c          	mov    0xc(%esp),%eax
40f7de:	85 c0                	test   %eax,%eax
40f7e0:	74 03                	je     0x40f7e5
40f7e2:	83 20 00             	andl   $0x0,(%eax)
40f7e5:	8b 89 90 00 00 00    	mov    0x90(%ecx),%ecx
40f7eb:	eb 0c                	jmp    0x40f7f9
40f7ed:	8b 41 08             	mov    0x8(%ecx),%eax
40f7f0:	3b 44 24 04          	cmp    0x4(%esp),%eax
40f7f4:	74 09                	je     0x40f7ff
40f7f6:	8b 49 18             	mov    0x18(%ecx),%ecx
40f7f9:	85 c9                	test   %ecx,%ecx
40f7fb:	75 f0                	jne    0x40f7ed
40f7fd:	eb 0b                	jmp    0x40f80a
40f7ff:	e8 9f ff ff ff       	call   0x40f7a3
40f804:	8b 4c 24 08          	mov    0x8(%esp),%ecx
40f808:	89 01                	mov    %eax,(%ecx)
40f80a:	33 c0                	xor    %eax,%eax
40f80c:	c2 0c 00             	ret    $0xc
40f80f:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40f813:	81 c1 24 ff ff ff    	add    $0xffffff24,%ecx
40f819:	e8 c3 48 06 00       	call   0x4740e1
40f81e:	c2 04 00             	ret    $0x4
40f821:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40f825:	81 c1 24 ff ff ff    	add    $0xffffff24,%ecx
40f82b:	e8 38 47 06 00       	call   0x473f68
40f830:	c2 04 00             	ret    $0x4
40f833:	ff 74 24 0c          	push   0xc(%esp)
40f837:	8b 4c 24 08          	mov    0x8(%esp),%ecx
40f83b:	ff 74 24 0c          	push   0xc(%esp)
40f83f:	81 c1 24 ff ff ff    	add    $0xffffff24,%ecx
40f845:	e8 f2 48 06 00       	call   0x47413c
40f84a:	c2 0c 00             	ret    $0xc
40f84d:	ff 74 24 10          	push   0x10(%esp)
40f851:	8b 4c 24 08          	mov    0x8(%esp),%ecx
40f855:	ff 74 24 10          	push   0x10(%esp)
40f859:	81 c1 24 ff ff ff    	add    $0xffffff24,%ecx
40f85f:	ff 74 24 10          	push   0x10(%esp)
40f863:	e8 72 ff ff ff       	call   0x40f7da
40f868:	c2 10 00             	ret    $0x10
40f86b:	33 c0                	xor    %eax,%eax
40f86d:	40                   	inc    %eax
40f86e:	c2 04 00             	ret    $0x4
40f871:	33 c0                	xor    %eax,%eax
40f873:	c2 04 00             	ret    $0x4
40f876:	68 1c 5d 49 00       	push   $0x495d1c
40f87b:	ff 74 24 0c          	push   0xc(%esp)
40f87f:	e8 33 7d ff ff       	call   0x4075b7
40f884:	85 c0                	test   %eax,%eax
40f886:	59                   	pop    %ecx
40f887:	59                   	pop    %ecx
40f888:	75 1b                	jne    0x40f8a5
40f88a:	68 5c 46 49 00       	push   $0x49465c
40f88f:	ff 74 24 0c          	push   0xc(%esp)
40f893:	e8 1f 7d ff ff       	call   0x4075b7
40f898:	85 c0                	test   %eax,%eax
40f89a:	59                   	pop    %ecx
40f89b:	59                   	pop    %ecx
40f89c:	75 07                	jne    0x40f8a5
40f89e:	b8 02 40 00 80       	mov    $0x80004002,%eax
40f8a3:	eb 12                	jmp    0x40f8b7
40f8a5:	8b 44 24 04          	mov    0x4(%esp),%eax
40f8a9:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40f8ad:	89 01                	mov    %eax,(%ecx)
40f8af:	8b 08                	mov    (%eax),%ecx
40f8b1:	50                   	push   %eax
40f8b2:	ff 51 04             	call   *0x4(%ecx)
40f8b5:	33 c0                	xor    %eax,%eax
40f8b7:	c2 0c 00             	ret    $0xc
40f8ba:	33 c0                	xor    %eax,%eax
40f8bc:	40                   	inc    %eax
40f8bd:	c2 04 00             	ret    $0x4
40f8c0:	33 c0                	xor    %eax,%eax
40f8c2:	c2 04 00             	ret    $0x4
40f8c5:	68 1c 5d 49 00       	push   $0x495d1c
40f8ca:	ff 74 24 0c          	push   0xc(%esp)
40f8ce:	e8 e4 7c ff ff       	call   0x4075b7
40f8d3:	85 c0                	test   %eax,%eax
40f8d5:	59                   	pop    %ecx
40f8d6:	59                   	pop    %ecx
40f8d7:	75 1b                	jne    0x40f8f4
40f8d9:	68 5c 66 49 00       	push   $0x49665c
40f8de:	ff 74 24 0c          	push   0xc(%esp)
40f8e2:	e8 d0 7c ff ff       	call   0x4075b7
40f8e7:	85 c0                	test   %eax,%eax
40f8e9:	59                   	pop    %ecx
40f8ea:	59                   	pop    %ecx
40f8eb:	75 07                	jne    0x40f8f4
40f8ed:	b8 02 40 00 80       	mov    $0x80004002,%eax
40f8f2:	eb 12                	jmp    0x40f906
40f8f4:	8b 44 24 04          	mov    0x4(%esp),%eax
40f8f8:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
40f8fc:	89 01                	mov    %eax,(%ecx)
40f8fe:	8b 08                	mov    (%eax),%ecx
40f900:	50                   	push   %eax
40f901:	ff 51 04             	call   *0x4(%ecx)
40f904:	33 c0                	xor    %eax,%eax
40f906:	c2 0c 00             	ret    $0xc
40f909:	8b 01                	mov    (%ecx),%eax
40f90b:	85 c0                	test   %eax,%eax
40f90d:	74 06                	je     0x40f915
40f90f:	8b 08                	mov    (%eax),%ecx
40f911:	50                   	push   %eax
40f912:	ff 51 08             	call   *0x8(%ecx)
40f915:	c3                   	ret
40f916:	8b 01                	mov    (%ecx),%eax
40f918:	c3                   	ret
40f919:	8b c1                	mov    %ecx,%eax
40f91b:	c3                   	ret
40f91c:	8b 01                	mov    (%ecx),%eax
40f91e:	c3                   	ret
40f91f:	8b 01                	mov    (%ecx),%eax
40f921:	85 c0                	test   %eax,%eax
40f923:	74 06                	je     0x40f92b
40f925:	8b 08                	mov    (%eax),%ecx
40f927:	50                   	push   %eax
40f928:	ff 51 08             	call   *0x8(%ecx)
40f92b:	c3                   	ret
40f92c:	8b 01                	mov    (%ecx),%eax
40f92e:	c3                   	ret
40f92f:	8b 01                	mov    (%ecx),%eax
40f931:	c3                   	ret
40f932:	8b 01                	mov    (%ecx),%eax
40f934:	c3                   	ret
40f935:	8b 01                	mov    (%ecx),%eax
40f937:	c3                   	ret
40f938:	8b 01                	mov    (%ecx),%eax
40f93a:	85 c0                	test   %eax,%eax
40f93c:	74 06                	je     0x40f944
40f93e:	8b 08                	mov    (%eax),%ecx
40f940:	50                   	push   %eax
40f941:	ff 51 08             	call   *0x8(%ecx)
40f944:	c3                   	ret
40f945:	8b c1                	mov    %ecx,%eax
40f947:	c3                   	ret
40f948:	8b 01                	mov    (%ecx),%eax
40f94a:	c3                   	ret
40f94b:	8b 01                	mov    (%ecx),%eax
40f94d:	85 c0                	test   %eax,%eax
40f94f:	74 06                	je     0x40f957
40f951:	8b 08                	mov    (%eax),%ecx
40f953:	50                   	push   %eax
40f954:	ff 51 08             	call   *0x8(%ecx)
40f957:	c3                   	ret
40f958:	8b c1                	mov    %ecx,%eax
40f95a:	c3                   	ret
40f95b:	8b 01                	mov    (%ecx),%eax
40f95d:	c3                   	ret
40f95e:	8b 01                	mov    (%ecx),%eax
40f960:	c3                   	ret
40f961:	8b c1                	mov    %ecx,%eax
40f963:	c3                   	ret
40f964:	56                   	push   %esi
40f965:	57                   	push   %edi
40f966:	33 ff                	xor    %edi,%edi
40f968:	8d 71 0c             	lea    0xc(%ecx),%esi
40f96b:	33 c0                	xor    %eax,%eax
40f96d:	39 3e                	cmp    %edi,(%esi)
40f96f:	74 10                	je     0x40f981
40f971:	8b 01                	mov    (%ecx),%eax
40f973:	8b 08                	mov    (%eax),%ecx
40f975:	57                   	push   %edi
40f976:	57                   	push   %edi
40f977:	57                   	push   %edi
40f978:	56                   	push   %esi
40f979:	6a 01                	push   $0x1
40f97b:	50                   	push   %eax
40f97c:	ff 51 18             	call   *0x18(%ecx)
40f97f:	89 3e                	mov    %edi,(%esi)
40f981:	5f                   	pop    %edi
40f982:	5e                   	pop    %esi
40f983:	c3                   	ret
40f984:	8b 44 24 04          	mov    0x4(%esp),%eax
40f988:	89 41 08             	mov    %eax,0x8(%ecx)
40f98b:	c2 04 00             	ret    $0x4
40f98e:	8b c1                	mov    %ecx,%eax
40f990:	83 20 00             	andl   $0x0,(%eax)
40f993:	c3                   	ret
40f994:	ff 74 24 04          	push   0x4(%esp)
40f998:	51                   	push   %ecx
40f999:	e8 28 ed ff ff       	call   0x40e6c6
40f99e:	c2 04 00             	ret    $0x4
40f9a1:	8b 01                	mov    (%ecx),%eax
40f9a3:	85 c0                	test   %eax,%eax