407567:	33 c5                	xor    %ebp,%eax
407569:	89 85 a4 02 00 00    	mov    %eax,0x2a4(%ebp)
40756f:	56                   	push   %esi
407570:	89 85 88 00 00 00    	mov    %eax,0x88(%ebp)
407576:	89 8d 84 00 00 00    	mov    %ecx,0x84(%ebp)
40757c:	89 95 80 00 00 00    	mov    %edx,0x80(%ebp)
407582:	89 5d 7c             	mov    %ebx,0x7c(%ebp)
407585:	89 75 78             	mov    %esi,0x78(%ebp)
407588:	89 7d 74             	mov    %edi,0x74(%ebp)
40758b:	66 8c 95 a0 00 00 00 	data16 mov %ss,0xa0(%ebp)
407592:	66 8c 8d 94 00 00 00 	data16 mov %cs,0x94(%ebp)
407599:	66 8c 5d 70          	data16 mov %ds,0x70(%ebp)
40759d:	66 8c 45 6c          	data16 mov %es,0x6c(%ebp)
4075a1:	66 8c 65 68          	data16 mov %fs,0x68(%ebp)
4075a5:	66 8c 6d 64          	data16 mov %gs,0x64(%ebp)
4075a9:	9c                   	pushf
4075aa:	8f 85 98 00 00 00    	pop    0x98(%ebp)
4075b0:	8b b5 ac 02 00 00    	mov    0x2ac(%ebp),%esi
4075b6:	8d 85 ac 02 00 00    	lea    0x2ac(%ebp),%eax
4075bc:	89 85 9c 00 00 00    	mov    %eax,0x9c(%ebp)
4075c2:	c7 45 d8 01 00 01 00 	movl   $0x10001,-0x28(%ebp)
4075c9:	89 b5 90 00 00 00    	mov    %esi,0x90(%ebp)
4075cf:	8b 40 fc             	mov    -0x4(%eax),%eax
4075d2:	6a 50                	push   $0x50
4075d4:	89 85 8c 00 00 00    	mov    %eax,0x8c(%ebp)
4075da:	8d 45 80             	lea    -0x80(%ebp),%eax
4075dd:	6a 00                	push   $0x0
4075df:	50                   	push   %eax
4075e0:	e8 6b e5 ff ff       	call   0x405b50
4075e5:	8d 45 80             	lea    -0x80(%ebp),%eax
4075e8:	89 45 d0             	mov    %eax,-0x30(%ebp)
4075eb:	8d 45 d8             	lea    -0x28(%ebp),%eax
4075ee:	83 c4 0c             	add    $0xc,%esp
4075f1:	c7 45 80 0d 00 00 c0 	movl   $0xc000000d,-0x80(%ebp)
4075f8:	89 75 8c             	mov    %esi,-0x74(%ebp)
4075fb:	89 45 d4             	mov    %eax,-0x2c(%ebp)
4075fe:	ff 15 d4 70 41 00    	call   *0x4170d4
407604:	6a 00                	push   $0x0
407606:	8b f0                	mov    %eax,%esi
407608:	ff 15 d0 70 41 00    	call   *0x4170d0
40760e:	8d 45 d0             	lea    -0x30(%ebp),%eax
407611:	50                   	push   %eax
407612:	ff 15 cc 70 41 00    	call   *0x4170cc
407618:	85 c0                	test   %eax,%eax
40761a:	75 0c                	jne    0x407628
40761c:	85 f6                	test   %esi,%esi
40761e:	75 08                	jne    0x407628
407620:	6a 02                	push   $0x2
407622:	e8 57 70 00 00       	call   0x40e67e
407627:	59                   	pop    %ecx
407628:	68 0d 00 00 c0       	push   $0xc000000d
40762d:	ff 15 0c 70 41 00    	call   *0x41700c
407633:	50                   	push   %eax
407634:	ff 15 74 70 41 00    	call   *0x417074
40763a:	8b 8d a4 02 00 00    	mov    0x2a4(%ebp),%ecx
407640:	33 cd                	xor    %ebp,%ecx
407642:	5e                   	pop    %esi
407643:	e8 ed e8 ff ff       	call   0x405f35
407648:	81 c5 a8 02 00 00    	add    $0x2a8,%ebp
40764e:	c9                   	leave
40764f:	c3                   	ret
407650:	55                   	push   %ebp
407651:	8b ec                	mov    %esp,%ebp
407653:	ff 35 f4 d9 41 00    	push   0x41d9f4
407659:	e8 e4 4c 00 00       	call   0x40c342
40765e:	85 c0                	test   %eax,%eax
407660:	59                   	pop    %ecx
407661:	74 03                	je     0x407666
407663:	5d                   	pop    %ebp
407664:	ff e0                	jmp    *%eax
407666:	6a 02                	push   $0x2
407668:	e8 11 70 00 00       	call   0x40e67e
40766d:	59                   	pop    %ecx
40766e:	5d                   	pop    %ebp
40766f:	e9 e0 fe ff ff       	jmp    0x407554
407674:	33 c0                	xor    %eax,%eax
407676:	50                   	push   %eax
407677:	50                   	push   %eax
407678:	50                   	push   %eax
407679:	50                   	push   %eax
40767a:	50                   	push   %eax
40767b:	e8 d0 ff ff ff       	call   0x407650
407680:	83 c4 14             	add    $0x14,%esp
407683:	c3                   	ret
407684:	55                   	push   %ebp
407685:	8b ec                	mov    %esp,%ebp
407687:	51                   	push   %ecx
407688:	53                   	push   %ebx
407689:	56                   	push   %esi
40768a:	8b 75 08             	mov    0x8(%ebp),%esi
40768d:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
407691:	57                   	push   %edi
407692:	bb f0 cb 41 00       	mov    $0x41cbf0,%ebx
407697:	0f 85 70 01 00 00    	jne    0x40780d
40769d:	56                   	push   %esi
40769e:	e8 a3 73 00 00       	call   0x40ea46
4076a3:	83 f8 ff             	cmp    $0xffffffff,%eax
4076a6:	59                   	pop    %ecx
4076a7:	74 2e                	je     0x4076d7
4076a9:	56                   	push   %esi
4076aa:	e8 97 73 00 00       	call   0x40ea46
4076af:	83 f8 fe             	cmp    $0xfffffffe,%eax
4076b2:	59                   	pop    %ecx
4076b3:	74 22                	je     0x4076d7
4076b5:	56                   	push   %esi
4076b6:	e8 8b 73 00 00       	call   0x40ea46
4076bb:	c1 f8 05             	sar    $0x5,%eax
4076be:	56                   	push   %esi
4076bf:	8d 3c 85 c0 e4 41 00 	lea    0x41e4c0(,%eax,4),%edi
4076c6:	e8 7b 73 00 00       	call   0x40ea46
4076cb:	83 e0 1f             	and    $0x1f,%eax
4076ce:	6b c0 28             	imul   $0x28,%eax,%eax
4076d1:	03 07                	add    (%edi),%eax
4076d3:	59                   	pop    %ecx
4076d4:	59                   	pop    %ecx
4076d5:	eb 02                	jmp    0x4076d9
4076d7:	8b c3                	mov    %ebx,%eax
4076d9:	f6 40 24 7f          	testb  $0x7f,0x24(%eax)
4076dd:	74 4e                	je     0x40772d
4076df:	ff 4e 04             	decl   0x4(%esi)
4076e2:	78 0a                	js     0x4076ee
4076e4:	8b 0e                	mov    (%esi),%ecx
4076e6:	0f b6 01             	movzbl (%ecx),%eax
4076e9:	41                   	inc    %ecx
4076ea:	89 0e                	mov    %ecx,(%esi)
4076ec:	eb 07                	jmp    0x4076f5
4076ee:	56                   	push   %esi
4076ef:	e8 32 72 00 00       	call   0x40e926
4076f4:	59                   	pop    %ecx
4076f5:	83 f8 ff             	cmp    $0xffffffff,%eax
4076f8:	75 09                	jne    0x407703
4076fa:	66 0d ff ff          	or     $0xffff,%ax
4076fe:	e9 23 01 00 00       	jmp    0x407826
407703:	ff 4e 04             	decl   0x4(%esi)
407706:	88 45 08             	mov    %al,0x8(%ebp)
407709:	78 0a                	js     0x407715
40770b:	8b 0e                	mov    (%esi),%ecx
40770d:	0f b6 01             	movzbl (%ecx),%eax
407710:	41                   	inc    %ecx
407711:	89 0e                	mov    %ecx,(%esi)
407713:	eb 07                	jmp    0x40771c
407715:	56                   	push   %esi
407716:	e8 0b 72 00 00       	call   0x40e926
40771b:	59                   	pop    %ecx
40771c:	83 f8 ff             	cmp    $0xffffffff,%eax
40771f:	74 d9                	je     0x4076fa
407721:	88 45 09             	mov    %al,0x9(%ebp)
407724:	66 8b 45 08          	mov    0x8(%ebp),%ax
407728:	e9 f9 00 00 00       	jmp    0x407826
40772d:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
407731:	0f 85 d6 00 00 00    	jne    0x40780d
407737:	56                   	push   %esi
407738:	e8 09 73 00 00       	call   0x40ea46
40773d:	83 f8 ff             	cmp    $0xffffffff,%eax
407740:	59                   	pop    %ecx
407741:	74 2e                	je     0x407771
407743:	56                   	push   %esi
407744:	e8 fd 72 00 00       	call   0x40ea46
407749:	83 f8 fe             	cmp    $0xfffffffe,%eax
40774c:	59                   	pop    %ecx
40774d:	74 22                	je     0x407771
40774f:	56                   	push   %esi
407750:	e8 f1 72 00 00       	call   0x40ea46
407755:	c1 f8 05             	sar    $0x5,%eax
407758:	56                   	push   %esi
407759:	8d 3c 85 c0 e4 41 00 	lea    0x41e4c0(,%eax,4),%edi
407760:	e8 e1 72 00 00       	call   0x40ea46
407765:	83 e0 1f             	and    $0x1f,%eax
407768:	6b c0 28             	imul   $0x28,%eax,%eax
40776b:	03 07                	add    (%edi),%eax
40776d:	59                   	pop    %ecx
40776e:	59                   	pop    %ecx
40776f:	eb 02                	jmp    0x407773
407771:	8b c3                	mov    %ebx,%eax
407773:	f6 40 04 80          	testb  $0x80,0x4(%eax)
407777:	0f 84 90 00 00 00    	je     0x40780d
40777d:	33 ff                	xor    %edi,%edi
40777f:	47                   	inc    %edi
407780:	ff 4e 04             	decl   0x4(%esi)
407783:	78 0a                	js     0x40778f
407785:	8b 0e                	mov    (%esi),%ecx
407787:	0f b6 01             	movzbl (%ecx),%eax
40778a:	41                   	inc    %ecx
40778b:	89 0e                	mov    %ecx,(%esi)
40778d:	eb 07                	jmp    0x407796
40778f:	56                   	push   %esi
407790:	e8 91 71 00 00       	call   0x40e926
407795:	59                   	pop    %ecx
407796:	83 f8 ff             	cmp    $0xffffffff,%eax
407799:	0f 84 5b ff ff ff    	je     0x4076fa
40779f:	88 45 fc             	mov    %al,-0x4(%ebp)
4077a2:	0f b6 c0             	movzbl %al,%eax
4077a5:	50                   	push   %eax
4077a6:	e8 6d 71 00 00       	call   0x40e918
4077ab:	85 c0                	test   %eax,%eax
4077ad:	59                   	pop    %ecx
4077ae:	74 33                	je     0x4077e3
4077b0:	ff 4e 04             	decl   0x4(%esi)
4077b3:	78 0a                	js     0x4077bf
4077b5:	8b 0e                	mov    (%esi),%ecx
4077b7:	0f b6 01             	movzbl (%ecx),%eax
4077ba:	41                   	inc    %ecx
4077bb:	89 0e                	mov    %ecx,(%esi)
4077bd:	eb 07                	jmp    0x4077c6
4077bf:	56                   	push   %esi
4077c0:	e8 61 71 00 00       	call   0x40e926
4077c5:	59                   	pop    %ecx
4077c6:	83 f8 ff             	cmp    $0xffffffff,%eax
4077c9:	75 12                	jne    0x4077dd
4077cb:	0f be 45 fc          	movsbl -0x4(%ebp),%eax
4077cf:	56                   	push   %esi
4077d0:	50                   	push   %eax
4077d1:	e8 36 09 00 00       	call   0x40810c
4077d6:	59                   	pop    %ecx
4077d7:	66 0d ff ff          	or     $0xffff,%ax
4077db:	eb 48                	jmp    0x407825
4077dd:	6a 02                	push   $0x2
4077df:	88 45 fd             	mov    %al,-0x3(%ebp)
4077e2:	5f                   	pop    %edi
4077e3:	57                   	push   %edi
4077e4:	8d 45 fc             	lea    -0x4(%ebp),%eax
4077e7:	50                   	push   %eax
4077e8:	8d 45 08             	lea    0x8(%ebp),%eax
4077eb:	50                   	push   %eax
4077ec:	e8 da 70 00 00       	call   0x40e8cb
4077f1:	83 c4 0c             	add    $0xc,%esp
4077f4:	83 f8 ff             	cmp    $0xffffffff,%eax
4077f7:	0f 85 27 ff ff ff    	jne    0x407724
4077fd:	e8 f8 1b 00 00       	call   0x4093fa
407802:	c7 00 2a 00 00 00    	movl   $0x2a,(%eax)
407808:	e9 ed fe ff ff       	jmp    0x4076fa
40780d:	83 46 04 fe          	addl   $0xfffffffe,0x4(%esi)
407811:	78 0c                	js     0x40781f
407813:	8b 0e                	mov    (%esi),%ecx
407815:	0f b7 01             	movzwl (%ecx),%eax
407818:	83 c1 02             	add    $0x2,%ecx
40781b:	89 0e                	mov    %ecx,(%esi)
40781d:	eb 07                	jmp    0x407826
40781f:	56                   	push   %esi
407820:	e8 61 6e 00 00       	call   0x40e686
407825:	59                   	pop    %ecx
407826:	5f                   	pop    %edi
407827:	5e                   	pop    %esi
407828:	5b                   	pop    %ebx
407829:	c9                   	leave
40782a:	c3                   	ret
40782b:	6a 0c                	push   $0xc
40782d:	68 d0 a9 41 00       	push   $0x41a9d0
407832:	e8 11 5e 00 00       	call   0x40d648
407837:	33 c0                	xor    %eax,%eax
407839:	33 f6                	xor    %esi,%esi
40783b:	39 75 08             	cmp    %esi,0x8(%ebp)
40783e:	0f 95 c0             	setne  %al
407841:	3b c6                	cmp    %esi,%eax
407843:	75 1e                	jne    0x407863
407845:	e8 b0 1b 00 00       	call   0x4093fa
40784a:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
407850:	56                   	push   %esi
407851:	56                   	push   %esi
407852:	56                   	push   %esi
407853:	56                   	push   %esi
407854:	56                   	push   %esi
407855:	e8 f6 fd ff ff       	call   0x407650
40785a:	83 c4 14             	add    $0x14,%esp
40785d:	66 0d ff ff          	or     $0xffff,%ax
407861:	eb 2b                	jmp    0x40788e
407863:	ff 75 08             	push   0x8(%ebp)
407866:	e8 9a 10 00 00       	call   0x408905
40786b:	59                   	pop    %ecx
40786c:	89 75 fc             	mov    %esi,-0x4(%ebp)
40786f:	ff 75 08             	push   0x8(%ebp)
407872:	e8 0d fe ff ff       	call   0x407684
407877:	59                   	pop    %ecx
407878:	0f b7 c0             	movzwl %ax,%eax
40787b:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40787e:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
407885:	e8 0a 00 00 00       	call   0x407894
40788a:	66 8b 45 e4          	mov    -0x1c(%ebp),%ax
40788e:	e8 fa 5d 00 00       	call   0x40d68d
407893:	c3                   	ret
407894:	ff 75 08             	push   0x8(%ebp)
407897:	e8 bb 10 00 00       	call   0x408957
40789c:	59                   	pop    %ecx
40789d:	c3                   	ret
40789e:	55                   	push   %ebp
40789f:	8b ec                	mov    %esp,%ebp
4078a1:	83 ec 10             	sub    $0x10,%esp
4078a4:	a1 20 c5 41 00       	mov    0x41c520,%eax
4078a9:	33 c5                	xor    %ebp,%eax
4078ab:	89 45 fc             	mov    %eax,-0x4(%ebp)
4078ae:	53                   	push   %ebx
4078af:	56                   	push   %esi
4078b0:	8b 75 0c             	mov    0xc(%ebp),%esi
4078b3:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
4078b7:	57                   	push   %edi
4078b8:	0f 85 8f 01 00 00    	jne    0x407a4d
4078be:	56                   	push   %esi
4078bf:	e8 82 71 00 00       	call   0x40ea46
4078c4:	83 f8 ff             	cmp    $0xffffffff,%eax
4078c7:	59                   	pop    %ecx
4078c8:	bf f0 cb 41 00       	mov    $0x41cbf0,%edi
4078cd:	74 2e                	je     0x4078fd
4078cf:	56                   	push   %esi
4078d0:	e8 71 71 00 00       	call   0x40ea46
4078d5:	83 f8 fe             	cmp    $0xfffffffe,%eax
4078d8:	59                   	pop    %ecx
4078d9:	74 22                	je     0x4078fd
4078db:	56                   	push   %esi
4078dc:	e8 65 71 00 00       	call   0x40ea46
4078e1:	c1 f8 05             	sar    $0x5,%eax
4078e4:	56                   	push   %esi
4078e5:	8d 1c 85 c0 e4 41 00 	lea    0x41e4c0(,%eax,4),%ebx
4078ec:	e8 55 71 00 00       	call   0x40ea46
4078f1:	83 e0 1f             	and    $0x1f,%eax
4078f4:	6b c0 28             	imul   $0x28,%eax,%eax
4078f7:	03 03                	add    (%ebx),%eax
4078f9:	59                   	pop    %ecx
4078fa:	59                   	pop    %ecx
4078fb:	eb 02                	jmp    0x4078ff
4078fd:	8b c7                	mov    %edi,%eax
4078ff:	8a 40 24             	mov    0x24(%eax),%al
407902:	24 7f                	and    $0x7f,%al
407904:	3c 02                	cmp    $0x2,%al
407906:	0f 84 41 01 00 00    	je     0x407a4d
40790c:	56                   	push   %esi
40790d:	e8 34 71 00 00       	call   0x40ea46
407912:	83 f8 ff             	cmp    $0xffffffff,%eax
407915:	59                   	pop    %ecx
407916:	74 2e                	je     0x407946
407918:	56                   	push   %esi
407919:	e8 28 71 00 00       	call   0x40ea46
40791e:	83 f8 fe             	cmp    $0xfffffffe,%eax
407921:	59                   	pop    %ecx
407922:	74 22                	je     0x407946
407924:	56                   	push   %esi
407925:	e8 1c 71 00 00       	call   0x40ea46
40792a:	c1 f8 05             	sar    $0x5,%eax
40792d:	56                   	push   %esi
40792e:	8d 1c 85 c0 e4 41 00 	lea    0x41e4c0(,%eax,4),%ebx
407935:	e8 0c 71 00 00       	call   0x40ea46
40793a:	83 e0 1f             	and    $0x1f,%eax
40793d:	6b c0 28             	imul   $0x28,%eax,%eax
407940:	03 03                	add    (%ebx),%eax
407942:	59                   	pop    %ecx
407943:	59                   	pop    %ecx
407944:	eb 02                	jmp    0x407948
407946:	8b c7                	mov    %edi,%eax
407948:	8a 40 24             	mov    0x24(%eax),%al
40794b:	24 7f                	and    $0x7f,%al
40794d:	3c 01                	cmp    $0x1,%al