405665:	c7 45 f8 01 00 00 00 	movl   $0x1,-0x8(%ebp)
40566c:	e8 3f 00 00 00       	call   0x4056b0
405671:	85 c0                	test   %eax,%eax
405673:	78 2e                	js     0x4056a3
405675:	8b 4f 04             	mov    0x4(%edi),%ecx
405678:	8b 45 f8             	mov    -0x8(%ebp),%eax
40567b:	8b 04 81             	mov    (%ecx,%eax,4),%eax
40567e:	66 83 78 08 7f       	cmpw   $0x7f,0x8(%eax)
405683:	0f 85 2c 2f 07 00    	jne    0x4785b5
405689:	80 7d ff 00          	cmpb   $0x0,-0x1(%ebp)
40568d:	8d 8e 60 01 00 00    	lea    0x160(%esi),%ecx
405693:	75 14                	jne    0x4056a9
405695:	e8 aa 00 00 00       	call   0x405744
40569a:	8b 48 04             	mov    0x4(%eax),%ecx
40569d:	8b 45 0c             	mov    0xc(%ebp),%eax
4056a0:	41                   	inc    %ecx
4056a1:	89 08                	mov    %ecx,(%eax)
4056a3:	5f                   	pop    %edi
4056a4:	5e                   	pop    %esi
4056a5:	c9                   	leave
4056a6:	c2 08 00             	ret    $0x8
4056a9:	e8 74 87 00 00       	call   0x40de22
4056ae:	eb f3                	jmp    0x4056a3
4056b0:	55                   	push   %ebp
4056b1:	8b ec                	mov    %esp,%ebp
4056b3:	83 ec 18             	sub    $0x18,%esp
4056b6:	83 65 ec 00          	andl   $0x0,-0x14(%ebp)
4056ba:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
4056be:	56                   	push   %esi
4056bf:	83 ce ff             	or     $0xffffffff,%esi
4056c2:	56                   	push   %esi
4056c3:	8d 45 ec             	lea    -0x14(%ebp),%eax
4056c6:	50                   	push   %eax
4056c7:	ff 75 0c             	push   0xc(%ebp)
4056ca:	c7 45 f8 01 00 00 00 	movl   $0x1,-0x8(%ebp)
4056d1:	ff 75 08             	push   0x8(%ebp)
4056d4:	e8 57 a7 00 00       	call   0x40fe30
4056d9:	85 c0                	test   %eax,%eax
4056db:	78 14                	js     0x4056f1
4056dd:	8d 4d ec             	lea    -0x14(%ebp),%ecx
4056e0:	e8 1b 00 00 00       	call   0x405700
4056e5:	84 c0                	test   %al,%al
4056e7:	8b 45 10             	mov    0x10(%ebp),%eax
4056ea:	0f 95 c1             	setne  %cl
4056ed:	88 08                	mov    %cl,(%eax)
4056ef:	33 f6                	xor    %esi,%esi
4056f1:	8d 4d ec             	lea    -0x14(%ebp),%ecx
4056f4:	e8 27 d5 00 00       	call   0x412c20
4056f9:	8b c6                	mov    %esi,%eax
4056fb:	5e                   	pop    %esi
4056fc:	c9                   	leave
4056fd:	c2 0c 00             	ret    $0xc
405700:	8b 41 0c             	mov    0xc(%ecx),%eax
405703:	48                   	dec    %eax
405704:	74 21                	je     0x405727
405706:	48                   	dec    %eax
405707:	0f 84 f2 f6 06 00    	je     0x474dff
40570d:	48                   	dec    %eax
40570e:	0f 84 db f6 06 00    	je     0x474def
405714:	48                   	dec    %eax
405715:	74 20                	je     0x405737
405717:	83 e8 03             	sub    $0x3,%eax
40571a:	74 12                	je     0x40572e
40571c:	48                   	dec    %eax
40571d:	48                   	dec    %eax
40571e:	0f 85 b9 f6 06 00    	jne    0x474ddd
405724:	8a 01                	mov    (%ecx),%al
405726:	c3                   	ret
405727:	83 39 00             	cmpl   $0x0,(%ecx)
40572a:	0f 95 c0             	setne  %al
40572d:	c3                   	ret
40572e:	33 c0                	xor    %eax,%eax
405730:	39 01                	cmp    %eax,(%ecx)
405732:	e9 b4 f6 06 00       	jmp    0x474deb
405737:	8b 49 08             	mov    0x8(%ecx),%ecx
40573a:	33 c0                	xor    %eax,%eax
40573c:	39 41 04             	cmp    %eax,0x4(%ecx)
40573f:	e9 a7 f6 06 00       	jmp    0x474deb
405744:	80 79 09 00          	cmpb   $0x0,0x9(%ecx)
405748:	8b 41 04             	mov    0x4(%ecx),%eax
40574b:	75 01                	jne    0x40574e
40574d:	c3                   	ret
40574e:	8b 40 30             	mov    0x30(%eax),%eax
405751:	c3                   	ret
405752:	55                   	push   %ebp
405753:	8b ec                	mov    %esp,%ebp
405755:	51                   	push   %ecx
405756:	53                   	push   %ebx
405757:	33 db                	xor    %ebx,%ebx
405759:	56                   	push   %esi
40575a:	8b 75 08             	mov    0x8(%ebp),%esi
40575d:	8a d3                	mov    %bl,%dl
40575f:	8b 06                	mov    (%esi),%eax
405761:	50                   	push   %eax
405762:	8d 48 01             	lea    0x1(%eax),%ecx
405765:	89 0e                	mov    %ecx,(%esi)
405767:	e8 dc 06 00 00       	call   0x405e48
40576c:	85 c0                	test   %eax,%eax
40576e:	74 1b                	je     0x40578b
405770:	49                   	dec    %ecx
405771:	89 0d 54 12 4c 00    	mov    %ecx,0x4c1254
405777:	8b 40 04             	mov    0x4(%eax),%eax
40577a:	8b 00                	mov    (%eax),%eax
40577c:	66 39 58 08          	cmp    %bx,0x8(%eax)
405780:	75 05                	jne    0x405787
405782:	83 38 21             	cmpl   $0x21,(%eax)
405785:	74 0d                	je     0x405794
405787:	84 d2                	test   %dl,%dl
405789:	74 d4                	je     0x40575f
40578b:	5e                   	pop    %esi
40578c:	33 c0                	xor    %eax,%eax
40578e:	5b                   	pop    %ebx
40578f:	59                   	pop    %ecx
405790:	5d                   	pop    %ebp
405791:	c2 04 00             	ret    $0x4
405794:	b2 01                	mov    $0x1,%dl
405796:	eb ef                	jmp    0x405787
405798:	55                   	push   %ebp
405799:	8b ec                	mov    %esp,%ebp
40579b:	83 ec 1c             	sub    $0x1c,%esp
40579e:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
4057a1:	53                   	push   %ebx
4057a2:	56                   	push   %esi
4057a3:	57                   	push   %edi
4057a4:	e8 4e 80 00 00       	call   0x40d7f7
4057a9:	33 d2                	xor    %edx,%edx
4057ab:	42                   	inc    %edx
4057ac:	33 f6                	xor    %esi,%esi
4057ae:	52                   	push   %edx
4057af:	42                   	inc    %edx
4057b0:	89 55 f8             	mov    %edx,-0x8(%ebp)
4057b3:	e8 90 06 00 00       	call   0x405e48
4057b8:	8b d8                	mov    %eax,%ebx
4057ba:	85 db                	test   %ebx,%ebx
4057bc:	0f 84 9a 00 00 00    	je     0x40585c
4057c2:	8d 4a ff             	lea    -0x1(%edx),%ecx
4057c5:	89 0d 54 12 4c 00    	mov    %ecx,0x4c1254
4057cb:	8b 4b 04             	mov    0x4(%ebx),%ecx
4057ce:	8b fe                	mov    %esi,%edi
4057d0:	8b 01                	mov    (%ecx),%eax
4057d2:	66 39 70 08          	cmp    %si,0x8(%eax)
4057d6:	75 d6                	jne    0x4057ae
4057d8:	83 38 20             	cmpl   $0x20,(%eax)
4057db:	74 05                	je     0x4057e2
4057dd:	83 38 2b             	cmpl   $0x2b,(%eax)
4057e0:	75 cc                	jne    0x4057ae
4057e2:	83 38 2b             	cmpl   $0x2b,(%eax)
4057e5:	0f 84 91 06 07 00    	je     0x475e7c
4057eb:	33 c0                	xor    %eax,%eax
4057ed:	88 45 fc             	mov    %al,-0x4(%ebp)
4057f0:	8b 44 b9 04          	mov    0x4(%ecx,%edi,4),%eax
4057f4:	83 ce ff             	or     $0xffffffff,%esi
4057f7:	66 83 78 08 34       	cmpw   $0x34,0x8(%eax)
4057fc:	0f 85 82 00 00 00    	jne    0x405884
405802:	ff 30                	push   (%eax)
405804:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
405807:	e8 e1 16 00 00       	call   0x406eed
40580c:	83 ec 10             	sub    $0x10,%esp
40580f:	8b cc                	mov    %esp,%ecx
405811:	ff 75 e4             	push   -0x1c(%ebp)
405814:	e8 00 76 00 00       	call   0x40ce19
405819:	b9 98 12 4c 00       	mov    $0x4c1298,%ecx
40581e:	e8 0d 65 00 00       	call   0x40bd30
405823:	85 c0                	test   %eax,%eax
405825:	75 52                	jne    0x405879
405827:	8b 43 04             	mov    0x4(%ebx),%eax
40582a:	8b 44 b8 08          	mov    0x8(%eax,%edi,4),%eax
40582e:	66 83 78 08 47       	cmpw   $0x47,0x8(%eax)
405833:	75 4f                	jne    0x405884
405835:	ff 75 fc             	push   -0x4(%ebp)
405838:	8d 45 f8             	lea    -0x8(%ebp),%eax
40583b:	50                   	push   %eax
40583c:	8d 45 e4             	lea    -0x1c(%ebp),%eax
40583f:	50                   	push   %eax
405840:	8d 45 f4             	lea    -0xc(%ebp),%eax
405843:	50                   	push   %eax
405844:	83 c7 03             	add    $0x3,%edi
405847:	53                   	push   %ebx
405848:	89 7d f4             	mov    %edi,-0xc(%ebp)
40584b:	e8 81 0e 00 00       	call   0x4066d1
405850:	85 c0                	test   %eax,%eax
405852:	78 16                	js     0x40586a
405854:	8b 55 f8             	mov    -0x8(%ebp),%edx
405857:	e9 50 ff ff ff       	jmp    0x4057ac
40585c:	b9 98 12 4c 00       	mov    $0x4c1298,%ecx
405861:	e8 ac e2 ff ff       	call   0x403b12
405866:	33 c0                	xor    %eax,%eax
405868:	8b f0                	mov    %eax,%esi
40586a:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40586d:	e8 c5 72 00 00       	call   0x40cb37
405872:	5f                   	pop    %edi
405873:	8b c6                	mov    %esi,%eax
405875:	5e                   	pop    %esi
405876:	5b                   	pop    %ebx
405877:	c9                   	leave
405878:	c3                   	ret
405879:	56                   	push   %esi
40587a:	68 84 00 00 00       	push   $0x84
40587f:	e9 04 06 07 00       	jmp    0x475e88
405884:	56                   	push   %esi
405885:	6a 69                	push   $0x69
405887:	e9 fc 05 07 00       	jmp    0x475e88
40588c:	55                   	push   %ebp
40588d:	8b ec                	mov    %esp,%ebp
40588f:	83 ec 3c             	sub    $0x3c,%esp
405892:	53                   	push   %ebx
405893:	56                   	push   %esi
405894:	89 4d fc             	mov    %ecx,-0x4(%ebp)
405897:	57                   	push   %edi
405898:	8d 4d c8             	lea    -0x38(%ebp),%ecx
40589b:	e8 cb 05 00 00       	call   0x405e6b
4058a0:	8b 7d 0c             	mov    0xc(%ebp),%edi
4058a3:	33 c0                	xor    %eax,%eax
4058a5:	8b 37                	mov    (%edi),%esi
4058a7:	4e                   	dec    %esi
4058a8:	89 75 0c             	mov    %esi,0xc(%ebp)
4058ab:	89 75 cc             	mov    %esi,-0x34(%ebp)
4058ae:	c7 45 c8 02 00 00 00 	movl   $0x2,-0x38(%ebp)
4058b5:	8b c8                	mov    %eax,%ecx
4058b7:	8a d0                	mov    %al,%dl
4058b9:	33 f6                	xor    %esi,%esi
4058bb:	8b 07                	mov    (%edi),%eax
4058bd:	50                   	push   %eax
4058be:	8d 58 01             	lea    0x1(%eax),%ebx
4058c1:	89 1f                	mov    %ebx,(%edi)
4058c3:	e8 80 05 00 00       	call   0x405e48
4058c8:	85 c0                	test   %eax,%eax
4058ca:	74 27                	je     0x4058f3
4058cc:	84 d2                	test   %dl,%dl
4058ce:	75 23                	jne    0x4058f3
4058d0:	8b 40 04             	mov    0x4(%eax),%eax
4058d3:	8b 00                	mov    (%eax),%eax
4058d5:	66 39 70 08          	cmp    %si,0x8(%eax)
4058d9:	75 e0                	jne    0x4058bb
4058db:	8b 00                	mov    (%eax),%eax
4058dd:	83 e8 0b             	sub    $0xb,%eax
4058e0:	74 43                	je     0x405925
4058e2:	48                   	dec    %eax
4058e3:	75 d6                	jne    0x4058bb
4058e5:	85 c9                	test   %ecx,%ecx
4058e7:	75 39                	jne    0x405922
4058e9:	8d 43 ff             	lea    -0x1(%ebx),%eax
4058ec:	fe c2                	inc    %dl
4058ee:	89 45 d0             	mov    %eax,-0x30(%ebp)
4058f1:	eb c8                	jmp    0x4058bb
4058f3:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4058f6:	8d 45 c8             	lea    -0x38(%ebp),%eax
4058f9:	50                   	push   %eax
4058fa:	81 c1 60 01 00 00    	add    $0x160,%ecx
405900:	e8 80 05 00 00       	call   0x405e85
405905:	8b 45 0c             	mov    0xc(%ebp),%eax
405908:	40                   	inc    %eax
405909:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40590c:	89 07                	mov    %eax,(%edi)
40590e:	e8 0d d3 00 00       	call   0x412c20
405913:	8d 4d d8             	lea    -0x28(%ebp),%ecx
405916:	e8 05 d3 00 00       	call   0x412c20
40591b:	5f                   	pop    %edi
40591c:	5e                   	pop    %esi
40591d:	5b                   	pop    %ebx
40591e:	c9                   	leave
40591f:	c2 08 00             	ret    $0x8
405922:	49                   	dec    %ecx
405923:	eb 96                	jmp    0x4058bb
405925:	41                   	inc    %ecx
405926:	eb 93                	jmp    0x4058bb
405928:	55                   	push   %ebp
405929:	8b ec                	mov    %esp,%ebp
40592b:	81 ec 8c 00 00 00    	sub    $0x8c,%esp
405931:	33 c0                	xor    %eax,%eax
405933:	53                   	push   %ebx
405934:	40                   	inc    %eax
405935:	33 db                	xor    %ebx,%ebx
405937:	56                   	push   %esi
405938:	8b cb                	mov    %ebx,%ecx
40593a:	8b d3                	mov    %ebx,%edx
40593c:	57                   	push   %edi
40593d:	89 45 f4             	mov    %eax,-0xc(%ebp)
405940:	89 5d e8             	mov    %ebx,-0x18(%ebp)
405943:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
405946:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
405949:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40594c:	89 55 fc             	mov    %edx,-0x4(%ebp)
40594f:	89 5d ec             	mov    %ebx,-0x14(%ebp)
405952:	89 5d e0             	mov    %ebx,-0x20(%ebp)
405955:	89 5d dc             	mov    %ebx,-0x24(%ebp)
405958:	89 5d c0             	mov    %ebx,-0x40(%ebp)
40595b:	89 5d c4             	mov    %ebx,-0x3c(%ebp)
40595e:	66 89 5d c8          	mov    %bx,-0x38(%ebp)
405962:	89 9d 78 ff ff ff    	mov    %ebx,-0x88(%ebp)
405968:	89 9d 7c ff ff ff    	mov    %ebx,-0x84(%ebp)
40596e:	66 89 5d 80          	mov    %bx,-0x80(%ebp)
405972:	89 5d b4             	mov    %ebx,-0x4c(%ebp)
405975:	89 5d b8             	mov    %ebx,-0x48(%ebp)
405978:	66 89 5d bc          	mov    %bx,-0x44(%ebp)
40597c:	89 5d 84             	mov    %ebx,-0x7c(%ebp)
40597f:	89 5d 88             	mov    %ebx,-0x78(%ebp)
405982:	66 89 5d 8c          	mov    %bx,-0x74(%ebp)
405986:	89 5d 9c             	mov    %ebx,-0x64(%ebp)
405989:	89 5d a0             	mov    %ebx,-0x60(%ebp)
40598c:	66 89 5d a4          	mov    %bx,-0x5c(%ebp)
405990:	89 5d a8             	mov    %ebx,-0x58(%ebp)
405993:	89 5d ac             	mov    %ebx,-0x54(%ebp)
405996:	66 89 5d b0          	mov    %bx,-0x50(%ebp)
40599a:	89 5d 90             	mov    %ebx,-0x70(%ebp)
40599d:	89 5d 94             	mov    %ebx,-0x6c(%ebp)
4059a0:	66 89 5d 98          	mov    %bx,-0x68(%ebp)
4059a4:	8b f3                	mov    %ebx,%esi
4059a6:	c7 85 74 ff ff ff 7f 	movl   $0x7f,-0x8c(%ebp)
4059ad:	00 00 00
4059b0:	eb 34                	jmp    0x4059e6
4059b2:	8d 52 04             	lea    0x4(%edx),%edx
4059b5:	41                   	inc    %ecx
4059b6:	8b 02                	mov    (%edx),%eax
4059b8:	66 39 78 08          	cmp    %di,0x8(%eax)
4059bc:	75 f4                	jne    0x4059b2
4059be:	8b 55 d0             	mov    -0x30(%ebp),%edx
4059c1:	89 4d d8             	mov    %ecx,-0x28(%ebp)
4059c4:	8b 45 d8             	mov    -0x28(%ebp),%eax
4059c7:	8b 4b 04             	mov    0x4(%ebx),%ecx
4059ca:	83 cf ff             	or     $0xffffffff,%edi
4059cd:	85 c0                	test   %eax,%eax
4059cf:	74 04                	je     0x4059d5
4059d1:	48                   	dec    %eax
4059d2:	89 45 d8             	mov    %eax,-0x28(%ebp)
4059d5:	8b 45 f0             	mov    -0x10(%ebp),%eax
4059d8:	66 85 c0             	test   %ax,%ax
4059db:	8b 45 f4             	mov    -0xc(%ebp),%eax
4059de:	74 5a                	je     0x405a3a
4059e0:	8b 55 fc             	mov    -0x4(%ebp),%edx
4059e3:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4059e6:	50                   	push   %eax
4059e7:	e8 5c 04 00 00       	call   0x405e48
4059ec:	8b d8                	mov    %eax,%ebx
4059ee:	8b 45 f4             	mov    -0xc(%ebp),%eax
4059f1:	40                   	inc    %eax
4059f2:	83 cf ff             	or     $0xffffffff,%edi
4059f5:	89 45 f4             	mov    %eax,-0xc(%ebp)
4059f8:	85 db                	test   %ebx,%ebx
4059fa:	0f 84 7e 02 00 00    	je     0x405c7e
405a00:	8d 48 ff             	lea    -0x1(%eax),%ecx
405a03:	89 0d 54 12 4c 00    	mov    %ecx,0x4c1254
405a09:	8b 4b 04             	mov    0x4(%ebx),%ecx
405a0c:	33 c0                	xor    %eax,%eax
405a0e:	8b d0                	mov    %eax,%edx
405a10:	89 45 d8             	mov    %eax,-0x28(%ebp)
405a13:	8b 01                	mov    (%ecx),%eax
405a15:	89 45 cc             	mov    %eax,-0x34(%ebp)
405a18:	0f b7 40 08          	movzwl 0x8(%eax),%eax
405a1c:	6a 7f                	push   $0x7f