40456d:	0d 00 20 00 00       	or     $0x2000,%eax
404572:	89 46 28             	mov    %eax,0x28(%esi)
404575:	ff 76 28             	push   0x28(%esi)
404578:	8b ce                	mov    %esi,%ecx
40457a:	ff 75 08             	push   0x8(%ebp)
40457d:	e8 7d 02 00 00       	call   0x4047ff
404582:	84 c0                	test   %al,%al
404584:	74 1c                	je     0x4045a2
404586:	8b ce                	mov    %esi,%ecx
404588:	e8 48 00 00 00       	call   0x4045d5
40458d:	8b ce                	mov    %esi,%ecx
40458f:	e8 2a 00 00 00       	call   0x4045be
404594:	8b ce                	mov    %esi,%ecx
404596:	e8 aa 02 00 00       	call   0x404845
40459b:	b0 01                	mov    $0x1,%al
40459d:	5e                   	pop    %esi
40459e:	5d                   	pop    %ebp
40459f:	c2 08 00             	ret    $0x8
4045a2:	32 c0                	xor    %al,%al
4045a4:	eb f7                	jmp    0x40459d
4045a6:	56                   	push   %esi
4045a7:	8b f1                	mov    %ecx,%esi
4045a9:	83 66 08 00          	andl   $0x0,0x8(%esi)
4045ad:	83 66 0c 00          	andl   $0x0,0xc(%esi)
4045b1:	e8 e2 01 00 00       	call   0x404798
4045b6:	89 46 10             	mov    %eax,0x10(%esi)
4045b9:	89 56 14             	mov    %edx,0x14(%esi)
4045bc:	5e                   	pop    %esi
4045bd:	c3                   	ret
4045be:	f7 41 28 00 20 00 00 	testl  $0x2000,0x28(%ecx)
4045c5:	74 0d                	je     0x4045d4
4045c7:	8b 41 30             	mov    0x30(%ecx),%eax
4045ca:	99                   	cltd
4045cb:	6a 00                	push   $0x0
4045cd:	52                   	push   %edx
4045ce:	50                   	push   %eax
4045cf:	e8 fa 00 00 00       	call   0x4046ce
4045d4:	c3                   	ret
4045d5:	55                   	push   %ebp
4045d6:	8b ec                	mov    %esp,%ebp
4045d8:	83 ec 10             	sub    $0x10,%esp
4045db:	53                   	push   %ebx
4045dc:	57                   	push   %edi
4045dd:	8b f9                	mov    %ecx,%edi
4045df:	33 db                	xor    %ebx,%ebx
4045e1:	8b 47 28             	mov    0x28(%edi),%eax
4045e4:	89 5f 2c             	mov    %ebx,0x2c(%edi)
4045e7:	89 5f 30             	mov    %ebx,0x30(%edi)
4045ea:	a9 00 20 00 00       	test   $0x2000,%eax
4045ef:	0f 84 ba 00 00 00    	je     0x4046af
4045f5:	a8 10                	test   $0x10,%al
4045f7:	0f 85 ae 00 00 00    	jne    0x4046ab
4045fd:	a9 80 01 00 00       	test   $0x180,%eax
404602:	0f 85 8b f7 06 00    	jne    0x473d93
404608:	a8 20                	test   $0x20,%al
40460a:	0f 85 8f f7 06 00    	jne    0x473d9f
404610:	a8 40                	test   $0x40,%al
404612:	0f 85 93 f7 06 00    	jne    0x473dab
404618:	8b 47 10             	mov    0x10(%edi),%eax
40461b:	56                   	push   %esi
40461c:	53                   	push   %ebx
40461d:	89 45 f8             	mov    %eax,-0x8(%ebp)
404620:	8b 47 14             	mov    0x14(%edi),%eax
404623:	53                   	push   %ebx
404624:	53                   	push   %ebx
404625:	89 45 fc             	mov    %eax,-0x4(%ebp)
404628:	e8 a1 00 00 00       	call   0x4046ce
40462d:	be 00 00 01 00       	mov    $0x10000,%esi
404632:	56                   	push   %esi
404633:	e8 b2 ae 01 00       	call   0x41f4ea
404638:	59                   	pop    %ecx
404639:	50                   	push   %eax
40463a:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40463d:	e8 75 01 00 00       	call   0x4047b7
404642:	56                   	push   %esi
404643:	8b 75 f0             	mov    -0x10(%ebp),%esi
404646:	56                   	push   %esi
404647:	8b cf                	mov    %edi,%ecx
404649:	e8 92 7c 00 00       	call   0x40c2e0
40464e:	6a 02                	push   $0x2
404650:	5a                   	pop    %edx
404651:	3b c2                	cmp    %edx,%eax
404653:	72 10                	jb     0x404665
404655:	8a 0e                	mov    (%esi),%cl
404657:	80 f9 ff             	cmp    $0xff,%cl
40465a:	0f 84 57 f7 06 00    	je     0x473db7
404660:	80 f9 fe             	cmp    $0xfe,%cl
404663:	74 53                	je     0x4046b8
404665:	6a 03                	push   $0x3
404667:	59                   	pop    %ecx
404668:	3b c1                	cmp    %ecx,%eax
40466a:	72 09                	jb     0x404675
40466c:	80 3e ef             	cmpb   $0xef,(%esi)
40466f:	0f 84 5b f7 06 00    	je     0x473dd0
404675:	85 c0                	test   %eax,%eax
404677:	74 1b                	je     0x404694
404679:	39 5f 2c             	cmp    %ebx,0x2c(%edi)
40467c:	75 16                	jne    0x404694
40467e:	3d 00 00 01 00       	cmp    $0x10000,%eax
404683:	0f 84 6a f7 06 00    	je     0x473df3
404689:	50                   	push   %eax
40468a:	56                   	push   %esi
40468b:	e8 d0 01 00 00       	call   0x404860
404690:	84 c0                	test   %al,%al
404692:	75 32                	jne    0x4046c6
404694:	53                   	push   %ebx
404695:	ff 75 fc             	push   -0x4(%ebp)
404698:	8b cf                	mov    %edi,%ecx
40469a:	ff 75 f8             	push   -0x8(%ebp)
40469d:	e8 2c 00 00 00       	call   0x4046ce
4046a2:	8d 4d f0             	lea    -0x10(%ebp),%ecx
4046a5:	e8 38 01 00 00       	call   0x4047e2
4046aa:	5e                   	pop    %esi
4046ab:	5f                   	pop    %edi
4046ac:	5b                   	pop    %ebx
4046ad:	c9                   	leave
4046ae:	c3                   	ret
4046af:	a8 01                	test   $0x1,%al
4046b1:	74 f8                	je     0x4046ab
4046b3:	e9 3d ff ff ff       	jmp    0x4045f5
4046b8:	80 7e 01 ff          	cmpb   $0xff,0x1(%esi)
4046bc:	75 a7                	jne    0x404665
4046be:	89 57 2c             	mov    %edx,0x2c(%edi)
4046c1:	e9 02 f7 06 00       	jmp    0x473dc8
4046c6:	89 5f 30             	mov    %ebx,0x30(%edi)
4046c9:	e9 19 f7 06 00       	jmp    0x473de7
4046ce:	55                   	push   %ebp
4046cf:	8b ec                	mov    %esp,%ebp
4046d1:	8b 55 0c             	mov    0xc(%ebp),%edx
4046d4:	83 ec 0c             	sub    $0xc,%esp
4046d7:	53                   	push   %ebx
4046d8:	8b 5d 10             	mov    0x10(%ebp),%ebx
4046db:	56                   	push   %esi
4046dc:	8b 75 08             	mov    0x8(%ebp),%esi
4046df:	57                   	push   %edi
4046e0:	8b f9                	mov    %ecx,%edi
4046e2:	83 7f 08 00          	cmpl   $0x0,0x8(%edi)
4046e6:	74 74                	je     0x40475c
4046e8:	83 fb 01             	cmp    $0x1,%ebx
4046eb:	74 04                	je     0x4046f1
4046ed:	85 db                	test   %ebx,%ebx
4046ef:	75 6b                	jne    0x40475c
4046f1:	8b ca                	mov    %edx,%ecx
4046f3:	89 55 f8             	mov    %edx,-0x8(%ebp)
4046f6:	83 fb 01             	cmp    $0x1,%ebx
4046f9:	0f 84 d1 f9 06 00    	je     0x4740d0
4046ff:	8b 47 0c             	mov    0xc(%edi),%eax
404702:	8b 5f 10             	mov    0x10(%edi),%ebx
404705:	99                   	cltd
404706:	2b d8                	sub    %eax,%ebx
404708:	8b 47 14             	mov    0x14(%edi),%eax
40470b:	1b c2                	sbb    %edx,%eax
40470d:	89 5d fc             	mov    %ebx,-0x4(%ebp)
404710:	8b 5d 10             	mov    0x10(%ebp),%ebx
404713:	89 45 f4             	mov    %eax,-0xc(%ebp)
404716:	3b c8                	cmp    %eax,%ecx
404718:	7c 76                	jl     0x404790
40471a:	7f 05                	jg     0x404721
40471c:	3b 75 fc             	cmp    -0x4(%ebp),%esi
40471f:	72 6f                	jb     0x404790
404721:	8b 47 08             	mov    0x8(%edi),%eax
404724:	99                   	cltd
404725:	89 45 10             	mov    %eax,0x10(%ebp)
404728:	8b 45 fc             	mov    -0x4(%ebp),%eax
40472b:	01 45 10             	add    %eax,0x10(%ebp)
40472e:	13 55 f4             	adc    -0xc(%ebp),%edx
404731:	83 6d 10 01          	subl   $0x1,0x10(%ebp)
404735:	83 da 00             	sbb    $0x0,%edx
404738:	3b ca                	cmp    %edx,%ecx
40473a:	7f 54                	jg     0x404790
40473c:	7c 05                	jl     0x404743
40473e:	3b 75 10             	cmp    0x10(%ebp),%esi
404741:	77 4d                	ja     0x404790
404743:	8b ce                	mov    %esi,%ecx
404745:	2b c8                	sub    %eax,%ecx
404747:	89 4f 0c             	mov    %ecx,0xc(%edi)
40474a:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40474d:	89 77 10             	mov    %esi,0x10(%edi)
404750:	89 4f 14             	mov    %ecx,0x14(%edi)
404753:	b0 01                	mov    $0x1,%al
404755:	5f                   	pop    %edi
404756:	5e                   	pop    %esi
404757:	5b                   	pop    %ebx
404758:	c9                   	leave
404759:	c2 0c 00             	ret    $0xc
40475c:	83 67 08 00          	andl   $0x0,0x8(%edi)
404760:	83 67 0c 00          	andl   $0x0,0xc(%edi)
404764:	83 fb 01             	cmp    $0x1,%ebx
404767:	0f 84 76 f9 06 00    	je     0x4740e3
40476d:	53                   	push   %ebx
40476e:	6a 00                	push   $0x0
404770:	52                   	push   %edx
404771:	56                   	push   %esi
404772:	ff 37                	push   (%edi)
404774:	ff 15 c8 d1 48 00    	call   *0x48d1c8
40477a:	8b cf                	mov    %edi,%ecx
40477c:	8b f0                	mov    %eax,%esi
40477e:	e8 15 00 00 00       	call   0x404798
404783:	85 f6                	test   %esi,%esi
404785:	89 47 10             	mov    %eax,0x10(%edi)
404788:	89 57 14             	mov    %edx,0x14(%edi)
40478b:	0f 95 c0             	setne  %al
40478e:	eb c5                	jmp    0x404755
404790:	8b 75 08             	mov    0x8(%ebp),%esi
404793:	8b 55 0c             	mov    0xc(%ebp),%edx
404796:	eb c4                	jmp    0x40475c
404798:	55                   	push   %ebp
404799:	8b ec                	mov    %esp,%ebp
40479b:	51                   	push   %ecx
40479c:	51                   	push   %ecx
40479d:	6a 01                	push   $0x1
40479f:	8d 45 f8             	lea    -0x8(%ebp),%eax
4047a2:	50                   	push   %eax
4047a3:	6a 00                	push   $0x0
4047a5:	6a 00                	push   $0x0
4047a7:	ff 31                	push   (%ecx)
4047a9:	ff 15 c8 d1 48 00    	call   *0x48d1c8
4047af:	8b 45 f8             	mov    -0x8(%ebp),%eax
4047b2:	8b 55 fc             	mov    -0x4(%ebp),%edx
4047b5:	c9                   	leave
4047b6:	c3                   	ret
4047b7:	55                   	push   %ebp
4047b8:	8b ec                	mov    %esp,%ebp
4047ba:	8b 45 08             	mov    0x8(%ebp),%eax
4047bd:	56                   	push   %esi
4047be:	8b f1                	mov    %ecx,%esi
4047c0:	6a 04                	push   $0x4
4047c2:	89 06                	mov    %eax,(%esi)
4047c4:	e8 21 ad 01 00       	call   0x41f4ea
4047c9:	59                   	pop    %ecx
4047ca:	85 c0                	test   %eax,%eax
4047cc:	74 10                	je     0x4047de
4047ce:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
4047d4:	89 46 04             	mov    %eax,0x4(%esi)
4047d7:	8b c6                	mov    %esi,%eax
4047d9:	5e                   	pop    %esi
4047da:	5d                   	pop    %ebp
4047db:	c2 04 00             	ret    $0x4
4047de:	33 c0                	xor    %eax,%eax
4047e0:	eb f2                	jmp    0x4047d4
4047e2:	56                   	push   %esi
4047e3:	8b f1                	mov    %ecx,%esi
4047e5:	8b 46 04             	mov    0x4(%esi),%eax
4047e8:	ff 08                	decl   (%eax)
4047ea:	75 11                	jne    0x4047fd
4047ec:	ff 76 04             	push   0x4(%esi)
4047ef:	e8 6a ad 01 00       	call   0x41f55e
4047f4:	ff 36                	push   (%esi)
4047f6:	e8 63 ad 01 00       	call   0x41f55e
4047fb:	59                   	pop    %ecx
4047fc:	59                   	pop    %ecx
4047fd:	5e                   	pop    %esi
4047fe:	c3                   	ret
4047ff:	55                   	push   %ebp
404800:	8b ec                	mov    %esp,%ebp
404802:	53                   	push   %ebx
404803:	56                   	push   %esi
404804:	8b f1                	mov    %ecx,%esi
404806:	33 db                	xor    %ebx,%ebx
404808:	83 0e ff             	orl    $0xffffffff,(%esi)
40480b:	f7 45 0c 00 20 00 00 	testl  $0x2000,0xc(%ebp)
404812:	0f 84 56 f8 06 00    	je     0x47406e
404818:	53                   	push   %ebx
404819:	68 80 00 00 00       	push   $0x80
40481e:	6a 03                	push   $0x3
404820:	53                   	push   %ebx
404821:	6a 07                	push   $0x7
404823:	68 00 00 00 80       	push   $0x80000000
404828:	8b 45 08             	mov    0x8(%ebp),%eax
40482b:	ff 30                	push   (%eax)
40482d:	ff 15 c4 d1 48 00    	call   *0x48d1c4
404833:	89 06                	mov    %eax,(%esi)
404835:	83 3e ff             	cmpl   $0xffffffff,(%esi)
404838:	74 03                	je     0x40483d
40483a:	33 db                	xor    %ebx,%ebx
40483c:	43                   	inc    %ebx
40483d:	5e                   	pop    %esi
40483e:	8a c3                	mov    %bl,%al
404840:	5b                   	pop    %ebx
404841:	5d                   	pop    %ebp
404842:	c2 08 00             	ret    $0x8
404845:	56                   	push   %esi
404846:	8b f1                	mov    %ecx,%esi
404848:	57                   	push   %edi
404849:	8b 4e 28             	mov    0x28(%esi),%ecx
40484c:	f6 c1 03             	test   $0x3,%cl
40484f:	0f 85 ab f8 06 00    	jne    0x474100
404855:	5f                   	pop    %edi
404856:	5e                   	pop    %esi
404857:	c3                   	ret
404858:	cc                   	int3
404859:	cc                   	int3
40485a:	cc                   	int3
40485b:	cc                   	int3
40485c:	cc                   	int3
40485d:	cc                   	int3
40485e:	cc                   	int3
40485f:	cc                   	int3
404860:	55                   	push   %ebp
404861:	8b ec                	mov    %esp,%ebp
404863:	8b 55 0c             	mov    0xc(%ebp),%edx
404866:	53                   	push   %ebx
404867:	33 c0                	xor    %eax,%eax
404869:	56                   	push   %esi
40486a:	b7 01                	mov    $0x1,%bh
40486c:	85 d2                	test   %edx,%edx
40486e:	74 14                	je     0x404884
404870:	8b 75 08             	mov    0x8(%ebp),%esi
404873:	8a 0c 30             	mov    (%eax,%esi,1),%cl
404876:	80 f9 7f             	cmp    $0x7f,%cl
404879:	77 11                	ja     0x40488c
40487b:	40                   	inc    %eax
40487c:	3b c2                	cmp    %edx,%eax
40487e:	72 f3                	jb     0x404873
404880:	84 ff                	test   %bh,%bh
404882:	74 2b                	je     0x4048af
404884:	5e                   	pop    %esi
404885:	33 c0                	xor    %eax,%eax
404887:	5b                   	pop    %ebx
404888:	5d                   	pop    %ebp
404889:	c2 08 00             	ret    $0x8
40488c:	80 f9 df             	cmp    $0xdf,%cl
40488f:	0f 86 82 f7 06 00    	jbe    0x474017
404895:	80 f9 ef             	cmp    $0xef,%cl
404898:	0f 86 89 f7 06 00    	jbe    0x474027
40489e:	80 f9 f4             	cmp    $0xf4,%cl
4048a1:	0f 86 90 f7 06 00    	jbe    0x474037
4048a7:	5e                   	pop    %esi
4048a8:	32 c0                	xor    %al,%al
4048aa:	5b                   	pop    %ebx
4048ab:	5d                   	pop    %ebp
4048ac:	c2 08 00             	ret    $0x8
4048af:	5e                   	pop    %esi
4048b0:	b8 01 00 00 00       	mov    $0x1,%eax
4048b5:	5b                   	pop    %ebx
4048b6:	5d                   	pop    %ebp
4048b7:	c2 08 00             	ret    $0x8
4048ba:	56                   	push   %esi
4048bb:	8b f1                	mov    %ecx,%esi
4048bd:	e8 6f 00 00 00       	call   0x404931
4048c2:	8d 4e 18             	lea    0x18(%esi),%ecx
4048c5:	e8 2d 8f 00 00       	call   0x40d7f7
4048ca:	8b ce                	mov    %esi,%ecx
4048cc:	e8 36 00 00 00       	call   0x404907
4048d1:	83 66 2c 00          	andl   $0x0,0x2c(%esi)
4048d5:	83 66 30 00          	andl   $0x0,0x30(%esi)
4048d9:	8b c6                	mov    %esi,%eax
4048db:	5e                   	pop    %esi
4048dc:	c3                   	ret
4048dd:	56                   	push   %esi