40a6d5:	83 f8 22             	cmp    $0x22,%eax
40a6d8:	77 b9                	ja     0x40a693
40a6da:	39 5d 18             	cmp    %ebx,0x18(%ebp)
40a6dd:	8b 55 08             	mov    0x8(%ebp),%edx
40a6e0:	8b 45 0c             	mov    0xc(%ebp),%eax
40a6e3:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40a6e6:	8b f7                	mov    %edi,%esi
40a6e8:	74 13                	je     0x40a6fd
40a6ea:	f7 da                	neg    %edx
40a6ec:	13 c3                	adc    %ebx,%eax
40a6ee:	c6 07 2d             	movb   $0x2d,(%edi)
40a6f1:	8d 77 01             	lea    0x1(%edi),%esi
40a6f4:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
40a6fb:	f7 d8                	neg    %eax
40a6fd:	89 75 18             	mov    %esi,0x18(%ebp)
40a700:	89 5d 0c             	mov    %ebx,0xc(%ebp)
40a703:	ff 75 0c             	push   0xc(%ebp)
40a706:	ff 75 14             	push   0x14(%ebp)
40a709:	50                   	push   %eax
40a70a:	52                   	push   %edx
40a70b:	e8 90 94 00 00       	call   0x413ba0
40a710:	83 f9 09             	cmp    $0x9,%ecx
40a713:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40a716:	8b da                	mov    %edx,%ebx
40a718:	8b d0                	mov    %eax,%edx
40a71a:	8b c3                	mov    %ebx,%eax
40a71c:	76 05                	jbe    0x40a723
40a71e:	80 c1 57             	add    $0x57,%cl
40a721:	eb 03                	jmp    0x40a726
40a723:	80 c1 30             	add    $0x30,%cl
40a726:	88 0e                	mov    %cl,(%esi)
40a728:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a72b:	46                   	inc    %esi
40a72c:	41                   	inc    %ecx
40a72d:	85 c0                	test   %eax,%eax
40a72f:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40a732:	77 04                	ja     0x40a738
40a734:	85 d2                	test   %edx,%edx
40a736:	76 08                	jbe    0x40a740
40a738:	3b 4d 10             	cmp    0x10(%ebp),%ecx
40a73b:	72 c6                	jb     0x40a703
40a73d:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a740:	3b 4d 10             	cmp    0x10(%ebp),%ecx
40a743:	72 16                	jb     0x40a75b
40a745:	c6 07 00             	movb   $0x0,(%edi)
40a748:	e8 ad ec ff ff       	call   0x4093fa
40a74d:	6a 22                	push   $0x22
40a74f:	59                   	pop    %ecx
40a750:	89 08                	mov    %ecx,(%eax)
40a752:	8b f1                	mov    %ecx,%esi
40a754:	33 db                	xor    %ebx,%ebx
40a756:	e9 42 ff ff ff       	jmp    0x40a69d
40a75b:	c6 06 00             	movb   $0x0,(%esi)
40a75e:	4e                   	dec    %esi
40a75f:	8b 45 18             	mov    0x18(%ebp),%eax
40a762:	8a 10                	mov    (%eax),%dl
40a764:	8a 0e                	mov    (%esi),%cl
40a766:	88 16                	mov    %dl,(%esi)
40a768:	4e                   	dec    %esi
40a769:	88 08                	mov    %cl,(%eax)
40a76b:	40                   	inc    %eax
40a76c:	3b c6                	cmp    %esi,%eax
40a76e:	89 45 18             	mov    %eax,0x18(%ebp)
40a771:	72 ec                	jb     0x40a75f
40a773:	33 c0                	xor    %eax,%eax
40a775:	5e                   	pop    %esi
40a776:	5b                   	pop    %ebx
40a777:	c9                   	leave
40a778:	c2 14 00             	ret    $0x14
40a77b:	55                   	push   %ebp
40a77c:	8b ec                	mov    %esp,%ebp
40a77e:	57                   	push   %edi
40a77f:	8b 7d 10             	mov    0x10(%ebp),%edi
40a782:	6a 00                	push   $0x0
40a784:	ff 75 18             	push   0x18(%ebp)
40a787:	ff 75 14             	push   0x14(%ebp)
40a78a:	ff 75 0c             	push   0xc(%ebp)
40a78d:	ff 75 08             	push   0x8(%ebp)
40a790:	e8 f0 fe ff ff       	call   0x40a685
40a795:	5f                   	pop    %edi
40a796:	5d                   	pop    %ebp
40a797:	c3                   	ret
40a798:	55                   	push   %ebp
40a799:	8b ec                	mov    %esp,%ebp
40a79b:	83 ec 10             	sub    $0x10,%esp
40a79e:	a1 20 c5 41 00       	mov    0x41c520,%eax
40a7a3:	33 c5                	xor    %ebp,%eax
40a7a5:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a7a8:	83 7d 14 ff          	cmpl   $0xffffffff,0x14(%ebp)
40a7ac:	53                   	push   %ebx
40a7ad:	56                   	push   %esi
40a7ae:	57                   	push   %edi
40a7af:	7d 07                	jge    0x40a7b8
40a7b1:	33 c0                	xor    %eax,%eax
40a7b3:	e9 f2 01 00 00       	jmp    0x40a9aa
40a7b8:	a1 08 da 41 00       	mov    0x41da08,%eax
40a7bd:	8b 35 e8 70 41 00    	mov    0x4170e8,%esi
40a7c3:	33 db                	xor    %ebx,%ebx
40a7c5:	33 ff                	xor    %edi,%edi
40a7c7:	43                   	inc    %ebx
40a7c8:	3b c7                	cmp    %edi,%eax
40a7ca:	75 33                	jne    0x40a7ff
40a7cc:	8d 45 f8             	lea    -0x8(%ebp),%eax
40a7cf:	50                   	push   %eax
40a7d0:	53                   	push   %ebx
40a7d1:	68 88 76 41 00       	push   $0x417688
40a7d6:	53                   	push   %ebx
40a7d7:	ff d6                	call   *%esi
40a7d9:	85 c0                	test   %eax,%eax
40a7db:	74 08                	je     0x40a7e5
40a7dd:	89 1d 08 da 41 00    	mov    %ebx,0x41da08
40a7e3:	eb 1e                	jmp    0x40a803
40a7e5:	ff 15 b0 70 41 00    	call   *0x4170b0
40a7eb:	83 f8 78             	cmp    $0x78,%eax
40a7ee:	75 0a                	jne    0x40a7fa
40a7f0:	6a 02                	push   $0x2
40a7f2:	58                   	pop    %eax
40a7f3:	a3 08 da 41 00       	mov    %eax,0x41da08
40a7f8:	eb 05                	jmp    0x40a7ff
40a7fa:	a1 08 da 41 00       	mov    0x41da08,%eax
40a7ff:	3b c3                	cmp    %ebx,%eax
40a801:	75 13                	jne    0x40a816
40a803:	ff 75 18             	push   0x18(%ebp)
40a806:	ff 75 14             	push   0x14(%ebp)
40a809:	ff 75 10             	push   0x10(%ebp)
40a80c:	ff 75 0c             	push   0xc(%ebp)
40a80f:	ff d6                	call   *%esi
40a811:	e9 94 01 00 00       	jmp    0x40a9aa
40a816:	83 f8 02             	cmp    $0x2,%eax
40a819:	74 04                	je     0x40a81f
40a81b:	3b c7                	cmp    %edi,%eax
40a81d:	75 92                	jne    0x40a7b1
40a81f:	39 7d 20             	cmp    %edi,0x20(%ebp)
40a822:	89 7d f4             	mov    %edi,-0xc(%ebp)
40a825:	75 0b                	jne    0x40a832
40a827:	8b 45 08             	mov    0x8(%ebp),%eax
40a82a:	8b 00                	mov    (%eax),%eax
40a82c:	8b 40 14             	mov    0x14(%eax),%eax
40a82f:	89 45 20             	mov    %eax,0x20(%ebp)
40a832:	39 7d 1c             	cmp    %edi,0x1c(%ebp)
40a835:	75 0b                	jne    0x40a842
40a837:	8b 45 08             	mov    0x8(%ebp),%eax
40a83a:	8b 00                	mov    (%eax),%eax
40a83c:	8b 40 04             	mov    0x4(%eax),%eax
40a83f:	89 45 1c             	mov    %eax,0x1c(%ebp)
40a842:	ff 75 20             	push   0x20(%ebp)
40a845:	e8 04 5c 00 00       	call   0x41044e
40a84a:	39 45 1c             	cmp    %eax,0x1c(%ebp)
40a84d:	59                   	pop    %ecx
40a84e:	74 08                	je     0x40a858
40a850:	83 f8 ff             	cmp    $0xffffffff,%eax
40a853:	74 03                	je     0x40a858
40a855:	89 45 1c             	mov    %eax,0x1c(%ebp)
40a858:	8b 1d 90 70 41 00    	mov    0x417090,%ebx
40a85e:	57                   	push   %edi
40a85f:	57                   	push   %edi
40a860:	57                   	push   %edi
40a861:	57                   	push   %edi
40a862:	ff 75 14             	push   0x14(%ebp)
40a865:	ff 75 10             	push   0x10(%ebp)
40a868:	57                   	push   %edi
40a869:	ff 75 1c             	push   0x1c(%ebp)
40a86c:	ff d3                	call   *%ebx
40a86e:	8b f0                	mov    %eax,%esi
40a870:	3b f7                	cmp    %edi,%esi
40a872:	89 75 f0             	mov    %esi,-0x10(%ebp)
40a875:	0f 84 36 ff ff ff    	je     0x40a7b1
40a87b:	7e 3b                	jle    0x40a8b8
40a87d:	83 fe e0             	cmp    $0xffffffe0,%esi
40a880:	77 36                	ja     0x40a8b8
40a882:	8d 46 08             	lea    0x8(%esi),%eax
40a885:	3d 00 04 00 00       	cmp    $0x400,%eax
40a88a:	77 13                	ja     0x40a89f
40a88c:	e8 bf 5d 00 00       	call   0x410650
40a891:	8b c4                	mov    %esp,%eax
40a893:	3b c7                	cmp    %edi,%eax
40a895:	74 1c                	je     0x40a8b3
40a897:	c7 00 cc cc 00 00    	movl   $0xcccc,(%eax)
40a89d:	eb 11                	jmp    0x40a8b0
40a89f:	50                   	push   %eax
40a8a0:	e8 aa 04 00 00       	call   0x40ad4f
40a8a5:	3b c7                	cmp    %edi,%eax
40a8a7:	59                   	pop    %ecx
40a8a8:	74 09                	je     0x40a8b3
40a8aa:	c7 00 dd dd 00 00    	movl   $0xdddd,(%eax)
40a8b0:	83 c0 08             	add    $0x8,%eax
40a8b3:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a8b6:	eb 03                	jmp    0x40a8bb
40a8b8:	89 7d f8             	mov    %edi,-0x8(%ebp)
40a8bb:	39 7d f8             	cmp    %edi,-0x8(%ebp)
40a8be:	0f 84 ed fe ff ff    	je     0x40a7b1
40a8c4:	56                   	push   %esi
40a8c5:	57                   	push   %edi
40a8c6:	ff 75 f8             	push   -0x8(%ebp)
40a8c9:	e8 82 b2 ff ff       	call   0x405b50
40a8ce:	83 c4 0c             	add    $0xc,%esp
40a8d1:	57                   	push   %edi
40a8d2:	57                   	push   %edi
40a8d3:	56                   	push   %esi
40a8d4:	ff 75 f8             	push   -0x8(%ebp)
40a8d7:	ff 75 14             	push   0x14(%ebp)
40a8da:	ff 75 10             	push   0x10(%ebp)
40a8dd:	57                   	push   %edi
40a8de:	ff 75 1c             	push   0x1c(%ebp)
40a8e1:	ff d3                	call   *%ebx
40a8e3:	85 c0                	test   %eax,%eax
40a8e5:	0f 84 b3 00 00 00    	je     0x40a99e
40a8eb:	8d 46 01             	lea    0x1(%esi),%eax
40a8ee:	3b c7                	cmp    %edi,%eax
40a8f0:	7e 44                	jle    0x40a936
40a8f2:	3d f0 ff ff 7f       	cmp    $0x7ffffff0,%eax
40a8f7:	77 3d                	ja     0x40a936
40a8f9:	8d 44 36 0a          	lea    0xa(%esi,%esi,1),%eax
40a8fd:	3d 00 04 00 00       	cmp    $0x400,%eax
40a902:	77 1a                	ja     0x40a91e
40a904:	e8 47 5d 00 00       	call   0x410650
40a909:	8b dc                	mov    %esp,%ebx
40a90b:	3b df                	cmp    %edi,%ebx
40a90d:	0f 84 8b 00 00 00    	je     0x40a99e
40a913:	c7 03 cc cc 00 00    	movl   $0xcccc,(%ebx)
40a919:	83 c3 08             	add    $0x8,%ebx
40a91c:	eb 1a                	jmp    0x40a938
40a91e:	50                   	push   %eax
40a91f:	e8 2b 04 00 00       	call   0x40ad4f
40a924:	3b c7                	cmp    %edi,%eax
40a926:	59                   	pop    %ecx
40a927:	74 09                	je     0x40a932
40a929:	c7 00 dd dd 00 00    	movl   $0xdddd,(%eax)
40a92f:	83 c0 08             	add    $0x8,%eax
40a932:	8b d8                	mov    %eax,%ebx
40a934:	eb 02                	jmp    0x40a938
40a936:	33 db                	xor    %ebx,%ebx
40a938:	3b df                	cmp    %edi,%ebx
40a93a:	74 62                	je     0x40a99e
40a93c:	39 7d 20             	cmp    %edi,0x20(%ebp)
40a93f:	75 0b                	jne    0x40a94c
40a941:	8b 45 08             	mov    0x8(%ebp),%eax
40a944:	8b 00                	mov    (%eax),%eax
40a946:	8b 40 14             	mov    0x14(%eax),%eax
40a949:	89 45 20             	mov    %eax,0x20(%ebp)
40a94c:	8b 7d 14             	mov    0x14(%ebp),%edi
40a94f:	53                   	push   %ebx
40a950:	ff 75 f0             	push   -0x10(%ebp)
40a953:	03 ff                	add    %edi,%edi
40a955:	ff 75 f8             	push   -0x8(%ebp)
40a958:	8d 34 1f             	lea    (%edi,%ebx,1),%esi
40a95b:	ff 75 0c             	push   0xc(%ebp)
40a95e:	66 81 0e ff ff       	orw    $0xffff,(%esi)
40a963:	ff 75 20             	push   0x20(%ebp)
40a966:	66 81 4e fe ff ff    	orw    $0xffff,-0x2(%esi)
40a96c:	ff 15 e4 70 41 00    	call   *0x4170e4
40a972:	66 81 7e fe ff ff    	cmpw   $0xffff,-0x2(%esi)
40a978:	89 45 f4             	mov    %eax,-0xc(%ebp)
40a97b:	74 16                	je     0x40a993
40a97d:	66 81 3e ff ff       	cmpw   $0xffff,(%esi)
40a982:	75 0f                	jne    0x40a993
40a984:	57                   	push   %edi
40a985:	53                   	push   %ebx
40a986:	ff 75 18             	push   0x18(%ebp)
40a989:	e8 92 05 00 00       	call   0x40af20
40a98e:	83 c4 0c             	add    $0xc,%esp
40a991:	eb 04                	jmp    0x40a997
40a993:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
40a997:	53                   	push   %ebx
40a998:	e8 0c e0 ff ff       	call   0x4089a9
40a99d:	59                   	pop    %ecx
40a99e:	ff 75 f8             	push   -0x8(%ebp)
40a9a1:	e8 03 e0 ff ff       	call   0x4089a9
40a9a6:	8b 45 f4             	mov    -0xc(%ebp),%eax
40a9a9:	59                   	pop    %ecx
40a9aa:	8d 65 e4             	lea    -0x1c(%ebp),%esp
40a9ad:	5f                   	pop    %edi
40a9ae:	5e                   	pop    %esi
40a9af:	5b                   	pop    %ebx
40a9b0:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a9b3:	33 cd                	xor    %ebp,%ecx
40a9b5:	e8 7b b5 ff ff       	call   0x405f35
40a9ba:	c9                   	leave
40a9bb:	c3                   	ret
40a9bc:	55                   	push   %ebp
40a9bd:	8b ec                	mov    %esp,%ebp
40a9bf:	83 ec 10             	sub    $0x10,%esp
40a9c2:	ff 75 08             	push   0x8(%ebp)
40a9c5:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40a9c8:	e8 f7 df ff ff       	call   0x4089c4
40a9cd:	ff 75 20             	push   0x20(%ebp)
40a9d0:	8d 45 f0             	lea    -0x10(%ebp),%eax
40a9d3:	ff 75 1c             	push   0x1c(%ebp)
40a9d6:	ff 75 18             	push   0x18(%ebp)
40a9d9:	ff 75 14             	push   0x14(%ebp)
40a9dc:	ff 75 10             	push   0x10(%ebp)
40a9df:	ff 75 0c             	push   0xc(%ebp)
40a9e2:	50                   	push   %eax
40a9e3:	e8 b0 fd ff ff       	call   0x40a798
40a9e8:	83 c4 1c             	add    $0x1c,%esp
40a9eb:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
40a9ef:	74 07                	je     0x40a9f8
40a9f1:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40a9f4:	83 61 70 fd          	andl   $0xfffffffd,0x70(%ecx)
40a9f8:	c9                   	leave
40a9f9:	c3                   	ret
40a9fa:	55                   	push   %ebp
40a9fb:	8b ec                	mov    %esp,%ebp
40a9fd:	83 ec 10             	sub    $0x10,%esp
40aa00:	a1 20 c5 41 00       	mov    0x41c520,%eax
40aa05:	33 c5                	xor    %ebp,%eax
40aa07:	89 45 fc             	mov    %eax,-0x4(%ebp)
40aa0a:	53                   	push   %ebx
40aa0b:	56                   	push   %esi
40aa0c:	8b 35 dc 70 41 00    	mov    0x4170dc,%esi
40aa12:	33 db                	xor    %ebx,%ebx
40aa14:	39 1d 0c da 41 00    	cmp    %ebx,0x41da0c
40aa1a:	57                   	push   %edi
40aa1b:	8b f9                	mov    %ecx,%edi
40aa1d:	75 36                	jne    0x40aa55
40aa1f:	53                   	push   %ebx
40aa20:	53                   	push   %ebx
40aa21:	6a 01                	push   $0x1
40aa23:	68 88 76 41 00       	push   $0x417688
40aa28:	68 00 01 00 00       	push   $0x100
40aa2d:	53                   	push   %ebx
40aa2e:	ff d6                	call   *%esi
40aa30:	85 c0                	test   %eax,%eax
40aa32:	74 0c                	je     0x40aa40
40aa34:	c7 05 0c da 41 00 01 	movl   $0x1,0x41da0c
40aa3b:	00 00 00
40aa3e:	eb 15                	jmp    0x40aa55
40aa40:	ff 15 b0 70 41 00    	call   *0x4170b0
40aa46:	83 f8 78             	cmp    $0x78,%eax
40aa49:	75 0a                	jne    0x40aa55
40aa4b:	c7 05 0c da 41 00 02 	movl   $0x2,0x41da0c
40aa52:	00 00 00
40aa55:	39 5d 14             	cmp    %ebx,0x14(%ebp)
40aa58:	7e 1d                	jle    0x40aa77
40aa5a:	8b 4d 14             	mov    0x14(%ebp),%ecx
40aa5d:	8b 45 10             	mov    0x10(%ebp),%eax
40aa60:	49                   	dec    %ecx
40aa61:	66 39 18             	cmp    %bx,(%eax)
40aa64:	74 09                	je     0x40aa6f
40aa66:	40                   	inc    %eax
40aa67:	40                   	inc    %eax
40aa68:	3b cb                	cmp    %ebx,%ecx
40aa6a:	75 f4                	jne    0x40aa60
40aa6c:	83 c9 ff             	or     $0xffffffff,%ecx
40aa6f:	83 c8 ff             	or     $0xffffffff,%eax
40aa72:	2b c1                	sub    %ecx,%eax
40aa74:	01 45 14             	add    %eax,0x14(%ebp)
40aa77:	a1 0c da 41 00       	mov    0x41da0c,%eax
40aa7c:	83 f8 01             	cmp    $0x1,%eax
40aa7f:	75 19                	jne    0x40aa9a