40a510:	ff d7                	call   *%edi
40a512:	89 45 e0             	mov    %eax,-0x20(%ebp)
40a515:	8d 45 d8             	lea    -0x28(%ebp),%eax
40a518:	50                   	push   %eax
40a519:	c7 45 d8 08 00 00 00 	movl   $0x8,-0x28(%ebp)
40a520:	ff d3                	call   *%ebx
40a522:	8b d0                	mov    %eax,%edx
40a524:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40a527:	ff 15 88 11 40 00    	call   *0x401188
40a52d:	50                   	push   %eax
40a52e:	6a 00                	push   $0x0
40a530:	ff 15 b8 10 40 00    	call   *0x4010b8
40a536:	8b f0                	mov    %eax,%esi
40a538:	f7 de                	neg    %esi
40a53a:	1b f6                	sbb    %esi,%esi
40a53c:	46                   	inc    %esi
40a53d:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40a540:	f7 de                	neg    %esi
40a542:	ff 15 a8 11 40 00    	call   *0x4011a8
40a548:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40a54b:	ff 15 14 10 40 00    	call   *0x401014
40a551:	66 85 f6             	test   %si,%si
40a554:	74 3b                	je     0x40a591
40a556:	8d 55 b8             	lea    -0x48(%ebp),%edx
40a559:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40a55c:	c7 45 c0 20 7c 40 00 	movl   $0x407c20,-0x40(%ebp)
40a563:	c7 45 b8 08 00 00 00 	movl   $0x8,-0x48(%ebp)
40a56a:	ff 15 74 11 40 00    	call   *0x401174
40a570:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40a573:	51                   	push   %ecx
40a574:	8d 55 c8             	lea    -0x38(%ebp),%edx
40a577:	52                   	push   %edx
40a578:	ff 15 58 10 40 00    	call   *0x401058
40a57e:	8d 45 c8             	lea    -0x38(%ebp),%eax
40a581:	50                   	push   %eax
40a582:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40a585:	51                   	push   %ecx
40a586:	6a 02                	push   $0x2
40a588:	ff 15 28 10 40 00    	call   *0x401028
40a58e:	83 c4 0c             	add    $0xc,%esp
40a591:	68 2c 7b 40 00       	push   $0x407b2c
40a596:	68 38 7b 40 00       	push   $0x407b38
40a59b:	ff d7                	call   *%edi
40a59d:	8d 55 d8             	lea    -0x28(%ebp),%edx
40a5a0:	52                   	push   %edx
40a5a1:	89 45 e0             	mov    %eax,-0x20(%ebp)
40a5a4:	c7 45 d8 08 00 00 00 	movl   $0x8,-0x28(%ebp)
40a5ab:	ff d3                	call   *%ebx
40a5ad:	8b d0                	mov    %eax,%edx
40a5af:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40a5b2:	ff 15 88 11 40 00    	call   *0x401188
40a5b8:	50                   	push   %eax
40a5b9:	6a 00                	push   $0x0
40a5bb:	ff 15 b8 10 40 00    	call   *0x4010b8
40a5c1:	8b f0                	mov    %eax,%esi
40a5c3:	f7 de                	neg    %esi
40a5c5:	1b f6                	sbb    %esi,%esi
40a5c7:	46                   	inc    %esi
40a5c8:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40a5cb:	f7 de                	neg    %esi
40a5cd:	ff 15 a8 11 40 00    	call   *0x4011a8
40a5d3:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40a5d6:	ff 15 14 10 40 00    	call   *0x401014
40a5dc:	66 85 f6             	test   %si,%si
40a5df:	74 3b                	je     0x40a61c
40a5e1:	8d 55 b8             	lea    -0x48(%ebp),%edx
40a5e4:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40a5e7:	c7 45 c0 40 7c 40 00 	movl   $0x407c40,-0x40(%ebp)
40a5ee:	c7 45 b8 08 00 00 00 	movl   $0x8,-0x48(%ebp)
40a5f5:	ff 15 74 11 40 00    	call   *0x401174
40a5fb:	8d 45 d8             	lea    -0x28(%ebp),%eax
40a5fe:	50                   	push   %eax
40a5ff:	8d 4d c8             	lea    -0x38(%ebp),%ecx
40a602:	51                   	push   %ecx
40a603:	ff 15 58 10 40 00    	call   *0x401058
40a609:	8d 55 c8             	lea    -0x38(%ebp),%edx
40a60c:	52                   	push   %edx
40a60d:	8d 45 d8             	lea    -0x28(%ebp),%eax
40a610:	50                   	push   %eax
40a611:	6a 02                	push   $0x2
40a613:	ff 15 28 10 40 00    	call   *0x401028
40a619:	83 c4 0c             	add    $0xc,%esp
40a61c:	68 41 a6 40 00       	push   $0x40a641
40a621:	eb 1d                	jmp    0x40a640
40a623:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40a626:	ff 15 a8 11 40 00    	call   *0x4011a8
40a62c:	8d 4d c8             	lea    -0x38(%ebp),%ecx
40a62f:	51                   	push   %ecx
40a630:	8d 55 d8             	lea    -0x28(%ebp),%edx
40a633:	52                   	push   %edx
40a634:	6a 02                	push   $0x2
40a636:	ff 15 28 10 40 00    	call   *0x401028
40a63c:	83 c4 0c             	add    $0xc,%esp
40a63f:	c3                   	ret
40a640:	c3                   	ret
40a641:	8b 45 08             	mov    0x8(%ebp),%eax
40a644:	8b 08                	mov    (%eax),%ecx
40a646:	50                   	push   %eax
40a647:	ff 51 08             	call   *0x8(%ecx)
40a64a:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a64d:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40a650:	5f                   	pop    %edi
40a651:	5e                   	pop    %esi
40a652:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40a659:	5b                   	pop    %ebx
40a65a:	8b e5                	mov    %ebp,%esp
40a65c:	5d                   	pop    %ebp
40a65d:	c2 2c 00             	ret    $0x2c
40a660:	55                   	push   %ebp
40a661:	8b ec                	mov    %esp,%ebp
40a663:	83 ec 08             	sub    $0x8,%esp
40a666:	68 b6 12 40 00       	push   $0x4012b6
40a66b:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40a671:	50                   	push   %eax
40a672:	64 89 25 00 00 00 00 	mov    %esp,%fs:0x0
40a679:	83 ec 34             	sub    $0x34,%esp
40a67c:	53                   	push   %ebx
40a67d:	56                   	push   %esi
40a67e:	57                   	push   %edi
40a67f:	89 65 f8             	mov    %esp,-0x8(%ebp)
40a682:	c7 45 fc e0 11 40 00 	movl   $0x4011e0,-0x4(%ebp)
40a689:	8b 55 0c             	mov    0xc(%ebp),%edx
40a68c:	8b 35 48 11 40 00    	mov    0x401148,%esi
40a692:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40a695:	c7 45 ec 00 00 00 00 	movl   $0x0,-0x14(%ebp)
40a69c:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
40a6a3:	c7 45 e4 00 00 00 00 	movl   $0x0,-0x1c(%ebp)
40a6aa:	c7 45 e0 00 00 00 00 	movl   $0x0,-0x20(%ebp)
40a6b1:	c7 45 d0 00 00 00 00 	movl   $0x0,-0x30(%ebp)
40a6b8:	ff d6                	call   *%esi
40a6ba:	8b 55 10             	mov    0x10(%ebp),%edx
40a6bd:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40a6c0:	ff d6                	call   *%esi
40a6c2:	68 78 77 40 00       	push   $0x407778
40a6c7:	ff 15 88 10 40 00    	call   *0x401088
40a6cd:	dd 05 d8 11 40 00    	fldl   0x4011d8
40a6d3:	52                   	push   %edx
40a6d4:	50                   	push   %eax
40a6d5:	ff 15 f4 10 40 00    	call   *0x4010f4
40a6db:	85 c0                	test   %eax,%eax
40a6dd:	0f 84 8c 00 00 00    	je     0x40a76f
40a6e3:	a1 38 03 41 00       	mov    0x410338,%eax
40a6e8:	85 c0                	test   %eax,%eax
40a6ea:	75 10                	jne    0x40a6fc
40a6ec:	68 38 03 41 00       	push   $0x410338
40a6f1:	68 a8 7c 40 00       	push   $0x407ca8
40a6f6:	ff 15 2c 11 40 00    	call   *0x40112c
40a6fc:	8b 35 38 03 41 00    	mov    0x410338,%esi
40a702:	8b 06                	mov    (%esi),%eax
40a704:	8d 4d e0             	lea    -0x20(%ebp),%ecx
40a707:	51                   	push   %ecx
40a708:	56                   	push   %esi
40a709:	ff 50 1c             	call   *0x1c(%eax)
40a70c:	db e2                	fnclex
40a70e:	85 c0                	test   %eax,%eax
40a710:	7d 0f                	jge    0x40a721
40a712:	6a 1c                	push   $0x1c
40a714:	68 98 7c 40 00       	push   $0x407c98
40a719:	56                   	push   %esi
40a71a:	50                   	push   %eax
40a71b:	ff 15 48 10 40 00    	call   *0x401048
40a721:	8b 45 e0             	mov    -0x20(%ebp),%eax
40a724:	8b 38                	mov    (%eax),%edi
40a726:	83 ec 10             	sub    $0x10,%esp
40a729:	8b dc                	mov    %esp,%ebx
40a72b:	ba 0a 00 00 00       	mov    $0xa,%edx
40a730:	89 13                	mov    %edx,(%ebx)
40a732:	8b 55 d4             	mov    -0x2c(%ebp),%edx
40a735:	89 53 04             	mov    %edx,0x4(%ebx)
40a738:	b9 04 00 02 80       	mov    $0x80020004,%ecx
40a73d:	89 4b 08             	mov    %ecx,0x8(%ebx)
40a740:	8b 4d dc             	mov    -0x24(%ebp),%ecx
40a743:	68 64 7c 40 00       	push   $0x407c64
40a748:	50                   	push   %eax
40a749:	8b f0                	mov    %eax,%esi
40a74b:	89 4b 0c             	mov    %ecx,0xc(%ebx)
40a74e:	ff 57 60             	call   *0x60(%edi)
40a751:	db e2                	fnclex
40a753:	85 c0                	test   %eax,%eax
40a755:	7d 0f                	jge    0x40a766
40a757:	6a 60                	push   $0x60
40a759:	68 b8 7c 40 00       	push   $0x407cb8
40a75e:	56                   	push   %esi
40a75f:	50                   	push   %eax
40a760:	ff 15 48 10 40 00    	call   *0x401048
40a766:	8d 4d e0             	lea    -0x20(%ebp),%ecx
40a769:	ff 15 ac 11 40 00    	call   *0x4011ac
40a76f:	68 78 77 40 00       	push   $0x407778
40a774:	ff 15 88 10 40 00    	call   *0x401088
40a77a:	dd 05 d8 11 40 00    	fldl   0x4011d8
40a780:	52                   	push   %edx
40a781:	50                   	push   %eax
40a782:	ff 15 f4 10 40 00    	call   *0x4010f4
40a788:	85 c0                	test   %eax,%eax
40a78a:	0f 84 8c 00 00 00    	je     0x40a81c
40a790:	a1 38 03 41 00       	mov    0x410338,%eax
40a795:	85 c0                	test   %eax,%eax
40a797:	75 10                	jne    0x40a7a9
40a799:	68 38 03 41 00       	push   $0x410338
40a79e:	68 a8 7c 40 00       	push   $0x407ca8
40a7a3:	ff 15 2c 11 40 00    	call   *0x40112c
40a7a9:	8b 35 38 03 41 00    	mov    0x410338,%esi
40a7af:	8b 16                	mov    (%esi),%edx
40a7b1:	8d 45 e0             	lea    -0x20(%ebp),%eax
40a7b4:	50                   	push   %eax
40a7b5:	56                   	push   %esi
40a7b6:	ff 52 1c             	call   *0x1c(%edx)
40a7b9:	db e2                	fnclex
40a7bb:	85 c0                	test   %eax,%eax
40a7bd:	7d 0f                	jge    0x40a7ce
40a7bf:	6a 1c                	push   $0x1c
40a7c1:	68 98 7c 40 00       	push   $0x407c98
40a7c6:	56                   	push   %esi
40a7c7:	50                   	push   %eax
40a7c8:	ff 15 48 10 40 00    	call   *0x401048
40a7ce:	8b 45 e0             	mov    -0x20(%ebp),%eax
40a7d1:	8b 38                	mov    (%eax),%edi
40a7d3:	83 ec 10             	sub    $0x10,%esp
40a7d6:	8b dc                	mov    %esp,%ebx
40a7d8:	ba 0a 00 00 00       	mov    $0xa,%edx
40a7dd:	89 13                	mov    %edx,(%ebx)
40a7df:	8b 55 d4             	mov    -0x2c(%ebp),%edx
40a7e2:	89 53 04             	mov    %edx,0x4(%ebx)
40a7e5:	b9 04 00 02 80       	mov    $0x80020004,%ecx
40a7ea:	89 4b 08             	mov    %ecx,0x8(%ebx)
40a7ed:	8b 4d dc             	mov    -0x24(%ebp),%ecx
40a7f0:	68 cc 7c 40 00       	push   $0x407ccc
40a7f5:	50                   	push   %eax
40a7f6:	8b f0                	mov    %eax,%esi
40a7f8:	89 4b 0c             	mov    %ecx,0xc(%ebx)
40a7fb:	ff 57 60             	call   *0x60(%edi)
40a7fe:	db e2                	fnclex
40a800:	85 c0                	test   %eax,%eax
40a802:	7d 0f                	jge    0x40a813
40a804:	6a 60                	push   $0x60
40a806:	68 b8 7c 40 00       	push   $0x407cb8
40a80b:	56                   	push   %esi
40a80c:	50                   	push   %eax
40a80d:	ff 15 48 10 40 00    	call   *0x401048
40a813:	8d 4d e0             	lea    -0x20(%ebp),%ecx
40a816:	ff 15 ac 11 40 00    	call   *0x4011ac
40a81c:	68 78 77 40 00       	push   $0x407778
40a821:	ff 15 88 10 40 00    	call   *0x401088
40a827:	dd 05 d8 11 40 00    	fldl   0x4011d8
40a82d:	52                   	push   %edx
40a82e:	50                   	push   %eax
40a82f:	ff 15 f4 10 40 00    	call   *0x4010f4
40a835:	85 c0                	test   %eax,%eax
40a837:	0f 84 8c 00 00 00    	je     0x40a8c9
40a83d:	a1 38 03 41 00       	mov    0x410338,%eax
40a842:	85 c0                	test   %eax,%eax
40a844:	75 10                	jne    0x40a856
40a846:	68 38 03 41 00       	push   $0x410338
40a84b:	68 a8 7c 40 00       	push   $0x407ca8
40a850:	ff 15 2c 11 40 00    	call   *0x40112c
40a856:	8b 35 38 03 41 00    	mov    0x410338,%esi
40a85c:	8b 16                	mov    (%esi),%edx
40a85e:	8d 45 e0             	lea    -0x20(%ebp),%eax
40a861:	50                   	push   %eax
40a862:	56                   	push   %esi
40a863:	ff 52 1c             	call   *0x1c(%edx)
40a866:	db e2                	fnclex
40a868:	85 c0                	test   %eax,%eax
40a86a:	7d 0f                	jge    0x40a87b
40a86c:	6a 1c                	push   $0x1c
40a86e:	68 98 7c 40 00       	push   $0x407c98
40a873:	56                   	push   %esi
40a874:	50                   	push   %eax
40a875:	ff 15 48 10 40 00    	call   *0x401048
40a87b:	8b 45 e0             	mov    -0x20(%ebp),%eax
40a87e:	8b 38                	mov    (%eax),%edi
40a880:	83 ec 10             	sub    $0x10,%esp
40a883:	8b dc                	mov    %esp,%ebx
40a885:	ba 0a 00 00 00       	mov    $0xa,%edx
40a88a:	89 13                	mov    %edx,(%ebx)
40a88c:	8b 55 d4             	mov    -0x2c(%ebp),%edx
40a88f:	89 53 04             	mov    %edx,0x4(%ebx)
40a892:	b9 04 00 02 80       	mov    $0x80020004,%ecx
40a897:	89 4b 08             	mov    %ecx,0x8(%ebx)
40a89a:	8b 4d dc             	mov    -0x24(%ebp),%ecx
40a89d:	68 f0 7c 40 00       	push   $0x407cf0
40a8a2:	50                   	push   %eax
40a8a3:	8b f0                	mov    %eax,%esi
40a8a5:	89 4b 0c             	mov    %ecx,0xc(%ebx)
40a8a8:	ff 57 60             	call   *0x60(%edi)
40a8ab:	db e2                	fnclex
40a8ad:	85 c0                	test   %eax,%eax
40a8af:	7d 0f                	jge    0x40a8c0
40a8b1:	6a 60                	push   $0x60
40a8b3:	68 b8 7c 40 00       	push   $0x407cb8
40a8b8:	56                   	push   %esi
40a8b9:	50                   	push   %eax
40a8ba:	ff 15 48 10 40 00    	call   *0x401048
40a8c0:	8d 4d e0             	lea    -0x20(%ebp),%ecx
40a8c3:	ff 15 ac 11 40 00    	call   *0x4011ac
40a8c9:	68 78 77 40 00       	push   $0x407778
40a8ce:	ff 15 88 10 40 00    	call   *0x401088
40a8d4:	dd 05 d8 11 40 00    	fldl   0x4011d8
40a8da:	52                   	push   %edx
40a8db:	50                   	push   %eax
40a8dc:	ff 15 f4 10 40 00    	call   *0x4010f4
40a8e2:	85 c0                	test   %eax,%eax
40a8e4:	0f 84 8c 00 00 00    	je     0x40a976
40a8ea:	a1 38 03 41 00       	mov    0x410338,%eax
40a8ef:	85 c0                	test   %eax,%eax
40a8f1:	75 10                	jne    0x40a903
40a8f3:	68 38 03 41 00       	push   $0x410338
40a8f8:	68 a8 7c 40 00       	push   $0x407ca8
40a8fd:	ff 15 2c 11 40 00    	call   *0x40112c
40a903:	8b 35 38 03 41 00    	mov    0x410338,%esi
40a909:	8b 16                	mov    (%esi),%edx
40a90b:	8d 45 e0             	lea    -0x20(%ebp),%eax
40a90e:	50                   	push   %eax
40a90f:	56                   	push   %esi
40a910:	ff 52 1c             	call   *0x1c(%edx)
40a913:	db e2                	fnclex
40a915:	85 c0                	test   %eax,%eax
40a917:	7d 0f                	jge    0x40a928
40a919:	6a 1c                	push   $0x1c
40a91b:	68 98 7c 40 00       	push   $0x407c98
40a920:	56                   	push   %esi
40a921:	50                   	push   %eax
40a922:	ff 15 48 10 40 00    	call   *0x401048
40a928:	8b 45 e0             	mov    -0x20(%ebp),%eax
40a92b:	8b 38                	mov    (%eax),%edi
40a92d:	83 ec 10             	sub    $0x10,%esp
40a930:	8b dc                	mov    %esp,%ebx
40a932:	ba 0a 00 00 00       	mov    $0xa,%edx
40a937:	89 13                	mov    %edx,(%ebx)
40a939:	8b 55 d4             	mov    -0x2c(%ebp),%edx
40a93c:	89 53 04             	mov    %edx,0x4(%ebx)
40a93f:	b9 04 00 02 80       	mov    $0x80020004,%ecx
40a944:	89 4b 08             	mov    %ecx,0x8(%ebx)
40a947:	8b 4d dc             	mov    -0x24(%ebp),%ecx
40a94a:	68 14 7d 40 00       	push   $0x407d14
40a94f:	50                   	push   %eax
40a950:	8b f0                	mov    %eax,%esi
40a952:	89 4b 0c             	mov    %ecx,0xc(%ebx)
40a955:	ff 57 60             	call   *0x60(%edi)
40a958:	db e2                	fnclex
40a95a:	85 c0                	test   %eax,%eax
40a95c:	7d 0f                	jge    0x40a96d
40a95e:	6a 60                	push   $0x60
40a960:	68 b8 7c 40 00       	push   $0x407cb8
40a965:	56                   	push   %esi
40a966:	50                   	push   %eax
40a967:	ff 15 48 10 40 00    	call   *0x401048
40a96d:	8d 4d e0             	lea    -0x20(%ebp),%ecx
40a970:	ff 15 ac 11 40 00    	call   *0x4011ac
40a976:	68 78 77 40 00       	push   $0x407778