40c530:	74 60                	je     0x40c592
40c532:	f6 46 28 01          	testb  $0x1,0x28(%esi)
40c536:	75 1a                	jne    0x40c552
40c538:	56                   	push   %esi
40c539:	ff 15 2c b0 41 00    	call   *0x41b02c
40c53f:	f6 46 28 01          	testb  $0x1,0x28(%esi)
40c543:	74 11                	je     0x40c556
40c545:	56                   	push   %esi
40c546:	ff 15 34 b0 41 00    	call   *0x41b034
40c54c:	8b 4d e0             	mov    -0x20(%ebp),%ecx
40c54f:	6a 30                	push   $0x30
40c551:	58                   	pop    %eax
40c552:	03 f0                	add    %eax,%esi
40c554:	eb d5                	jmp    0x40c52b
40c556:	2b 75 d8             	sub    -0x28(%ebp),%esi
40c559:	8b c6                	mov    %esi,%eax
40c55b:	99                   	cltd
40c55c:	6a 30                	push   $0x30
40c55e:	59                   	pop    %ecx
40c55f:	f7 f9                	idiv   %ecx
40c561:	c1 e3 06             	shl    $0x6,%ebx
40c564:	8d 34 03             	lea    (%ebx,%eax,1),%esi
40c567:	8b d6                	mov    %esi,%edx
40c569:	c1 fa 06             	sar    $0x6,%edx
40c56c:	8b ce                	mov    %esi,%ecx
40c56e:	83 e1 3f             	and    $0x3f,%ecx
40c571:	6b c9 30             	imul   $0x30,%ecx,%ecx
40c574:	8b 04 95 c0 41 42 00 	mov    0x4241c0(,%edx,4),%eax
40c57b:	c6 44 01 28 01       	movb   $0x1,0x28(%ecx,%eax,1)
40c580:	8b 04 95 c0 41 42 00 	mov    0x4241c0(,%edx,4),%eax
40c587:	89 7c 01 18          	mov    %edi,0x18(%ecx,%eax,1)
40c58b:	8b fe                	mov    %esi,%edi
40c58d:	e9 74 ff ff ff       	jmp    0x40c506
40c592:	43                   	inc    %ebx
40c593:	e9 19 ff ff ff       	jmp    0x40c4b1
40c598:	8b 7d e4             	mov    -0x1c(%ebp),%edi
40c59b:	6a 07                	push   $0x7
40c59d:	e8 4b 29 00 00       	call   0x40eeed
40c5a2:	59                   	pop    %ecx
40c5a3:	c3                   	ret
40c5a4:	8b ff                	mov    %edi,%edi
40c5a6:	55                   	push   %ebp
40c5a7:	8b ec                	mov    %esp,%ebp
40c5a9:	53                   	push   %ebx
40c5aa:	56                   	push   %esi
40c5ab:	8b 75 08             	mov    0x8(%ebp),%esi
40c5ae:	57                   	push   %edi
40c5af:	85 f6                	test   %esi,%esi
40c5b1:	78 67                	js     0x40c61a
40c5b3:	3b 35 c0 43 42 00    	cmp    0x4243c0,%esi
40c5b9:	73 5f                	jae    0x40c61a
40c5bb:	8b c6                	mov    %esi,%eax
40c5bd:	8b fe                	mov    %esi,%edi
40c5bf:	83 e0 3f             	and    $0x3f,%eax
40c5c2:	c1 ff 06             	sar    $0x6,%edi
40c5c5:	6b d8 30             	imul   $0x30,%eax,%ebx
40c5c8:	8b 04 bd c0 41 42 00 	mov    0x4241c0(,%edi,4),%eax
40c5cf:	f6 44 03 28 01       	testb  $0x1,0x28(%ebx,%eax,1)
40c5d4:	74 44                	je     0x40c61a
40c5d6:	83 7c 03 18 ff       	cmpl   $0xffffffff,0x18(%ebx,%eax,1)
40c5db:	74 3d                	je     0x40c61a
40c5dd:	e8 d9 cc ff ff       	call   0x4092bb
40c5e2:	83 f8 01             	cmp    $0x1,%eax
40c5e5:	75 23                	jne    0x40c60a
40c5e7:	33 c0                	xor    %eax,%eax
40c5e9:	2b f0                	sub    %eax,%esi
40c5eb:	74 14                	je     0x40c601
40c5ed:	83 ee 01             	sub    $0x1,%esi
40c5f0:	74 0a                	je     0x40c5fc
40c5f2:	83 ee 01             	sub    $0x1,%esi
40c5f5:	75 13                	jne    0x40c60a
40c5f7:	50                   	push   %eax
40c5f8:	6a f4                	push   $0xfffffff4
40c5fa:	eb 08                	jmp    0x40c604
40c5fc:	50                   	push   %eax
40c5fd:	6a f5                	push   $0xfffffff5
40c5ff:	eb 03                	jmp    0x40c604
40c601:	50                   	push   %eax
40c602:	6a f6                	push   $0xfffffff6
40c604:	ff 15 58 b1 41 00    	call   *0x41b158
40c60a:	8b 04 bd c0 41 42 00 	mov    0x4241c0(,%edi,4),%eax
40c611:	83 4c 03 18 ff       	orl    $0xffffffff,0x18(%ebx,%eax,1)
40c616:	33 c0                	xor    %eax,%eax
40c618:	eb 16                	jmp    0x40c630
40c61a:	e8 e8 b6 ff ff       	call   0x407d07
40c61f:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40c625:	e8 ca b6 ff ff       	call   0x407cf4
40c62a:	83 20 00             	andl   $0x0,(%eax)
40c62d:	83 c8 ff             	or     $0xffffffff,%eax
40c630:	5f                   	pop    %edi
40c631:	5e                   	pop    %esi
40c632:	5b                   	pop    %ebx
40c633:	5d                   	pop    %ebp
40c634:	c3                   	ret
40c635:	8b ff                	mov    %edi,%edi
40c637:	55                   	push   %ebp
40c638:	8b ec                	mov    %esp,%ebp
40c63a:	8b 4d 08             	mov    0x8(%ebp),%ecx
40c63d:	83 f9 fe             	cmp    $0xfffffffe,%ecx
40c640:	75 15                	jne    0x40c657
40c642:	e8 ad b6 ff ff       	call   0x407cf4
40c647:	83 20 00             	andl   $0x0,(%eax)
40c64a:	e8 b8 b6 ff ff       	call   0x407d07
40c64f:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40c655:	eb 43                	jmp    0x40c69a
40c657:	85 c9                	test   %ecx,%ecx
40c659:	78 27                	js     0x40c682
40c65b:	3b 0d c0 43 42 00    	cmp    0x4243c0,%ecx
40c661:	73 1f                	jae    0x40c682
40c663:	8b c1                	mov    %ecx,%eax
40c665:	83 e1 3f             	and    $0x3f,%ecx
40c668:	c1 f8 06             	sar    $0x6,%eax
40c66b:	6b c9 30             	imul   $0x30,%ecx,%ecx
40c66e:	8b 04 85 c0 41 42 00 	mov    0x4241c0(,%eax,4),%eax
40c675:	f6 44 08 28 01       	testb  $0x1,0x28(%eax,%ecx,1)
40c67a:	74 06                	je     0x40c682
40c67c:	8b 44 08 18          	mov    0x18(%eax,%ecx,1),%eax
40c680:	5d                   	pop    %ebp
40c681:	c3                   	ret
40c682:	e8 6d b6 ff ff       	call   0x407cf4
40c687:	83 20 00             	andl   $0x0,(%eax)
40c68a:	e8 78 b6 ff ff       	call   0x407d07
40c68f:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
40c695:	e8 94 b5 ff ff       	call   0x407c2e
40c69a:	83 c8 ff             	or     $0xffffffff,%eax
40c69d:	5d                   	pop    %ebp
40c69e:	c3                   	ret
40c69f:	8b ff                	mov    %edi,%edi
40c6a1:	55                   	push   %ebp
40c6a2:	8b ec                	mov    %esp,%ebp
40c6a4:	8b 45 08             	mov    0x8(%ebp),%eax
40c6a7:	56                   	push   %esi
40c6a8:	be 90 01 00 00       	mov    $0x190,%esi
40c6ad:	57                   	push   %edi
40c6ae:	8d 48 ff             	lea    -0x1(%eax),%ecx
40c6b1:	05 2b 01 00 00       	add    $0x12b,%eax
40c6b6:	99                   	cltd
40c6b7:	f7 fe                	idiv   %esi
40c6b9:	6a 64                	push   $0x64
40c6bb:	8b f0                	mov    %eax,%esi
40c6bd:	8b c1                	mov    %ecx,%eax
40c6bf:	99                   	cltd
40c6c0:	5f                   	pop    %edi
40c6c1:	f7 ff                	idiv   %edi
40c6c3:	5f                   	pop    %edi
40c6c4:	2b f0                	sub    %eax,%esi
40c6c6:	8b c1                	mov    %ecx,%eax
40c6c8:	99                   	cltd
40c6c9:	83 e2 03             	and    $0x3,%edx
40c6cc:	03 c2                	add    %edx,%eax
40c6ce:	c1 f8 02             	sar    $0x2,%eax
40c6d1:	83 c0 ef             	add    $0xffffffef,%eax
40c6d4:	03 c6                	add    %esi,%eax
40c6d6:	5e                   	pop    %esi
40c6d7:	5d                   	pop    %ebp
40c6d8:	c3                   	ret
40c6d9:	8b ff                	mov    %edi,%edi
40c6db:	55                   	push   %ebp
40c6dc:	8b ec                	mov    %esp,%ebp
40c6de:	8b 4d 08             	mov    0x8(%ebp),%ecx
40c6e1:	8b c1                	mov    %ecx,%eax
40c6e3:	25 03 00 00 80       	and    $0x80000003,%eax
40c6e8:	79 05                	jns    0x40c6ef
40c6ea:	48                   	dec    %eax
40c6eb:	83 c8 fc             	or     $0xfffffffc,%eax
40c6ee:	40                   	inc    %eax
40c6ef:	75 12                	jne    0x40c703
40c6f1:	56                   	push   %esi
40c6f2:	6a 64                	push   $0x64
40c6f4:	8b c1                	mov    %ecx,%eax
40c6f6:	5e                   	pop    %esi
40c6f7:	99                   	cltd
40c6f8:	f7 fe                	idiv   %esi
40c6fa:	5e                   	pop    %esi
40c6fb:	85 d2                	test   %edx,%edx
40c6fd:	74 04                	je     0x40c703
40c6ff:	b0 01                	mov    $0x1,%al
40c701:	5d                   	pop    %ebp
40c702:	c3                   	ret
40c703:	8d 81 6c 07 00 00    	lea    0x76c(%ecx),%eax
40c709:	b9 90 01 00 00       	mov    $0x190,%ecx
40c70e:	99                   	cltd
40c70f:	f7 f9                	idiv   %ecx
40c711:	f7 da                	neg    %edx
40c713:	1a d2                	sbb    %dl,%dl
40c715:	8d 42 01             	lea    0x1(%edx),%eax
40c718:	5d                   	pop    %ebp
40c719:	c3                   	ret
40c71a:	8b ff                	mov    %edi,%edi
40c71c:	55                   	push   %ebp
40c71d:	8b ec                	mov    %esp,%ebp
40c71f:	83 ec 48             	sub    $0x48,%esp
40c722:	a1 0c 30 42 00       	mov    0x42300c,%eax
40c727:	33 c5                	xor    %ebp,%eax
40c729:	89 45 fc             	mov    %eax,-0x4(%ebp)
40c72c:	53                   	push   %ebx
40c72d:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40c730:	56                   	push   %esi
40c731:	8b 75 08             	mov    0x8(%ebp),%esi
40c734:	81 ee 6c 07 00 00    	sub    $0x76c,%esi
40c73a:	57                   	push   %edi
40c73b:	83 fe 46             	cmp    $0x46,%esi
40c73e:	0f 8c 8c 01 00 00    	jl     0x40c8d0
40c744:	8b c6                	mov    %esi,%eax
40c746:	99                   	cltd
40c747:	85 d2                	test   %edx,%edx
40c749:	0f 87 81 01 00 00    	ja     0x40c8d0
40c74f:	72 0b                	jb     0x40c75c
40c751:	3d 4c 04 00 00       	cmp    $0x44c,%eax
40c756:	0f 87 74 01 00 00    	ja     0x40c8d0
40c75c:	8d 43 ff             	lea    -0x1(%ebx),%eax
40c75f:	83 f8 0b             	cmp    $0xb,%eax
40c762:	0f 87 68 01 00 00    	ja     0x40c8d0
40c768:	ff 75 10             	push   0x10(%ebp)
40c76b:	8d 43 ff             	lea    -0x1(%ebx),%eax
40c76e:	50                   	push   %eax
40c76f:	56                   	push   %esi
40c770:	89 45 b8             	mov    %eax,-0x48(%ebp)
40c773:	e8 84 01 00 00       	call   0x40c8fc
40c778:	83 c4 0c             	add    $0xc,%esp
40c77b:	84 c0                	test   %al,%al
40c77d:	0f 84 4d 01 00 00    	je     0x40c8d0
40c783:	83 7d 14 17          	cmpl   $0x17,0x14(%ebp)
40c787:	0f 87 43 01 00 00    	ja     0x40c8d0
40c78d:	83 7d 18 3b          	cmpl   $0x3b,0x18(%ebp)
40c791:	0f 87 39 01 00 00    	ja     0x40c8d0
40c797:	83 7d 1c 3b          	cmpl   $0x3b,0x1c(%ebp)
40c79b:	0f 87 2f 01 00 00    	ja     0x40c8d0
40c7a1:	8b 3c 9d 44 fd 41 00 	mov    0x41fd44(,%ebx,4),%edi
40c7a8:	03 7d 10             	add    0x10(%ebp),%edi
40c7ab:	56                   	push   %esi
40c7ac:	e8 28 ff ff ff       	call   0x40c6d9
40c7b1:	59                   	pop    %ecx
40c7b2:	84 c0                	test   %al,%al
40c7b4:	74 06                	je     0x40c7bc
40c7b6:	83 fb 02             	cmp    $0x2,%ebx
40c7b9:	7e 01                	jle    0x40c7bc
40c7bb:	47                   	inc    %edi
40c7bc:	e8 a3 0b 00 00       	call   0x40d364
40c7c1:	33 db                	xor    %ebx,%ebx
40c7c3:	8d 45 cc             	lea    -0x34(%ebp),%eax
40c7c6:	50                   	push   %eax
40c7c7:	89 5d cc             	mov    %ebx,-0x34(%ebp)
40c7ca:	89 5d c8             	mov    %ebx,-0x38(%ebp)
40c7cd:	89 5d c4             	mov    %ebx,-0x3c(%ebp)
40c7d0:	e8 c8 01 00 00       	call   0x40c99d
40c7d5:	59                   	pop    %ecx
40c7d6:	85 c0                	test   %eax,%eax
40c7d8:	0f 85 13 01 00 00    	jne    0x40c8f1
40c7de:	8d 45 c8             	lea    -0x38(%ebp),%eax
40c7e1:	50                   	push   %eax
40c7e2:	e8 e2 01 00 00       	call   0x40c9c9
40c7e7:	59                   	pop    %ecx
40c7e8:	85 c0                	test   %eax,%eax
40c7ea:	0f 85 01 01 00 00    	jne    0x40c8f1
40c7f0:	8d 45 c4             	lea    -0x3c(%ebp),%eax
40c7f3:	50                   	push   %eax
40c7f4:	e8 fc 01 00 00       	call   0x40c9f5
40c7f9:	59                   	pop    %ecx
40c7fa:	85 c0                	test   %eax,%eax
40c7fc:	0f 85 ef 00 00 00    	jne    0x40c8f1
40c802:	56                   	push   %esi
40c803:	e8 97 fe ff ff       	call   0x40c69f
40c808:	59                   	pop    %ecx
40c809:	b9 80 51 01 00       	mov    $0x15180,%ecx
40c80e:	f7 e9                	imul   %ecx
40c810:	6a 3c                	push   $0x3c
40c812:	8b d8                	mov    %eax,%ebx
40c814:	8b ca                	mov    %edx,%ecx
40c816:	8b c7                	mov    %edi,%eax
40c818:	ba 80 51 01 00       	mov    $0x15180,%edx
40c81d:	f7 ea                	imul   %edx
40c81f:	03 d8                	add    %eax,%ebx
40c821:	8b c6                	mov    %esi,%eax
40c823:	13 ca                	adc    %edx,%ecx
40c825:	ba 80 33 e1 01       	mov    $0x1e13380,%edx
40c82a:	f7 ea                	imul   %edx
40c82c:	03 d8                	add    %eax,%ebx
40c82e:	13 ca                	adc    %edx,%ecx
40c830:	ba 10 0e 00 00       	mov    $0xe10,%edx
40c835:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
40c838:	8b 4d 14             	mov    0x14(%ebp),%ecx
40c83b:	8b c1                	mov    %ecx,%eax
40c83d:	f7 ea                	imul   %edx
40c83f:	03 d8                	add    %eax,%ebx
40c841:	89 5d d0             	mov    %ebx,-0x30(%ebp)
40c844:	11 55 d4             	adc    %edx,-0x2c(%ebp)
40c847:	8b 5d 18             	mov    0x18(%ebp),%ebx
40c84a:	8b c3                	mov    %ebx,%eax
40c84c:	5a                   	pop    %edx
40c84d:	f7 ea                	imul   %edx
40c84f:	01 45 d0             	add    %eax,-0x30(%ebp)
40c852:	8b 45 c4             	mov    -0x3c(%ebp),%eax
40c855:	11 55 d4             	adc    %edx,-0x2c(%ebp)
40c858:	99                   	cltd
40c859:	01 45 d0             	add    %eax,-0x30(%ebp)
40c85c:	8b 45 1c             	mov    0x1c(%ebp),%eax
40c85f:	11 55 d4             	adc    %edx,-0x2c(%ebp)
40c862:	99                   	cltd
40c863:	01 45 d0             	add    %eax,-0x30(%ebp)
40c866:	8b 45 d4             	mov    -0x2c(%ebp),%eax
40c869:	13 c2                	adc    %edx,%eax
40c86b:	81 6d d0 00 15 94 83 	subl   $0x83941500,-0x30(%ebp)
40c872:	83 d8 00             	sbb    $0x0,%eax
40c875:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40c878:	8b 45 c8             	mov    -0x38(%ebp),%eax
40c87b:	99                   	cltd
40c87c:	03 45 d0             	add    -0x30(%ebp),%eax
40c87f:	89 45 c0             	mov    %eax,-0x40(%ebp)
40c882:	13 55 d4             	adc    -0x2c(%ebp),%edx
40c885:	83 7d 20 01          	cmpl   $0x1,0x20(%ebp)
40c889:	89 55 bc             	mov    %edx,-0x44(%ebp)
40c88c:	74 52                	je     0x40c8e0
40c88e:	83 7d 20 ff          	cmpl   $0xffffffff,0x20(%ebp)
40c892:	8b 45 b8             	mov    -0x48(%ebp),%eax
40c895:	89 45 e8             	mov    %eax,-0x18(%ebp)
40c898:	8b 45 1c             	mov    0x1c(%ebp),%eax
40c89b:	89 7d f4             	mov    %edi,-0xc(%ebp)
40c89e:	89 75 ec             	mov    %esi,-0x14(%ebp)
40c8a1:	89 4d e0             	mov    %ecx,-0x20(%ebp)
40c8a4:	89 5d dc             	mov    %ebx,-0x24(%ebp)
40c8a7:	89 45 d8             	mov    %eax,-0x28(%ebp)
40c8aa:	75 1c                	jne    0x40c8c8
40c8ac:	83 7d cc 00          	cmpl   $0x0,-0x34(%ebp)
40c8b0:	74 16                	je     0x40c8c8
40c8b2:	8d 45 d8             	lea    -0x28(%ebp),%eax
40c8b5:	50                   	push   %eax
40c8b6:	e8 fa 0a 00 00       	call   0x40d3b5
40c8bb:	59                   	pop    %ecx
40c8bc:	85 c0                	test   %eax,%eax
40c8be:	74 08                	je     0x40c8c8
40c8c0:	8b 45 c0             	mov    -0x40(%ebp),%eax
40c8c3:	8b 55 bc             	mov    -0x44(%ebp),%edx
40c8c6:	eb 18                	jmp    0x40c8e0
40c8c8:	8b 45 d0             	mov    -0x30(%ebp),%eax
40c8cb:	8b 55 d4             	mov    -0x2c(%ebp),%edx
40c8ce:	eb 10                	jmp    0x40c8e0
40c8d0:	e8 32 b4 ff ff       	call   0x407d07
40c8d5:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40c8db:	83 c8 ff             	or     $0xffffffff,%eax
40c8de:	0b d0                	or     %eax,%edx
40c8e0:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40c8e3:	5f                   	pop    %edi
40c8e4:	5e                   	pop    %esi
40c8e5:	33 cd                	xor    %ebp,%ecx
40c8e7:	5b                   	pop    %ebx
40c8e8:	e8 69 66 ff ff       	call   0x402f56
40c8ed:	8b e5                	mov    %ebp,%esp
40c8ef:	5d                   	pop    %ebp
40c8f0:	c3                   	ret