40f4d5:	85 c0                	test   %eax,%eax
40f4d7:	75 0b                	jne    0x40f4e4
40f4d9:	ff 15 b0 70 41 00    	call   *0x4170b0
40f4df:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40f4e2:	eb 03                	jmp    0x40f4e7
40f4e4:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40f4e7:	39 5d e4             	cmp    %ebx,-0x1c(%ebp)
40f4ea:	74 19                	je     0x40f505
40f4ec:	e8 1c 9f ff ff       	call   0x40940d
40f4f1:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40f4f4:	89 08                	mov    %ecx,(%eax)
40f4f6:	e8 ff 9e ff ff       	call   0x4093fa
40f4fb:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40f501:	83 4d e4 ff          	orl    $0xffffffff,-0x1c(%ebp)
40f505:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40f50c:	e8 09 00 00 00       	call   0x40f51a
40f511:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40f514:	e8 74 e1 ff ff       	call   0x40d68d
40f519:	c3                   	ret
40f51a:	ff 75 08             	push   0x8(%ebp)
40f51d:	e8 70 59 00 00       	call   0x414e92
40f522:	59                   	pop    %ecx
40f523:	c3                   	ret
40f524:	56                   	push   %esi
40f525:	8b 74 24 08          	mov    0x8(%esp),%esi
40f529:	8b 46 0c             	mov    0xc(%esi),%eax
40f52c:	a8 83                	test   $0x83,%al
40f52e:	74 1e                	je     0x40f54e
40f530:	a8 08                	test   $0x8,%al
40f532:	74 1a                	je     0x40f54e
40f534:	ff 76 08             	push   0x8(%esi)
40f537:	e8 17 6f ff ff       	call   0x406453
40f53c:	81 66 0c f7 fb ff ff 	andl   $0xfffffbf7,0xc(%esi)
40f543:	33 c0                	xor    %eax,%eax
40f545:	59                   	pop    %ecx
40f546:	89 06                	mov    %eax,(%esi)
40f548:	89 46 08             	mov    %eax,0x8(%esi)
40f54b:	89 46 04             	mov    %eax,0x4(%esi)
40f54e:	5e                   	pop    %esi
40f54f:	c3                   	ret
40f550:	55                   	push   %ebp
40f551:	8b ec                	mov    %esp,%ebp
40f553:	83 ec 10             	sub    $0x10,%esp
40f556:	53                   	push   %ebx
40f557:	56                   	push   %esi
40f558:	57                   	push   %edi
40f559:	8b 7d 08             	mov    0x8(%ebp),%edi
40f55c:	57                   	push   %edi
40f55d:	e8 e4 f4 ff ff       	call   0x40ea46
40f562:	33 db                	xor    %ebx,%ebx
40f564:	39 5f 04             	cmp    %ebx,0x4(%edi)
40f567:	59                   	pop    %ecx
40f568:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f56b:	7d 03                	jge    0x40f570
40f56d:	89 5f 04             	mov    %ebx,0x4(%edi)
40f570:	6a 01                	push   $0x1
40f572:	53                   	push   %ebx
40f573:	53                   	push   %ebx
40f574:	50                   	push   %eax
40f575:	e8 fb 47 00 00       	call   0x413d75
40f57a:	8b f2                	mov    %edx,%esi
40f57c:	83 c4 10             	add    $0x10,%esp
40f57f:	3b f3                	cmp    %ebx,%esi
40f581:	8b c8                	mov    %eax,%ecx
40f583:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40f586:	89 75 f4             	mov    %esi,-0xc(%ebp)
40f589:	7f 11                	jg     0x40f59c
40f58b:	7c 04                	jl     0x40f591
40f58d:	3b cb                	cmp    %ebx,%ecx
40f58f:	73 0b                	jae    0x40f59c
40f591:	83 c8 ff             	or     $0xffffffff,%eax
40f594:	83 ca ff             	or     $0xffffffff,%edx
40f597:	e9 63 01 00 00       	jmp    0x40f6ff
40f59c:	8b 57 0c             	mov    0xc(%edi),%edx
40f59f:	66 f7 c2 08 01       	test   $0x108,%dx
40f5a4:	75 11                	jne    0x40f5b7
40f5a6:	8b 47 04             	mov    0x4(%edi),%eax
40f5a9:	99                   	cltd
40f5aa:	2b c8                	sub    %eax,%ecx
40f5ac:	1b f2                	sbb    %edx,%esi
40f5ae:	8b c1                	mov    %ecx,%eax
40f5b0:	8b d6                	mov    %esi,%edx
40f5b2:	e9 48 01 00 00       	jmp    0x40f6ff
40f5b7:	8b 07                	mov    (%edi),%eax
40f5b9:	8b 4f 08             	mov    0x8(%edi),%ecx
40f5bc:	8b d8                	mov    %eax,%ebx
40f5be:	2b d9                	sub    %ecx,%ebx
40f5c0:	f6 c2 03             	test   $0x3,%dl
40f5c3:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40f5c6:	74 3f                	je     0x40f607
40f5c8:	8b 5d fc             	mov    -0x4(%ebp),%ebx
40f5cb:	8b 55 fc             	mov    -0x4(%ebp),%edx
40f5ce:	83 e3 1f             	and    $0x1f,%ebx
40f5d1:	6b db 28             	imul   $0x28,%ebx,%ebx
40f5d4:	c1 fa 05             	sar    $0x5,%edx
40f5d7:	8b 14 95 c0 e4 41 00 	mov    0x41e4c0(,%edx,4),%edx
40f5de:	f6 44 1a 04 80       	testb  $0x80,0x4(%edx,%ebx,1)
40f5e3:	74 11                	je     0x40f5f6
40f5e5:	8b d1                	mov    %ecx,%edx
40f5e7:	eb 09                	jmp    0x40f5f2
40f5e9:	80 3a 0a             	cmpb   $0xa,(%edx)
40f5ec:	75 03                	jne    0x40f5f1
40f5ee:	ff 45 f8             	incl   -0x8(%ebp)
40f5f1:	42                   	inc    %edx
40f5f2:	3b d0                	cmp    %eax,%edx
40f5f4:	72 f3                	jb     0x40f5e9
40f5f6:	8b 55 f0             	mov    -0x10(%ebp),%edx
40f5f9:	0b d6                	or     %esi,%edx
40f5fb:	75 1e                	jne    0x40f61b
40f5fd:	8b 45 f8             	mov    -0x8(%ebp),%eax
40f600:	33 d2                	xor    %edx,%edx
40f602:	e9 f8 00 00 00       	jmp    0x40f6ff
40f607:	84 d2                	test   %dl,%dl
40f609:	78 eb                	js     0x40f5f6
40f60b:	e8 ea 9d ff ff       	call   0x4093fa
40f610:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40f616:	e9 76 ff ff ff       	jmp    0x40f591
40f61b:	f6 47 0c 01          	testb  $0x1,0xc(%edi)
40f61f:	0f 84 d0 00 00 00    	je     0x40f6f5
40f625:	8b 57 04             	mov    0x4(%edi),%edx
40f628:	85 d2                	test   %edx,%edx
40f62a:	75 08                	jne    0x40f634
40f62c:	21 55 f8             	and    %edx,-0x8(%ebp)
40f62f:	e9 c1 00 00 00       	jmp    0x40f6f5
40f634:	8b 75 fc             	mov    -0x4(%ebp),%esi
40f637:	8b 5d fc             	mov    -0x4(%ebp),%ebx
40f63a:	83 e6 1f             	and    $0x1f,%esi
40f63d:	6b f6 28             	imul   $0x28,%esi,%esi
40f640:	2b c1                	sub    %ecx,%eax
40f642:	03 c2                	add    %edx,%eax
40f644:	c1 fb 05             	sar    $0x5,%ebx
40f647:	8d 1c 9d c0 e4 41 00 	lea    0x41e4c0(,%ebx,4),%ebx
40f64e:	89 45 08             	mov    %eax,0x8(%ebp)
40f651:	8b 03                	mov    (%ebx),%eax
40f653:	f6 44 30 04 80       	testb  $0x80,0x4(%eax,%esi,1)
40f658:	0f 84 8a 00 00 00    	je     0x40f6e8
40f65e:	6a 02                	push   $0x2
40f660:	6a 00                	push   $0x0
40f662:	6a 00                	push   $0x0
40f664:	ff 75 fc             	push   -0x4(%ebp)
40f667:	e8 09 47 00 00       	call   0x413d75
40f66c:	83 c4 10             	add    $0x10,%esp
40f66f:	3b 45 f0             	cmp    -0x10(%ebp),%eax
40f672:	75 24                	jne    0x40f698
40f674:	3b 55 f4             	cmp    -0xc(%ebp),%edx
40f677:	75 1f                	jne    0x40f698
40f679:	8b 47 08             	mov    0x8(%edi),%eax
40f67c:	8b 4d 08             	mov    0x8(%ebp),%ecx
40f67f:	03 c8                	add    %eax,%ecx
40f681:	eb 09                	jmp    0x40f68c
40f683:	80 38 0a             	cmpb   $0xa,(%eax)
40f686:	75 03                	jne    0x40f68b
40f688:	ff 45 08             	incl   0x8(%ebp)
40f68b:	40                   	inc    %eax
40f68c:	3b c1                	cmp    %ecx,%eax
40f68e:	72 f3                	jb     0x40f683
40f690:	66 f7 47 0c 00 20    	testw  $0x2000,0xc(%edi)
40f696:	eb 4b                	jmp    0x40f6e3
40f698:	6a 00                	push   $0x0
40f69a:	ff 75 f4             	push   -0xc(%ebp)
40f69d:	ff 75 f0             	push   -0x10(%ebp)
40f6a0:	ff 75 fc             	push   -0x4(%ebp)
40f6a3:	e8 cd 46 00 00       	call   0x413d75
40f6a8:	83 c4 10             	add    $0x10,%esp
40f6ab:	85 d2                	test   %edx,%edx
40f6ad:	7f 0e                	jg     0x40f6bd
40f6af:	0f 8c dc fe ff ff    	jl     0x40f591
40f6b5:	85 c0                	test   %eax,%eax
40f6b7:	0f 82 d4 fe ff ff    	jb     0x40f591
40f6bd:	b8 00 02 00 00       	mov    $0x200,%eax
40f6c2:	39 45 08             	cmp    %eax,0x8(%ebp)
40f6c5:	77 0f                	ja     0x40f6d6
40f6c7:	8b 4f 0c             	mov    0xc(%edi),%ecx
40f6ca:	f6 c1 08             	test   $0x8,%cl
40f6cd:	74 07                	je     0x40f6d6
40f6cf:	66 f7 c1 00 04       	test   $0x400,%cx
40f6d4:	74 03                	je     0x40f6d9
40f6d6:	8b 47 18             	mov    0x18(%edi),%eax
40f6d9:	89 45 08             	mov    %eax,0x8(%ebp)
40f6dc:	8b 03                	mov    (%ebx),%eax
40f6de:	f6 44 30 04 04       	testb  $0x4,0x4(%eax,%esi,1)
40f6e3:	74 03                	je     0x40f6e8
40f6e5:	ff 45 08             	incl   0x8(%ebp)
40f6e8:	8b 45 08             	mov    0x8(%ebp),%eax
40f6eb:	29 45 f0             	sub    %eax,-0x10(%ebp)
40f6ee:	83 5d f4 00          	sbbl   $0x0,-0xc(%ebp)
40f6f2:	8b 75 f4             	mov    -0xc(%ebp),%esi
40f6f5:	8b 45 f8             	mov    -0x8(%ebp),%eax
40f6f8:	33 d2                	xor    %edx,%edx
40f6fa:	03 45 f0             	add    -0x10(%ebp),%eax
40f6fd:	13 d6                	adc    %esi,%edx
40f6ff:	5f                   	pop    %edi
40f700:	5e                   	pop    %esi
40f701:	5b                   	pop    %ebx
40f702:	c9                   	leave
40f703:	c3                   	ret
40f704:	6a 10                	push   $0x10
40f706:	68 38 ad 41 00       	push   $0x41ad38
40f70b:	e8 38 df ff ff       	call   0x40d648
40f710:	ff 75 08             	push   0x8(%ebp)
40f713:	e8 ed 91 ff ff       	call   0x408905
40f718:	59                   	pop    %ecx
40f719:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40f71d:	ff 75 08             	push   0x8(%ebp)
40f720:	e8 2b fe ff ff       	call   0x40f550
40f725:	59                   	pop    %ecx
40f726:	89 45 e0             	mov    %eax,-0x20(%ebp)
40f729:	89 55 e4             	mov    %edx,-0x1c(%ebp)
40f72c:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40f733:	e8 0c 00 00 00       	call   0x40f744
40f738:	8b 45 e0             	mov    -0x20(%ebp),%eax
40f73b:	8b 55 e4             	mov    -0x1c(%ebp),%edx
40f73e:	e8 4a df ff ff       	call   0x40d68d
40f743:	c3                   	ret
40f744:	ff 75 08             	push   0x8(%ebp)
40f747:	e8 0b 92 ff ff       	call   0x408957
40f74c:	59                   	pop    %ecx
40f74d:	c3                   	ret
40f74e:	56                   	push   %esi
40f74f:	8b 74 24 08          	mov    0x8(%esp),%esi
40f753:	56                   	push   %esi
40f754:	e8 28 56 00 00       	call   0x414d81
40f759:	83 f8 ff             	cmp    $0xffffffff,%eax
40f75c:	59                   	pop    %ecx
40f75d:	75 10                	jne    0x40f76f
40f75f:	e8 96 9c ff ff       	call   0x4093fa
40f764:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40f76a:	83 c8 ff             	or     $0xffffffff,%eax
40f76d:	5e                   	pop    %esi
40f76e:	c3                   	ret
40f76f:	57                   	push   %edi
40f770:	ff 74 24 14          	push   0x14(%esp)
40f774:	6a 00                	push   $0x0
40f776:	ff 74 24 18          	push   0x18(%esp)
40f77a:	50                   	push   %eax
40f77b:	ff 15 58 71 41 00    	call   *0x417158
40f781:	8b f8                	mov    %eax,%edi
40f783:	83 ff ff             	cmp    $0xffffffff,%edi
40f786:	75 08                	jne    0x40f790
40f788:	ff 15 b0 70 41 00    	call   *0x4170b0
40f78e:	eb 02                	jmp    0x40f792
40f790:	33 c0                	xor    %eax,%eax
40f792:	85 c0                	test   %eax,%eax
40f794:	74 0c                	je     0x40f7a2
40f796:	50                   	push   %eax
40f797:	e8 84 9c ff ff       	call   0x409420
40f79c:	59                   	pop    %ecx
40f79d:	83 c8 ff             	or     $0xffffffff,%eax
40f7a0:	eb 1b                	jmp    0x40f7bd
40f7a2:	8b c6                	mov    %esi,%eax
40f7a4:	83 e6 1f             	and    $0x1f,%esi
40f7a7:	6b f6 28             	imul   $0x28,%esi,%esi
40f7aa:	c1 f8 05             	sar    $0x5,%eax
40f7ad:	8b 04 85 c0 e4 41 00 	mov    0x41e4c0(,%eax,4),%eax
40f7b4:	8d 44 30 04          	lea    0x4(%eax,%esi,1),%eax
40f7b8:	80 20 fd             	andb   $0xfd,(%eax)
40f7bb:	8b c7                	mov    %edi,%eax
40f7bd:	5f                   	pop    %edi
40f7be:	5e                   	pop    %esi
40f7bf:	c3                   	ret
40f7c0:	6a 10                	push   $0x10
40f7c2:	68 58 ad 41 00       	push   $0x41ad58
40f7c7:	e8 7c de ff ff       	call   0x40d648
40f7cc:	8b 45 08             	mov    0x8(%ebp),%eax
40f7cf:	83 f8 fe             	cmp    $0xfffffffe,%eax
40f7d2:	75 1b                	jne    0x40f7ef
40f7d4:	e8 34 9c ff ff       	call   0x40940d
40f7d9:	83 20 00             	andl   $0x0,(%eax)
40f7dc:	e8 19 9c ff ff       	call   0x4093fa
40f7e1:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40f7e7:	83 c8 ff             	or     $0xffffffff,%eax
40f7ea:	e9 9d 00 00 00       	jmp    0x40f88c
40f7ef:	33 ff                	xor    %edi,%edi
40f7f1:	3b c7                	cmp    %edi,%eax
40f7f3:	7c 08                	jl     0x40f7fd
40f7f5:	3b 05 b4 e4 41 00    	cmp    0x41e4b4,%eax
40f7fb:	72 21                	jb     0x40f81e
40f7fd:	e8 0b 9c ff ff       	call   0x40940d
40f802:	89 38                	mov    %edi,(%eax)
40f804:	e8 f1 9b ff ff       	call   0x4093fa
40f809:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40f80f:	57                   	push   %edi
40f810:	57                   	push   %edi
40f811:	57                   	push   %edi
40f812:	57                   	push   %edi
40f813:	57                   	push   %edi
40f814:	e8 37 7e ff ff       	call   0x407650
40f819:	83 c4 14             	add    $0x14,%esp
40f81c:	eb c9                	jmp    0x40f7e7
40f81e:	8b c8                	mov    %eax,%ecx
40f820:	c1 f9 05             	sar    $0x5,%ecx
40f823:	8d 1c 8d c0 e4 41 00 	lea    0x41e4c0(,%ecx,4),%ebx
40f82a:	8b f0                	mov    %eax,%esi
40f82c:	83 e6 1f             	and    $0x1f,%esi
40f82f:	6b f6 28             	imul   $0x28,%esi,%esi
40f832:	8b 0b                	mov    (%ebx),%ecx
40f834:	0f b6 4c 31 04       	movzbl 0x4(%ecx,%esi,1),%ecx
40f839:	83 e1 01             	and    $0x1,%ecx
40f83c:	74 bf                	je     0x40f7fd
40f83e:	50                   	push   %eax
40f83f:	e8 ae 55 00 00       	call   0x414df2
40f844:	59                   	pop    %ecx
40f845:	89 7d fc             	mov    %edi,-0x4(%ebp)
40f848:	8b 03                	mov    (%ebx),%eax
40f84a:	f6 44 30 04 01       	testb  $0x1,0x4(%eax,%esi,1)
40f84f:	74 16                	je     0x40f867
40f851:	ff 75 10             	push   0x10(%ebp)
40f854:	ff 75 0c             	push   0xc(%ebp)
40f857:	ff 75 08             	push   0x8(%ebp)
40f85a:	e8 ef fe ff ff       	call   0x40f74e
40f85f:	83 c4 0c             	add    $0xc,%esp
40f862:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40f865:	eb 16                	jmp    0x40f87d
40f867:	e8 8e 9b ff ff       	call   0x4093fa
40f86c:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40f872:	e8 96 9b ff ff       	call   0x40940d
40f877:	89 38                	mov    %edi,(%eax)
40f879:	83 4d e4 ff          	orl    $0xffffffff,-0x1c(%ebp)
40f87d:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40f884:	e8 09 00 00 00       	call   0x40f892
40f889:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40f88c:	e8 fc dd ff ff       	call   0x40d68d
40f891:	c3                   	ret
40f892:	ff 75 08             	push   0x8(%ebp)
40f895:	e8 f8 55 00 00       	call   0x414e92
40f89a:	59                   	pop    %ecx
40f89b:	c3                   	ret
40f89c:	55                   	push   %ebp
40f89d:	8b ec                	mov    %esp,%ebp
40f89f:	83 ec 0c             	sub    $0xc,%esp
40f8a2:	53                   	push   %ebx
40f8a3:	57                   	push   %edi
40f8a4:	8b 7d 08             	mov    0x8(%ebp),%edi
40f8a7:	33 db                	xor    %ebx,%ebx
40f8a9:	3b fb                	cmp    %ebx,%edi
40f8ab:	75 20                	jne    0x40f8cd
40f8ad:	e8 48 9b ff ff       	call   0x4093fa
40f8b2:	53                   	push   %ebx
40f8b3:	53                   	push   %ebx
40f8b4:	53                   	push   %ebx
40f8b5:	53                   	push   %ebx
40f8b6:	53                   	push   %ebx
40f8b7:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40f8bd:	e8 8e 7d ff ff       	call   0x407650
40f8c2:	83 c4 14             	add    $0x14,%esp
40f8c5:	83 c8 ff             	or     $0xffffffff,%eax
40f8c8:	e9 63 01 00 00       	jmp    0x40fa30
40f8cd:	57                   	push   %edi
40f8ce:	e8 73 f1 ff ff       	call   0x40ea46
40f8d3:	39 5f 04             	cmp    %ebx,0x4(%edi)