4054bf:	ff 35 d0 1e 41 00    	push   0x411ed0
4054c5:	e8 46 1d 00 00       	call   0x407210
4054ca:	83 c4 0c             	add    $0xc,%esp
4054cd:	85 c0                	test   %eax,%eax
4054cf:	75 04                	jne    0x4054d5
4054d1:	33 f6                	xor    %esi,%esi
4054d3:	eb 2c                	jmp    0x405501
4054d5:	8b 0d cc 1e 41 00    	mov    0x411ecc,%ecx
4054db:	2b 0d d0 1e 41 00    	sub    0x411ed0,%ecx
4054e1:	a3 d0 1e 41 00       	mov    %eax,0x411ed0
4054e6:	c1 f9 02             	sar    $0x2,%ecx
4054e9:	8d 0c 88             	lea    (%eax,%ecx,4),%ecx
4054ec:	89 0d cc 1e 41 00    	mov    %ecx,0x411ecc
4054f2:	8b 44 24 08          	mov    0x8(%esp),%eax
4054f6:	89 01                	mov    %eax,(%ecx)
4054f8:	83 05 cc 1e 41 00 04 	addl   $0x4,0x411ecc
4054ff:	8b f0                	mov    %eax,%esi
405501:	e8 e7 1c 00 00       	call   0x4071ed
405506:	8b c6                	mov    %esi,%eax
405508:	5e                   	pop    %esi
405509:	c3                   	ret
40550a:	ff 74 24 04          	push   0x4(%esp)
40550e:	e8 79 ff ff ff       	call   0x40548c
405513:	f7 d8                	neg    %eax
405515:	1b c0                	sbb    %eax,%eax
405517:	59                   	pop    %ecx
405518:	f7 d8                	neg    %eax
40551a:	48                   	dec    %eax
40551b:	c3                   	ret
40551c:	68 80 00 00 00       	push   $0x80
405521:	e8 67 1e 00 00       	call   0x40738d
405526:	85 c0                	test   %eax,%eax
405528:	59                   	pop    %ecx
405529:	a3 d0 1e 41 00       	mov    %eax,0x411ed0
40552e:	75 0d                	jne    0x40553d
405530:	6a 18                	push   $0x18
405532:	e8 45 02 00 00       	call   0x40577c
405537:	a1 d0 1e 41 00       	mov    0x411ed0,%eax
40553c:	59                   	pop    %ecx
40553d:	83 20 00             	andl   $0x0,(%eax)
405540:	a1 d0 1e 41 00       	mov    0x411ed0,%eax
405545:	a3 cc 1e 41 00       	mov    %eax,0x411ecc
40554a:	c3                   	ret
40554b:	53                   	push   %ebx
40554c:	56                   	push   %esi
40554d:	be a0 05 41 00       	mov    $0x4105a0,%esi
405552:	57                   	push   %edi
405553:	56                   	push   %esi
405554:	6a 01                	push   $0x1
405556:	e8 9a 03 00 00       	call   0x4058f5
40555b:	56                   	push   %esi
40555c:	e8 b8 1e 00 00       	call   0x407419
405561:	8b f8                	mov    %eax,%edi
405563:	8d 44 24 20          	lea    0x20(%esp),%eax
405567:	50                   	push   %eax
405568:	ff 74 24 20          	push   0x20(%esp)
40556c:	56                   	push   %esi
40556d:	e8 5e 1f 00 00       	call   0x4074d0
405572:	56                   	push   %esi
405573:	57                   	push   %edi
405574:	8b d8                	mov    %eax,%ebx
405576:	e8 2b 1f 00 00       	call   0x4074a6
40557b:	56                   	push   %esi
40557c:	6a 01                	push   $0x1
40557e:	e8 c4 03 00 00       	call   0x405947
405583:	83 c4 28             	add    $0x28,%esp
405586:	8b c3                	mov    %ebx,%eax
405588:	5f                   	pop    %edi
405589:	5e                   	pop    %esi
40558a:	5b                   	pop    %ebx
40558b:	c3                   	ret
40558c:	53                   	push   %ebx
40558d:	55                   	push   %ebp
40558e:	56                   	push   %esi
40558f:	57                   	push   %edi
405590:	8b 7c 24 14          	mov    0x14(%esp),%edi
405594:	83 3d 60 0d 41 00 01 	cmpl   $0x1,0x410d60
40559b:	7e 0f                	jle    0x4055ac
40559d:	0f b6 07             	movzbl (%edi),%eax
4055a0:	6a 08                	push   $0x8
4055a2:	50                   	push   %eax
4055a3:	e8 32 27 00 00       	call   0x407cda
4055a8:	59                   	pop    %ecx
4055a9:	59                   	pop    %ecx
4055aa:	eb 0f                	jmp    0x4055bb
4055ac:	0f b6 07             	movzbl (%edi),%eax
4055af:	8b 0d ec 09 41 00    	mov    0x4109ec,%ecx
4055b5:	8a 04 41             	mov    (%ecx,%eax,2),%al
4055b8:	83 e0 08             	and    $0x8,%eax
4055bb:	85 c0                	test   %eax,%eax
4055bd:	74 03                	je     0x4055c2
4055bf:	47                   	inc    %edi
4055c0:	eb d2                	jmp    0x405594
4055c2:	0f b6 37             	movzbl (%edi),%esi
4055c5:	47                   	inc    %edi
4055c6:	83 fe 2d             	cmp    $0x2d,%esi
4055c9:	8b ee                	mov    %esi,%ebp
4055cb:	74 05                	je     0x4055d2
4055cd:	83 fe 2b             	cmp    $0x2b,%esi
4055d0:	75 04                	jne    0x4055d6
4055d2:	0f b6 37             	movzbl (%edi),%esi
4055d5:	47                   	inc    %edi
4055d6:	33 db                	xor    %ebx,%ebx
4055d8:	83 3d 60 0d 41 00 01 	cmpl   $0x1,0x410d60
4055df:	7e 0c                	jle    0x4055ed
4055e1:	6a 04                	push   $0x4
4055e3:	56                   	push   %esi
4055e4:	e8 f1 26 00 00       	call   0x407cda
4055e9:	59                   	pop    %ecx
4055ea:	59                   	pop    %ecx
4055eb:	eb 0b                	jmp    0x4055f8
4055ed:	a1 ec 09 41 00       	mov    0x4109ec,%eax
4055f2:	8a 04 70             	mov    (%eax,%esi,2),%al
4055f5:	83 e0 04             	and    $0x4,%eax
4055f8:	85 c0                	test   %eax,%eax
4055fa:	74 0d                	je     0x405609
4055fc:	8d 04 9b             	lea    (%ebx,%ebx,4),%eax
4055ff:	8d 5c 46 d0          	lea    -0x30(%esi,%eax,2),%ebx
405603:	0f b6 37             	movzbl (%edi),%esi
405606:	47                   	inc    %edi
405607:	eb cf                	jmp    0x4055d8
405609:	83 fd 2d             	cmp    $0x2d,%ebp
40560c:	8b c3                	mov    %ebx,%eax
40560e:	75 02                	jne    0x405612
405610:	f7 d8                	neg    %eax
405612:	5f                   	pop    %edi
405613:	5e                   	pop    %esi
405614:	5d                   	pop    %ebp
405615:	5b                   	pop    %ebx
405616:	c3                   	ret
405617:	ff 74 24 04          	push   0x4(%esp)
40561b:	e8 6c ff ff ff       	call   0x40558c
405620:	59                   	pop    %ecx
405621:	c3                   	ret
405622:	55                   	push   %ebp
405623:	8b ec                	mov    %esp,%ebp
405625:	83 ec 20             	sub    $0x20,%esp
405628:	8b 45 08             	mov    0x8(%ebp),%eax
40562b:	56                   	push   %esi
40562c:	89 45 e8             	mov    %eax,-0x18(%ebp)
40562f:	89 45 e0             	mov    %eax,-0x20(%ebp)
405632:	8d 45 10             	lea    0x10(%ebp),%eax
405635:	c7 45 ec 42 00 00 00 	movl   $0x42,-0x14(%ebp)
40563c:	50                   	push   %eax
40563d:	8d 45 e0             	lea    -0x20(%ebp),%eax
405640:	ff 75 0c             	push   0xc(%ebp)
405643:	c7 45 e4 ff ff ff 7f 	movl   $0x7fffffff,-0x1c(%ebp)
40564a:	50                   	push   %eax
40564b:	e8 80 1e 00 00       	call   0x4074d0
405650:	83 c4 0c             	add    $0xc,%esp
405653:	ff 4d e4             	decl   -0x1c(%ebp)
405656:	8b f0                	mov    %eax,%esi
405658:	78 08                	js     0x405662
40565a:	8b 45 e0             	mov    -0x20(%ebp),%eax
40565d:	80 20 00             	andb   $0x0,(%eax)
405660:	eb 0d                	jmp    0x40566f
405662:	8d 45 e0             	lea    -0x20(%ebp),%eax
405665:	50                   	push   %eax
405666:	6a 00                	push   $0x0
405668:	e8 17 27 00 00       	call   0x407d84
40566d:	59                   	pop    %ecx
40566e:	59                   	pop    %ecx
40566f:	8b c6                	mov    %esi,%eax
405671:	5e                   	pop    %esi
405672:	c9                   	leave
405673:	c3                   	ret
405674:	55                   	push   %ebp
405675:	8b ec                	mov    %esp,%ebp
405677:	6a ff                	push   $0xffffffff
405679:	68 f0 d3 40 00       	push   $0x40d3f0
40567e:	68 74 87 40 00       	push   $0x408774
405683:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
405689:	50                   	push   %eax
40568a:	64 89 25 00 00 00 00 	mov    %esp,%fs:0x0
405691:	83 ec 58             	sub    $0x58,%esp
405694:	53                   	push   %ebx
405695:	56                   	push   %esi
405696:	57                   	push   %edi
405697:	89 65 e8             	mov    %esp,-0x18(%ebp)
40569a:	ff 15 e4 d0 40 00    	call   *0x40d0e4
4056a0:	33 d2                	xor    %edx,%edx
4056a2:	8a d4                	mov    %ah,%dl
4056a4:	89 15 94 18 41 00    	mov    %edx,0x411894
4056aa:	8b c8                	mov    %eax,%ecx
4056ac:	81 e1 ff 00 00 00    	and    $0xff,%ecx
4056b2:	89 0d 90 18 41 00    	mov    %ecx,0x411890
4056b8:	c1 e1 08             	shl    $0x8,%ecx
4056bb:	03 ca                	add    %edx,%ecx
4056bd:	89 0d 8c 18 41 00    	mov    %ecx,0x41188c
4056c3:	c1 e8 10             	shr    $0x10,%eax
4056c6:	a3 88 18 41 00       	mov    %eax,0x411888
4056cb:	6a 01                	push   $0x1
4056cd:	e8 5c 30 00 00       	call   0x40872e
4056d2:	59                   	pop    %ecx
4056d3:	85 c0                	test   %eax,%eax
4056d5:	75 08                	jne    0x4056df
4056d7:	6a 1c                	push   $0x1c
4056d9:	e8 c3 00 00 00       	call   0x4057a1
4056de:	59                   	pop    %ecx
4056df:	e8 7c 2f 00 00       	call   0x408660
4056e4:	85 c0                	test   %eax,%eax
4056e6:	75 08                	jne    0x4056f0
4056e8:	6a 10                	push   $0x10
4056ea:	e8 b2 00 00 00       	call   0x4057a1
4056ef:	59                   	pop    %ecx
4056f0:	33 f6                	xor    %esi,%esi
4056f2:	89 75 fc             	mov    %esi,-0x4(%ebp)
4056f5:	e8 aa 2d 00 00       	call   0x4084a4
4056fa:	ff 15 e0 d0 40 00    	call   *0x40d0e0
405700:	a3 04 2f 41 00       	mov    %eax,0x412f04
405705:	e8 68 2c 00 00       	call   0x408372
40570a:	a3 e4 17 41 00       	mov    %eax,0x4117e4
40570f:	e8 11 2a 00 00       	call   0x408125
405714:	e8 53 29 00 00       	call   0x40806c
405719:	e8 d2 19 00 00       	call   0x4070f0
40571e:	89 75 d0             	mov    %esi,-0x30(%ebp)
405721:	8d 45 a4             	lea    -0x5c(%ebp),%eax
405724:	50                   	push   %eax
405725:	ff 15 dc d0 40 00    	call   *0x40d0dc
40572b:	e8 e4 28 00 00       	call   0x408014
405730:	89 45 9c             	mov    %eax,-0x64(%ebp)
405733:	f6 45 d0 01          	testb  $0x1,-0x30(%ebp)
405737:	74 06                	je     0x40573f
405739:	0f b7 45 d4          	movzwl -0x2c(%ebp),%eax
40573d:	eb 03                	jmp    0x405742
40573f:	6a 0a                	push   $0xa
405741:	58                   	pop    %eax
405742:	50                   	push   %eax
405743:	ff 75 9c             	push   -0x64(%ebp)
405746:	56                   	push   %esi
405747:	56                   	push   %esi
405748:	ff 15 d8 d0 40 00    	call   *0x40d0d8
40574e:	50                   	push   %eax
40574f:	e8 3c bf ff ff       	call   0x401690
405754:	89 45 a0             	mov    %eax,-0x60(%ebp)
405757:	50                   	push   %eax
405758:	e8 c0 19 00 00       	call   0x40711d
40575d:	8b 45 ec             	mov    -0x14(%ebp),%eax
405760:	8b 08                	mov    (%eax),%ecx
405762:	8b 09                	mov    (%ecx),%ecx
405764:	89 4d 98             	mov    %ecx,-0x68(%ebp)
405767:	50                   	push   %eax
405768:	51                   	push   %ecx
405769:	e8 2e 27 00 00       	call   0x407e9c
40576e:	59                   	pop    %ecx
40576f:	59                   	pop    %ecx
405770:	c3                   	ret
405771:	8b 65 e8             	mov    -0x18(%ebp),%esp
405774:	ff 75 98             	push   -0x68(%ebp)
405777:	e8 b2 19 00 00       	call   0x40712e
40577c:	83 3d ec 17 41 00 01 	cmpl   $0x1,0x4117ec
405783:	75 05                	jne    0x40578a
405785:	e8 c2 30 00 00       	call   0x40884c
40578a:	ff 74 24 04          	push   0x4(%esp)
40578e:	e8 f2 30 00 00       	call   0x408885
405793:	68 ff 00 00 00       	push   $0xff
405798:	ff 15 60 05 41 00    	call   *0x410560
40579e:	59                   	pop    %ecx
40579f:	59                   	pop    %ecx
4057a0:	c3                   	ret
4057a1:	83 3d ec 17 41 00 01 	cmpl   $0x1,0x4117ec
4057a8:	75 05                	jne    0x4057af
4057aa:	e8 9d 30 00 00       	call   0x40884c
4057af:	ff 74 24 04          	push   0x4(%esp)
4057b3:	e8 cd 30 00 00       	call   0x408885
4057b8:	59                   	pop    %ecx
4057b9:	68 ff 00 00 00       	push   $0xff
4057be:	ff 15 e8 d0 40 00    	call   *0x40d0e8
4057c4:	c3                   	ret
4057c5:	56                   	push   %esi
4057c6:	8b f1                	mov    %ecx,%esi
4057c8:	6a 1b                	push   $0x1b
4057ca:	c7 06 00 d4 40 00    	movl   $0x40d400,(%esi)
4057d0:	e8 20 18 00 00       	call   0x406ff5
4057d5:	8b 76 04             	mov    0x4(%esi),%esi
4057d8:	59                   	pop    %ecx
4057d9:	85 f6                	test   %esi,%esi
4057db:	74 07                	je     0x4057e4
4057dd:	56                   	push   %esi
4057de:	e8 f4 16 00 00       	call   0x406ed7
4057e3:	59                   	pop    %ecx
4057e4:	6a 1b                	push   $0x1b
4057e6:	e8 6b 18 00 00       	call   0x407056
4057eb:	59                   	pop    %ecx
4057ec:	5e                   	pop    %esi
4057ed:	c3                   	ret
4057ee:	56                   	push   %esi
4057ef:	8b f1                	mov    %ecx,%esi
4057f1:	e8 cf ff ff ff       	call   0x4057c5
4057f6:	f6 44 24 08 01       	testb  $0x1,0x8(%esp)
4057fb:	74 07                	je     0x405804
4057fd:	56                   	push   %esi
4057fe:	e8 7e f7 ff ff       	call   0x404f81
405803:	59                   	pop    %ecx
405804:	8b c6                	mov    %esi,%eax
405806:	5e                   	pop    %esi
405807:	c2 04 00             	ret    $0x4
40580a:	a1 00 2f 41 00       	mov    0x412f00,%eax
40580f:	56                   	push   %esi
405810:	6a 14                	push   $0x14
405812:	85 c0                	test   %eax,%eax
405814:	5e                   	pop    %esi
405815:	75 07                	jne    0x40581e
405817:	b8 00 02 00 00       	mov    $0x200,%eax
40581c:	eb 06                	jmp    0x405824
40581e:	3b c6                	cmp    %esi,%eax
405820:	7d 07                	jge    0x405829
405822:	8b c6                	mov    %esi,%eax
405824:	a3 00 2f 41 00       	mov    %eax,0x412f00
405829:	6a 04                	push   $0x4
40582b:	50                   	push   %eax
40582c:	e8 33 32 00 00       	call   0x408a64
405831:	59                   	pop    %ecx
405832:	a3 e0 1e 41 00       	mov    %eax,0x411ee0
405837:	85 c0                	test   %eax,%eax
405839:	59                   	pop    %ecx
40583a:	75 21                	jne    0x40585d
40583c:	6a 04                	push   $0x4
40583e:	56                   	push   %esi
40583f:	89 35 00 2f 41 00    	mov    %esi,0x412f00
405845:	e8 1a 32 00 00       	call   0x408a64
40584a:	59                   	pop    %ecx
40584b:	a3 e0 1e 41 00       	mov    %eax,0x411ee0
405850:	85 c0                	test   %eax,%eax
405852:	59                   	pop    %ecx
405853:	75 08                	jne    0x40585d
405855:	6a 1a                	push   $0x1a
405857:	e8 20 ff ff ff       	call   0x40577c
40585c:	59                   	pop    %ecx
40585d:	33 c9                	xor    %ecx,%ecx
40585f:	b8 80 05 41 00       	mov    $0x410580,%eax
405864:	8b 15 e0 1e 41 00    	mov    0x411ee0,%edx
40586a:	89 04 11             	mov    %eax,(%ecx,%edx,1)
40586d:	83 c0 20             	add    $0x20,%eax
405870:	83 c1 04             	add    $0x4,%ecx
405873:	3d 00 08 41 00       	cmp    $0x410800,%eax
405878:	7c ea                	jl     0x405864
40587a:	33 c9                	xor    %ecx,%ecx
40587c:	ba 90 05 41 00       	mov    $0x410590,%edx
405881:	8b f1                	mov    %ecx,%esi
405883:	8b c1                	mov    %ecx,%eax
405885:	c1 fe 05             	sar    $0x5,%esi
405888:	83 e0 1f             	and    $0x1f,%eax
40588b:	8b 34 b5 c0 1d 41 00 	mov    0x411dc0(,%esi,4),%esi
405892:	8d 04 c0             	lea    (%eax,%eax,8),%eax
405895:	8b 04 86             	mov    (%esi,%eax,4),%eax
405898:	83 f8 ff             	cmp    $0xffffffff,%eax
40589b:	74 04                	je     0x4058a1
40589d:	85 c0                	test   %eax,%eax
40589f:	75 03                	jne    0x4058a4