4056f6:	56                   	push   %esi
4056f7:	57                   	push   %edi
4056f8:	3b cb                	cmp    %ebx,%ecx
4056fa:	74 07                	je     0x405703
4056fc:	8b 7d 0c             	mov    0xc(%ebp),%edi
4056ff:	3b fb                	cmp    %ebx,%edi
405701:	77 1b                	ja     0x40571e
405703:	e8 51 f4 ff ff       	call   0x404b59
405708:	6a 16                	push   $0x16
40570a:	5e                   	pop    %esi
40570b:	89 30                	mov    %esi,(%eax)
40570d:	53                   	push   %ebx
40570e:	53                   	push   %ebx
40570f:	53                   	push   %ebx
405710:	53                   	push   %ebx
405711:	53                   	push   %ebx
405712:	e8 da f3 ff ff       	call   0x404af1
405717:	83 c4 14             	add    $0x14,%esp
40571a:	8b c6                	mov    %esi,%eax
40571c:	eb 30                	jmp    0x40574e
40571e:	8b 75 10             	mov    0x10(%ebp),%esi
405721:	3b f3                	cmp    %ebx,%esi
405723:	75 04                	jne    0x405729
405725:	88 19                	mov    %bl,(%ecx)
405727:	eb da                	jmp    0x405703
405729:	8b d1                	mov    %ecx,%edx
40572b:	8a 06                	mov    (%esi),%al
40572d:	88 02                	mov    %al,(%edx)
40572f:	42                   	inc    %edx
405730:	46                   	inc    %esi
405731:	3a c3                	cmp    %bl,%al
405733:	74 03                	je     0x405738
405735:	4f                   	dec    %edi
405736:	75 f3                	jne    0x40572b
405738:	3b fb                	cmp    %ebx,%edi
40573a:	75 10                	jne    0x40574c
40573c:	88 19                	mov    %bl,(%ecx)
40573e:	e8 16 f4 ff ff       	call   0x404b59
405743:	6a 22                	push   $0x22
405745:	59                   	pop    %ecx
405746:	89 08                	mov    %ecx,(%eax)
405748:	8b f1                	mov    %ecx,%esi
40574a:	eb c1                	jmp    0x40570d
40574c:	33 c0                	xor    %eax,%eax
40574e:	5f                   	pop    %edi
40574f:	5e                   	pop    %esi
405750:	5b                   	pop    %ebx
405751:	5d                   	pop    %ebp
405752:	c3                   	ret
405753:	8b ff                	mov    %edi,%edi
405755:	55                   	push   %ebp
405756:	8b ec                	mov    %esp,%ebp
405758:	8b 4d 08             	mov    0x8(%ebp),%ecx
40575b:	56                   	push   %esi
40575c:	33 f6                	xor    %esi,%esi
40575e:	3b ce                	cmp    %esi,%ecx
405760:	7c 1e                	jl     0x405780
405762:	83 f9 02             	cmp    $0x2,%ecx
405765:	7e 0c                	jle    0x405773
405767:	83 f9 03             	cmp    $0x3,%ecx
40576a:	75 14                	jne    0x405780
40576c:	a1 48 c5 45 00       	mov    0x45c548,%eax
405771:	eb 28                	jmp    0x40579b
405773:	a1 48 c5 45 00       	mov    0x45c548,%eax
405778:	89 0d 48 c5 45 00    	mov    %ecx,0x45c548
40577e:	eb 1b                	jmp    0x40579b
405780:	e8 d4 f3 ff ff       	call   0x404b59
405785:	56                   	push   %esi
405786:	56                   	push   %esi
405787:	56                   	push   %esi
405788:	56                   	push   %esi
405789:	56                   	push   %esi
40578a:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
405790:	e8 5c f3 ff ff       	call   0x404af1
405795:	83 c4 14             	add    $0x14,%esp
405798:	83 c8 ff             	or     $0xffffffff,%eax
40579b:	5e                   	pop    %esi
40579c:	5d                   	pop    %ebp
40579d:	c3                   	ret
40579e:	6a 0c                	push   $0xc
4057a0:	68 78 a6 40 00       	push   $0x40a678
4057a5:	e8 ca e4 ff ff       	call   0x403c74
4057aa:	8b 75 08             	mov    0x8(%ebp),%esi
4057ad:	85 f6                	test   %esi,%esi
4057af:	74 75                	je     0x405826
4057b1:	83 3d e4 0a 89 00 03 	cmpl   $0x3,0x890ae4
4057b8:	75 43                	jne    0x4057fd
4057ba:	6a 04                	push   $0x4
4057bc:	e8 4a f6 ff ff       	call   0x404e0b
4057c1:	59                   	pop    %ecx
4057c2:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4057c6:	56                   	push   %esi
4057c7:	e8 39 05 00 00       	call   0x405d05
4057cc:	59                   	pop    %ecx
4057cd:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4057d0:	85 c0                	test   %eax,%eax
4057d2:	74 09                	je     0x4057dd
4057d4:	56                   	push   %esi
4057d5:	50                   	push   %eax
4057d6:	e8 5a 05 00 00       	call   0x405d35
4057db:	59                   	pop    %ecx
4057dc:	59                   	pop    %ecx
4057dd:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4057e4:	e8 0b 00 00 00       	call   0x4057f4
4057e9:	83 7d e4 00          	cmpl   $0x0,-0x1c(%ebp)
4057ed:	75 37                	jne    0x405826
4057ef:	ff 75 08             	push   0x8(%ebp)
4057f2:	eb 0a                	jmp    0x4057fe
4057f4:	6a 04                	push   $0x4
4057f6:	e8 36 f5 ff ff       	call   0x404d31
4057fb:	59                   	pop    %ecx
4057fc:	c3                   	ret
4057fd:	56                   	push   %esi
4057fe:	6a 00                	push   $0x0
405800:	ff 35 dc cd 45 00    	push   0x45cddc
405806:	ff 15 d8 10 40 00    	call   *0x4010d8
40580c:	85 c0                	test   %eax,%eax
40580e:	75 16                	jne    0x405826
405810:	e8 44 f3 ff ff       	call   0x404b59
405815:	8b f0                	mov    %eax,%esi
405817:	ff 15 c8 10 40 00    	call   *0x4010c8
40581d:	50                   	push   %eax
40581e:	e8 f4 f2 ff ff       	call   0x404b17
405823:	89 06                	mov    %eax,(%esi)
405825:	59                   	pop    %ecx
405826:	e8 8e e4 ff ff       	call   0x403cb9
40582b:	c3                   	ret
40582c:	8b ff                	mov    %edi,%edi
40582e:	55                   	push   %ebp
40582f:	8b ec                	mov    %esp,%ebp
405831:	8b 55 08             	mov    0x8(%ebp),%edx
405834:	53                   	push   %ebx
405835:	56                   	push   %esi
405836:	57                   	push   %edi
405837:	33 ff                	xor    %edi,%edi
405839:	3b d7                	cmp    %edi,%edx
40583b:	74 07                	je     0x405844
40583d:	8b 5d 0c             	mov    0xc(%ebp),%ebx
405840:	3b df                	cmp    %edi,%ebx
405842:	77 1e                	ja     0x405862
405844:	e8 10 f3 ff ff       	call   0x404b59
405849:	6a 16                	push   $0x16
40584b:	5e                   	pop    %esi
40584c:	89 30                	mov    %esi,(%eax)
40584e:	57                   	push   %edi
40584f:	57                   	push   %edi
405850:	57                   	push   %edi
405851:	57                   	push   %edi
405852:	57                   	push   %edi
405853:	e8 99 f2 ff ff       	call   0x404af1
405858:	83 c4 14             	add    $0x14,%esp
40585b:	8b c6                	mov    %esi,%eax
40585d:	5f                   	pop    %edi
40585e:	5e                   	pop    %esi
40585f:	5b                   	pop    %ebx
405860:	5d                   	pop    %ebp
405861:	c3                   	ret
405862:	8b 75 10             	mov    0x10(%ebp),%esi
405865:	3b f7                	cmp    %edi,%esi
405867:	75 07                	jne    0x405870
405869:	33 c0                	xor    %eax,%eax
40586b:	66 89 02             	mov    %ax,(%edx)
40586e:	eb d4                	jmp    0x405844
405870:	8b ca                	mov    %edx,%ecx
405872:	0f b7 06             	movzwl (%esi),%eax
405875:	66 89 01             	mov    %ax,(%ecx)
405878:	41                   	inc    %ecx
405879:	41                   	inc    %ecx
40587a:	46                   	inc    %esi
40587b:	46                   	inc    %esi
40587c:	66 3b c7             	cmp    %di,%ax
40587f:	74 03                	je     0x405884
405881:	4b                   	dec    %ebx
405882:	75 ee                	jne    0x405872
405884:	33 c0                	xor    %eax,%eax
405886:	3b df                	cmp    %edi,%ebx
405888:	75 d3                	jne    0x40585d
40588a:	66 89 02             	mov    %ax,(%edx)
40588d:	e8 c7 f2 ff ff       	call   0x404b59
405892:	6a 22                	push   $0x22
405894:	59                   	pop    %ecx
405895:	89 08                	mov    %ecx,(%eax)
405897:	8b f1                	mov    %ecx,%esi
405899:	eb b3                	jmp    0x40584e
40589b:	8b ff                	mov    %edi,%edi
40589d:	55                   	push   %ebp
40589e:	8b ec                	mov    %esp,%ebp
4058a0:	56                   	push   %esi
4058a1:	57                   	push   %edi
4058a2:	33 f6                	xor    %esi,%esi
4058a4:	ff 75 08             	push   0x8(%ebp)
4058a7:	e8 ce 1c 00 00       	call   0x40757a
4058ac:	8b f8                	mov    %eax,%edi
4058ae:	59                   	pop    %ecx
4058af:	85 ff                	test   %edi,%edi
4058b1:	75 27                	jne    0x4058da
4058b3:	39 05 b8 cf 45 00    	cmp    %eax,0x45cfb8
4058b9:	76 1f                	jbe    0x4058da
4058bb:	56                   	push   %esi
4058bc:	ff 15 20 10 40 00    	call   *0x401020
4058c2:	8d 86 e8 03 00 00    	lea    0x3e8(%esi),%eax
4058c8:	3b 05 b8 cf 45 00    	cmp    0x45cfb8,%eax
4058ce:	76 03                	jbe    0x4058d3
4058d0:	83 c8 ff             	or     $0xffffffff,%eax
4058d3:	8b f0                	mov    %eax,%esi
4058d5:	83 f8 ff             	cmp    $0xffffffff,%eax
4058d8:	75 ca                	jne    0x4058a4
4058da:	8b c7                	mov    %edi,%eax
4058dc:	5f                   	pop    %edi
4058dd:	5e                   	pop    %esi
4058de:	5d                   	pop    %ebp
4058df:	c3                   	ret
4058e0:	8b ff                	mov    %edi,%edi
4058e2:	55                   	push   %ebp
4058e3:	8b ec                	mov    %esp,%ebp
4058e5:	56                   	push   %esi
4058e6:	57                   	push   %edi
4058e7:	33 f6                	xor    %esi,%esi
4058e9:	6a 00                	push   $0x0
4058eb:	ff 75 0c             	push   0xc(%ebp)
4058ee:	ff 75 08             	push   0x8(%ebp)
4058f1:	e8 4e 1d 00 00       	call   0x407644
4058f6:	8b f8                	mov    %eax,%edi
4058f8:	83 c4 0c             	add    $0xc,%esp
4058fb:	85 ff                	test   %edi,%edi
4058fd:	75 27                	jne    0x405926
4058ff:	39 05 b8 cf 45 00    	cmp    %eax,0x45cfb8
405905:	76 1f                	jbe    0x405926
405907:	56                   	push   %esi
405908:	ff 15 20 10 40 00    	call   *0x401020
40590e:	8d 86 e8 03 00 00    	lea    0x3e8(%esi),%eax
405914:	3b 05 b8 cf 45 00    	cmp    0x45cfb8,%eax
40591a:	76 03                	jbe    0x40591f
40591c:	83 c8 ff             	or     $0xffffffff,%eax
40591f:	8b f0                	mov    %eax,%esi
405921:	83 f8 ff             	cmp    $0xffffffff,%eax
405924:	75 c3                	jne    0x4058e9
405926:	8b c7                	mov    %edi,%eax
405928:	5f                   	pop    %edi
405929:	5e                   	pop    %esi
40592a:	5d                   	pop    %ebp
40592b:	c3                   	ret
40592c:	8b ff                	mov    %edi,%edi
40592e:	55                   	push   %ebp
40592f:	8b ec                	mov    %esp,%ebp
405931:	56                   	push   %esi
405932:	57                   	push   %edi
405933:	33 f6                	xor    %esi,%esi
405935:	ff 75 0c             	push   0xc(%ebp)
405938:	ff 75 08             	push   0x8(%ebp)
40593b:	e8 22 1e 00 00       	call   0x407762
405940:	8b f8                	mov    %eax,%edi
405942:	59                   	pop    %ecx
405943:	59                   	pop    %ecx
405944:	85 ff                	test   %edi,%edi
405946:	75 2c                	jne    0x405974
405948:	39 45 0c             	cmp    %eax,0xc(%ebp)
40594b:	74 27                	je     0x405974
40594d:	39 05 b8 cf 45 00    	cmp    %eax,0x45cfb8
405953:	76 1f                	jbe    0x405974
405955:	56                   	push   %esi
405956:	ff 15 20 10 40 00    	call   *0x401020
40595c:	8d 86 e8 03 00 00    	lea    0x3e8(%esi),%eax
405962:	3b 05 b8 cf 45 00    	cmp    0x45cfb8,%eax
405968:	76 03                	jbe    0x40596d
40596a:	83 c8 ff             	or     $0xffffffff,%eax
40596d:	8b f0                	mov    %eax,%esi
40596f:	83 f8 ff             	cmp    $0xffffffff,%eax
405972:	75 c1                	jne    0x405935
405974:	8b c7                	mov    %edi,%eax
405976:	5f                   	pop    %edi
405977:	5e                   	pop    %esi
405978:	5d                   	pop    %ebp
405979:	c3                   	ret
40597a:	8b ff                	mov    %edi,%edi
40597c:	55                   	push   %ebp
40597d:	8b ec                	mov    %esp,%ebp
40597f:	8b 45 08             	mov    0x8(%ebp),%eax
405982:	66 8b 08             	mov    (%eax),%cx
405985:	40                   	inc    %eax
405986:	40                   	inc    %eax
405987:	66 85 c9             	test   %cx,%cx
40598a:	75 f6                	jne    0x405982
40598c:	2b 45 08             	sub    0x8(%ebp),%eax
40598f:	d1 f8                	sar    $1,%eax
405991:	48                   	dec    %eax
405992:	5d                   	pop    %ebp
405993:	c3                   	ret
405994:	cc                   	int3
405995:	cc                   	int3
405996:	cc                   	int3
405997:	cc                   	int3
405998:	cc                   	int3
405999:	cc                   	int3
40599a:	cc                   	int3
40599b:	cc                   	int3
40599c:	cc                   	int3
40599d:	cc                   	int3
40599e:	cc                   	int3
40599f:	cc                   	int3
4059a0:	55                   	push   %ebp
4059a1:	8b ec                	mov    %esp,%ebp
4059a3:	57                   	push   %edi
4059a4:	56                   	push   %esi
4059a5:	8b 75 0c             	mov    0xc(%ebp),%esi
4059a8:	8b 4d 10             	mov    0x10(%ebp),%ecx
4059ab:	8b 7d 08             	mov    0x8(%ebp),%edi
4059ae:	8b c1                	mov    %ecx,%eax
4059b0:	8b d1                	mov    %ecx,%edx
4059b2:	03 c6                	add    %esi,%eax
4059b4:	3b fe                	cmp    %esi,%edi
4059b6:	76 08                	jbe    0x4059c0
4059b8:	3b f8                	cmp    %eax,%edi
4059ba:	0f 82 a4 01 00 00    	jb     0x405b64
4059c0:	81 f9 00 01 00 00    	cmp    $0x100,%ecx
4059c6:	72 1f                	jb     0x4059e7
4059c8:	83 3d c0 0a 89 00 00 	cmpl   $0x0,0x890ac0
4059cf:	74 16                	je     0x4059e7
4059d1:	57                   	push   %edi
4059d2:	56                   	push   %esi
4059d3:	83 e7 0f             	and    $0xf,%edi
4059d6:	83 e6 0f             	and    $0xf,%esi
4059d9:	3b fe                	cmp    %esi,%edi
4059db:	5e                   	pop    %esi
4059dc:	5f                   	pop    %edi
4059dd:	75 08                	jne    0x4059e7
4059df:	5e                   	pop    %esi
4059e0:	5f                   	pop    %edi
4059e1:	5d                   	pop    %ebp
4059e2:	e9 1d 20 00 00       	jmp    0x407a04
4059e7:	f7 c7 03 00 00 00    	test   $0x3,%edi
4059ed:	75 15                	jne    0x405a04
4059ef:	c1 e9 02             	shr    $0x2,%ecx
4059f2:	83 e2 03             	and    $0x3,%edx
4059f5:	83 f9 08             	cmp    $0x8,%ecx
4059f8:	72 2a                	jb     0x405a24
4059fa:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
4059fc:	ff 24 95 14 5b 40 00 	jmp    *0x405b14(,%edx,4)
405a03:	90                   	nop
405a04:	8b c7                	mov    %edi,%eax
405a06:	ba 03 00 00 00       	mov    $0x3,%edx
405a0b:	83 e9 04             	sub    $0x4,%ecx
405a0e:	72 0c                	jb     0x405a1c
405a10:	83 e0 03             	and    $0x3,%eax
405a13:	03 c8                	add    %eax,%ecx
405a15:	ff 24 85 28 5a 40 00 	jmp    *0x405a28(,%eax,4)
405a1c:	ff 24 8d 24 5b 40 00 	jmp    *0x405b24(,%ecx,4)
405a23:	90                   	nop
405a24:	ff 24 8d a8 5a 40 00 	jmp    *0x405aa8(,%ecx,4)
405a2b:	90                   	nop