406609:	3b f7                	cmp    %edi,%esi
40660b:	72 b1                	jb     0x4065be
40660d:	eb ed                	jmp    0x4065fc
40660f:	55                   	push   %ebp
406610:	8b ec                	mov    %esp,%ebp
406612:	b8 00 00 01 00       	mov    $0x10000,%eax
406617:	e8 84 92 02 00       	call   0x42f8a0
40661c:	56                   	push   %esi
40661d:	6a 00                	push   $0x0
40661f:	8d 85 00 00 ff ff    	lea    -0x10000(%ebp),%eax
406625:	50                   	push   %eax
406626:	68 ff 7f 00 00       	push   $0x7fff
40662b:	ff 31                	push   (%ecx)
40662d:	8b f2                	mov    %edx,%esi
40662f:	ff 15 14 d3 48 00    	call   *0x48d314
406635:	8d 85 00 00 ff ff    	lea    -0x10000(%ebp),%eax
40663b:	50                   	push   %eax
40663c:	8b ce                	mov    %esi,%ecx
40663e:	e8 20 04 00 00       	call   0x406a63
406643:	68 54 dc 49 00       	push   $0x49dc54
406648:	8b ce                	mov    %esi,%ecx
40664a:	e8 22 ff ff ff       	call   0x406571
40664f:	5e                   	pop    %esi
406650:	c9                   	leave
406651:	c3                   	ret
406652:	55                   	push   %ebp
406653:	8b ec                	mov    %esp,%ebp
406655:	8b 45 08             	mov    0x8(%ebp),%eax
406658:	83 ec 10             	sub    $0x10,%esp
40665b:	8b 40 04             	mov    0x4(%eax),%eax
40665e:	53                   	push   %ebx
40665f:	56                   	push   %esi
406660:	8b 30                	mov    (%eax),%esi
406662:	57                   	push   %edi
406663:	8b ce                	mov    %esi,%ecx
406665:	e8 02 2d 00 00       	call   0x40936c
40666a:	8b 46 08             	mov    0x8(%esi),%eax
40666d:	8b 75 08             	mov    0x8(%ebp),%esi
406670:	8b 58 04             	mov    0x4(%eax),%ebx
406673:	8b 46 04             	mov    0x4(%esi),%eax
406676:	8b 48 04             	mov    0x4(%eax),%ecx
406679:	e8 08 6c 00 00       	call   0x40d286
40667e:	8b f8                	mov    %eax,%edi
406680:	85 ff                	test   %edi,%edi
406682:	78 49                	js     0x4066cd
406684:	3b fb                	cmp    %ebx,%edi
406686:	0f 8f 9c 65 07 00    	jg     0x47cc28
40668c:	2b df                	sub    %edi,%ebx
40668e:	53                   	push   %ebx
40668f:	8d 4d f0             	lea    -0x10(%ebp),%ecx
406692:	e8 78 04 00 00       	call   0x406b0f
406697:	8b 46 04             	mov    0x4(%esi),%eax
40669a:	8b 30                	mov    (%eax),%esi
40669c:	8b ce                	mov    %esi,%ecx
40669e:	e8 c9 2c 00 00       	call   0x40936c
4066a3:	53                   	push   %ebx
4066a4:	57                   	push   %edi
4066a5:	ff 76 08             	push   0x8(%esi)
4066a8:	8d 4d f0             	lea    -0x10(%ebp),%ecx
4066ab:	e8 39 03 00 00       	call   0x4069e9
4066b0:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4066b3:	8d 45 f0             	lea    -0x10(%ebp),%eax
4066b6:	50                   	push   %eax
4066b7:	e8 ac 04 00 00       	call   0x406b68
4066bc:	8d 4d f0             	lea    -0x10(%ebp),%ecx
4066bf:	e8 73 64 00 00       	call   0x40cb37
4066c4:	5f                   	pop    %edi
4066c5:	5e                   	pop    %esi
4066c6:	33 c0                	xor    %eax,%eax
4066c8:	5b                   	pop    %ebx
4066c9:	c9                   	leave
4066ca:	c2 08 00             	ret    $0x8
4066cd:	33 ff                	xor    %edi,%edi
4066cf:	eb b3                	jmp    0x406684
4066d1:	55                   	push   %ebp
4066d2:	8b ec                	mov    %esp,%ebp
4066d4:	83 ec 68             	sub    $0x68,%esp
4066d7:	53                   	push   %ebx
4066d8:	56                   	push   %esi
4066d9:	57                   	push   %edi
4066da:	8d 4d 9c             	lea    -0x64(%ebp),%ecx
4066dd:	e8 15 71 00 00       	call   0x40d7f7
4066e2:	33 c0                	xor    %eax,%eax
4066e4:	89 45 e8             	mov    %eax,-0x18(%ebp)
4066e7:	89 45 d4             	mov    %eax,-0x2c(%ebp)
4066ea:	89 45 d8             	mov    %eax,-0x28(%ebp)
4066ed:	89 45 dc             	mov    %eax,-0x24(%ebp)
4066f0:	89 45 f4             	mov    %eax,-0xc(%ebp)
4066f3:	8b 45 14             	mov    0x14(%ebp),%eax
4066f6:	83 cf ff             	or     $0xffffffff,%edi
4066f9:	8b 00                	mov    (%eax),%eax
4066fb:	48                   	dec    %eax
4066fc:	8d 4d c0             	lea    -0x40(%ebp),%ecx
4066ff:	c7 45 d0 04 dc 49 00 	movl   $0x49dc04,-0x30(%ebp)
406706:	89 7d f0             	mov    %edi,-0x10(%ebp)
406709:	89 45 e0             	mov    %eax,-0x20(%ebp)
40670c:	e8 e6 70 00 00       	call   0x40d7f7
406711:	8b 5d 08             	mov    0x8(%ebp),%ebx
406714:	8b 75 0c             	mov    0xc(%ebp),%esi
406717:	8b 53 04             	mov    0x4(%ebx),%edx
40671a:	8b 06                	mov    (%esi),%eax
40671c:	6a 48                	push   $0x48
40671e:	8b 04 82             	mov    (%edx,%eax,4),%eax
406721:	59                   	pop    %ecx
406722:	0f b7 40 08          	movzwl 0x8(%eax),%eax
406726:	c7 45 e4 7f 00 00 00 	movl   $0x7f,-0x1c(%ebp)
40672d:	66 3b c1             	cmp    %cx,%ax
406730:	0f 84 17 01 00 00    	je     0x40684d
406736:	c7 45 ec 40 00 00 00 	movl   $0x40,-0x14(%ebp)
40673d:	c6 45 fb 00          	movb   $0x0,-0x5(%ebp)
406741:	66 85 c0             	test   %ax,%ax
406744:	0f 84 b8 f6 06 00    	je     0x475e02
40674a:	8b 06                	mov    (%esi),%eax
40674c:	8b 04 82             	mov    (%edx,%eax,4),%eax
40674f:	66 83 78 08 33       	cmpw   $0x33,0x8(%eax)
406754:	0f 85 e3 f6 06 00    	jne    0x475e3d
40675a:	ff 30                	push   (%eax)
40675c:	8d 4d c0             	lea    -0x40(%ebp),%ecx
40675f:	e8 89 07 00 00       	call   0x406eed
406764:	8b 45 d8             	mov    -0x28(%ebp),%eax
406767:	33 ff                	xor    %edi,%edi
406769:	85 c0                	test   %eax,%eax
40676b:	74 22                	je     0x40678f
40676d:	8b 75 d4             	mov    -0x2c(%ebp),%esi
406770:	8b d8                	mov    %eax,%ebx
406772:	8b 0c be             	mov    (%esi,%edi,4),%ecx
406775:	8d 55 c0             	lea    -0x40(%ebp),%edx
406778:	e8 a9 01 00 00       	call   0x406926
40677d:	84 c0                	test   %al,%al
40677f:	75 05                	jne    0x406786
406781:	47                   	inc    %edi
406782:	3b fb                	cmp    %ebx,%edi
406784:	72 ec                	jb     0x406772
406786:	8b 75 0c             	mov    0xc(%ebp),%esi
406789:	8b 5d 08             	mov    0x8(%ebp),%ebx
40678c:	8b 45 d8             	mov    -0x28(%ebp),%eax
40678f:	3b f8                	cmp    %eax,%edi
406791:	0f 85 ba f6 06 00    	jne    0x475e51
406797:	8d 45 c0             	lea    -0x40(%ebp),%eax
40679a:	50                   	push   %eax
40679b:	8d 4d d0             	lea    -0x30(%ebp),%ecx
40679e:	e8 2c fd ff ff       	call   0x4064cf
4067a3:	ff 06                	incl   (%esi)
4067a5:	8b 0e                	mov    (%esi),%ecx
4067a7:	8b 53 04             	mov    0x4(%ebx),%edx
4067aa:	8b 04 8a             	mov    (%edx,%ecx,4),%eax
4067ad:	66 83 78 08 41       	cmpw   $0x41,0x8(%eax)
4067b2:	75 48                	jne    0x4067fc
4067b4:	80 7d fb 00          	cmpb   $0x0,-0x5(%ebp)
4067b8:	75 42                	jne    0x4067fc
4067ba:	8d 41 01             	lea    0x1(%ecx),%eax
4067bd:	33 c9                	xor    %ecx,%ecx
4067bf:	8b f8                	mov    %eax,%edi
4067c1:	89 06                	mov    %eax,(%esi)
4067c3:	8b 04 ba             	mov    (%edx,%edi,4),%eax
4067c6:	0f b7 40 08          	movzwl 0x8(%eax),%eax
4067ca:	66 83 f8 47          	cmp    $0x47,%ax
4067ce:	0f 84 45 01 00 00    	je     0x406919
4067d4:	6a 48                	push   $0x48
4067d6:	5b                   	pop    %ebx
4067d7:	66 3b c3             	cmp    %bx,%ax
4067da:	8b 5d 08             	mov    0x8(%ebp),%ebx
4067dd:	0f 84 2e 01 00 00    	je     0x406911
4067e3:	66 3b 45 ec          	cmp    -0x14(%ebp),%ax
4067e7:	0f 84 e5 00 00 00    	je     0x4068d2
4067ed:	66 3b 45 e4          	cmp    -0x1c(%ebp),%ax
4067f1:	0f 84 28 01 00 00    	je     0x40691f
4067f7:	8d 47 01             	lea    0x1(%edi),%eax
4067fa:	eb c3                	jmp    0x4067bf
4067fc:	8b 7d f0             	mov    -0x10(%ebp),%edi
4067ff:	83 ff ff             	cmp    $0xffffffff,%edi
406802:	0f 85 17 01 00 00    	jne    0x40691f
406808:	8b 45 f4             	mov    -0xc(%ebp),%eax
40680b:	8b 0e                	mov    (%esi),%ecx
40680d:	40                   	inc    %eax
40680e:	89 45 f4             	mov    %eax,-0xc(%ebp)
406811:	8b 04 8a             	mov    (%edx,%ecx,4),%eax
406814:	0f b7 40 08          	movzwl 0x8(%eax),%eax
406818:	66 3b 45 ec          	cmp    -0x14(%ebp),%ax
40681c:	0f 85 d1 00 00 00    	jne    0x4068f3
406822:	41                   	inc    %ecx
406823:	6a 48                	push   $0x48
406825:	8b 04 8a             	mov    (%edx,%ecx,4),%eax
406828:	5f                   	pop    %edi
406829:	66 39 78 08          	cmp    %di,0x8(%eax)
40682d:	8b 7d f0             	mov    -0x10(%ebp),%edi
406830:	89 0e                	mov    %ecx,(%esi)
406832:	0f 84 07 f6 06 00    	je     0x475e3f
406838:	8b 06                	mov    (%esi),%eax
40683a:	6a 48                	push   $0x48
40683c:	8b 04 82             	mov    (%edx,%eax,4),%eax
40683f:	59                   	pop    %ecx
406840:	0f b7 40 08          	movzwl 0x8(%eax),%eax
406844:	66 3b c1             	cmp    %cx,%ax
406847:	0f 85 f0 fe ff ff    	jne    0x40673d
40684d:	ff 06                	incl   (%esi)
40684f:	8b 0e                	mov    (%esi),%ecx
406851:	8b 43 04             	mov    0x4(%ebx),%eax
406854:	6a 7f                	push   $0x7f
406856:	8b 04 88             	mov    (%eax,%ecx,4),%eax
406859:	59                   	pop    %ecx
40685a:	66 39 48 08          	cmp    %cx,0x8(%eax)
40685e:	0f 85 01 f6 06 00    	jne    0x475e65
406864:	8b 5d 14             	mov    0x14(%ebp),%ebx
406867:	53                   	push   %ebx
406868:	e8 e5 ee ff ff       	call   0x405752
40686d:	85 c0                	test   %eax,%eax
40686f:	0f 88 fe f5 06 00    	js     0x475e73
406875:	ff 75 10             	push   0x10(%ebp)
406878:	8d 4d 9c             	lea    -0x64(%ebp),%ecx
40687b:	e8 6d 06 00 00       	call   0x406eed
406880:	8b 45 e0             	mov    -0x20(%ebp),%eax
406883:	89 45 ac             	mov    %eax,-0x54(%ebp)
406886:	8b 03                	mov    (%ebx),%eax
406888:	48                   	dec    %eax
406889:	89 45 b8             	mov    %eax,-0x48(%ebp)
40688c:	8b 45 f4             	mov    -0xc(%ebp),%eax
40688f:	89 45 b0             	mov    %eax,-0x50(%ebp)
406892:	83 ff ff             	cmp    $0xffffffff,%edi
406895:	75 02                	jne    0x406899
406897:	8b f8                	mov    %eax,%edi
406899:	8a 45 18             	mov    0x18(%ebp),%al
40689c:	88 45 bc             	mov    %al,-0x44(%ebp)
40689f:	8d 45 9c             	lea    -0x64(%ebp),%eax
4068a2:	50                   	push   %eax
4068a3:	b9 98 12 4c 00       	mov    $0x4c1298,%ecx
4068a8:	89 7d b4             	mov    %edi,-0x4c(%ebp)
4068ab:	e8 c6 eb ff ff       	call   0x405476
4068b0:	8d 4d c0             	lea    -0x40(%ebp),%ecx
4068b3:	e8 7f 62 00 00       	call   0x40cb37
4068b8:	8d 4d d0             	lea    -0x30(%ebp),%ecx
4068bb:	e8 32 eb ff ff       	call   0x4053f2
4068c0:	8d 4d 9c             	lea    -0x64(%ebp),%ecx
4068c3:	e8 6f 62 00 00       	call   0x40cb37
4068c8:	8b 45 e8             	mov    -0x18(%ebp),%eax
4068cb:	5f                   	pop    %edi
4068cc:	5e                   	pop    %esi
4068cd:	5b                   	pop    %ebx
4068ce:	c9                   	leave
4068cf:	c2 14 00             	ret    $0x14
4068d2:	85 c9                	test   %ecx,%ecx
4068d4:	0f 85 1d ff ff ff    	jne    0x4067f7
4068da:	8b 7d f0             	mov    -0x10(%ebp),%edi
4068dd:	8b 45 f4             	mov    -0xc(%ebp),%eax
4068e0:	83 ff ff             	cmp    $0xffffffff,%edi
4068e3:	0f 85 22 ff ff ff    	jne    0x40680b
4068e9:	8b f8                	mov    %eax,%edi
4068eb:	89 7d f0             	mov    %edi,-0x10(%ebp)
4068ee:	e9 18 ff ff ff       	jmp    0x40680b
4068f3:	6a 48                	push   $0x48
4068f5:	5b                   	pop    %ebx
4068f6:	66 3b c3             	cmp    %bx,%ax
4068f9:	8b 5d 08             	mov    0x8(%ebp),%ebx
4068fc:	0f 85 2c f5 06 00    	jne    0x475e2e
406902:	66 3b 45 ec          	cmp    -0x14(%ebp),%ax
406906:	0f 85 2c ff ff ff    	jne    0x406838
40690c:	e9 11 ff ff ff       	jmp    0x406822
406911:	49                   	dec    %ecx
406912:	78 c6                	js     0x4068da
406914:	e9 de fe ff ff       	jmp    0x4067f7
406919:	41                   	inc    %ecx
40691a:	e9 d8 fe ff ff       	jmp    0x4067f7
40691f:	6a ff                	push   $0xffffffff
406921:	e9 13 f5 06 00       	jmp    0x475e39
406926:	8b 41 04             	mov    0x4(%ecx),%eax
406929:	3b 42 04             	cmp    0x4(%edx),%eax
40692c:	74 03                	je     0x406931
40692e:	32 c0                	xor    %al,%al
406930:	c3                   	ret
406931:	8b 12                	mov    (%edx),%edx
406933:	8b 09                	mov    (%ecx),%ecx
406935:	50                   	push   %eax
406936:	e8 62 55 00 00       	call   0x40be9d
40693b:	59                   	pop    %ecx
40693c:	85 c0                	test   %eax,%eax
40693e:	75 ee                	jne    0x40692e
406940:	b0 01                	mov    $0x1,%al
406942:	c3                   	ret
406943:	55                   	push   %ebp
406944:	8b ec                	mov    %esp,%ebp
406946:	83 ec 10             	sub    $0x10,%esp
406949:	53                   	push   %ebx
40694a:	8b 5d 08             	mov    0x8(%ebp),%ebx
40694d:	56                   	push   %esi
40694e:	8b 43 04             	mov    0x4(%ebx),%eax
406951:	57                   	push   %edi
406952:	8b 30                	mov    (%eax),%esi
406954:	8b ce                	mov    %esi,%ecx
406956:	e8 11 2a 00 00       	call   0x40936c
40695b:	8b 46 08             	mov    0x8(%esi),%eax
40695e:	83 cf ff             	or     $0xffffffff,%edi
406961:	8b 70 04             	mov    0x4(%eax),%esi
406964:	8b 43 04             	mov    0x4(%ebx),%eax
406967:	8b 48 04             	mov    0x4(%eax),%ecx
40696a:	e8 17 69 00 00       	call   0x40d286
40696f:	8d 58 ff             	lea    -0x1(%eax),%ebx
406972:	8b 45 08             	mov    0x8(%ebp),%eax
406975:	83 78 08 02          	cmpl   $0x2,0x8(%eax)
406979:	76 0d                	jbe    0x406988
40697b:	8b 40 04             	mov    0x4(%eax),%eax
40697e:	8b 48 08             	mov    0x8(%eax),%ecx
406981:	e8 00 69 00 00       	call   0x40d286
406986:	8b f8                	mov    %eax,%edi
406988:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40698b:	e8 67 6e 00 00       	call   0x40d7f7
406990:	3b de                	cmp    %esi,%ebx
406992:	7f 51                	jg     0x4069e5
406994:	85 db                	test   %ebx,%ebx
406996:	78 4d                	js     0x4069e5
406998:	85 ff                	test   %edi,%edi
40699a:	0f 88 fd 5b 07 00    	js     0x47c59d
4069a0:	8b c6                	mov    %esi,%eax
4069a2:	2b c3                	sub    %ebx,%eax
4069a4:	3b f8                	cmp    %eax,%edi
4069a6:	0f 8f f1 5b 07 00    	jg     0x47c59d
4069ac:	8b 45 08             	mov    0x8(%ebp),%eax
4069af:	8b 40 04             	mov    0x4(%eax),%eax
4069b2:	8b 30                	mov    (%eax),%esi
4069b4:	8b ce                	mov    %esi,%ecx
4069b6:	e8 b1 29 00 00       	call   0x40936c
4069bb:	57                   	push   %edi
4069bc:	53                   	push   %ebx
4069bd:	ff 76 08             	push   0x8(%esi)
4069c0:	8d 4d f0             	lea    -0x10(%ebp),%ecx
4069c3:	e8 21 00 00 00       	call   0x4069e9
4069c8:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4069cb:	8d 45 f0             	lea    -0x10(%ebp),%eax
4069ce:	50                   	push   %eax
4069cf:	e8 94 01 00 00       	call   0x406b68
4069d4:	8d 4d f0             	lea    -0x10(%ebp),%ecx
4069d7:	e8 5b 61 00 00       	call   0x40cb37
4069dc:	5f                   	pop    %edi
4069dd:	5e                   	pop    %esi
4069de:	33 c0                	xor    %eax,%eax
4069e0:	5b                   	pop    %ebx
4069e1:	c9                   	leave
4069e2:	c2 08 00             	ret    $0x8
4069e5:	8b de                	mov    %esi,%ebx
4069e7:	eb af                	jmp    0x406998
4069e9:	55                   	push   %ebp
4069ea:	8b ec                	mov    %esp,%ebp
4069ec:	53                   	push   %ebx
4069ed:	56                   	push   %esi
4069ee:	8b 75 10             	mov    0x10(%ebp),%esi
4069f1:	57                   	push   %edi
4069f2:	8b f9                	mov    %ecx,%edi
4069f4:	85 f6                	test   %esi,%esi
4069f6:	74 5e                	je     0x406a56
4069f8:	8b 4d 08             	mov    0x8(%ebp),%ecx
4069fb:	8b 5d 0c             	mov    0xc(%ebp),%ebx