40a526:	89 85 9c 00 00 00    	mov    %eax,0x9c(%ebp)
40a52c:	c7 45 d8 01 00 01 00 	movl   $0x10001,-0x28(%ebp)
40a533:	89 b5 90 00 00 00    	mov    %esi,0x90(%ebp)
40a539:	8b 40 fc             	mov    -0x4(%eax),%eax
40a53c:	6a 50                	push   $0x50
40a53e:	89 85 8c 00 00 00    	mov    %eax,0x8c(%ebp)
40a544:	8d 45 80             	lea    -0x80(%ebp),%eax
40a547:	6a 00                	push   $0x0
40a549:	50                   	push   %eax
40a54a:	e8 01 b6 ff ff       	call   0x405b50
40a54f:	8d 45 80             	lea    -0x80(%ebp),%eax
40a552:	83 c4 0c             	add    $0xc,%esp
40a555:	89 45 d0             	mov    %eax,-0x30(%ebp)
40a558:	8d 45 d8             	lea    -0x28(%ebp),%eax
40a55b:	6a 00                	push   $0x0
40a55d:	c7 45 80 15 00 00 40 	movl   $0x40000015,-0x80(%ebp)
40a564:	89 75 8c             	mov    %esi,-0x74(%ebp)
40a567:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40a56a:	ff 15 d0 70 41 00    	call   *0x4170d0
40a570:	8d 45 d0             	lea    -0x30(%ebp),%eax
40a573:	50                   	push   %eax
40a574:	ff 15 cc 70 41 00    	call   *0x4170cc
40a57a:	6a 03                	push   $0x3
40a57c:	e8 52 35 00 00       	call   0x40dad3
40a581:	cc                   	int3
40a582:	55                   	push   %ebp
40a583:	8b ec                	mov    %esp,%ebp
40a585:	51                   	push   %ecx
40a586:	53                   	push   %ebx
40a587:	56                   	push   %esi
40a588:	8b f1                	mov    %ecx,%esi
40a58a:	33 db                	xor    %ebx,%ebx
40a58c:	3b f3                	cmp    %ebx,%esi
40a58e:	75 1e                	jne    0x40a5ae
40a590:	e8 65 ee ff ff       	call   0x4093fa
40a595:	6a 16                	push   $0x16
40a597:	5e                   	pop    %esi
40a598:	53                   	push   %ebx
40a599:	53                   	push   %ebx
40a59a:	53                   	push   %ebx
40a59b:	53                   	push   %ebx
40a59c:	53                   	push   %ebx
40a59d:	89 30                	mov    %esi,(%eax)
40a59f:	e8 ac d0 ff ff       	call   0x407650
40a5a4:	83 c4 14             	add    $0x14,%esp
40a5a7:	8b c6                	mov    %esi,%eax
40a5a9:	e9 a9 00 00 00       	jmp    0x40a657
40a5ae:	39 5d 08             	cmp    %ebx,0x8(%ebp)
40a5b1:	57                   	push   %edi
40a5b2:	77 1e                	ja     0x40a5d2
40a5b4:	e8 41 ee ff ff       	call   0x4093fa
40a5b9:	6a 16                	push   $0x16
40a5bb:	5e                   	pop    %esi
40a5bc:	53                   	push   %ebx
40a5bd:	53                   	push   %ebx
40a5be:	53                   	push   %ebx
40a5bf:	53                   	push   %ebx
40a5c0:	53                   	push   %ebx
40a5c1:	89 30                	mov    %esi,(%eax)
40a5c3:	e8 88 d0 ff ff       	call   0x407650
40a5c8:	83 c4 14             	add    $0x14,%esp
40a5cb:	8b c6                	mov    %esi,%eax
40a5cd:	e9 84 00 00 00       	jmp    0x40a656
40a5d2:	33 c9                	xor    %ecx,%ecx
40a5d4:	39 5d 10             	cmp    %ebx,0x10(%ebp)
40a5d7:	88 1e                	mov    %bl,(%esi)
40a5d9:	0f 95 c1             	setne  %cl
40a5dc:	41                   	inc    %ecx
40a5dd:	39 4d 08             	cmp    %ecx,0x8(%ebp)
40a5e0:	77 09                	ja     0x40a5eb
40a5e2:	e8 13 ee ff ff       	call   0x4093fa
40a5e7:	6a 22                	push   $0x22
40a5e9:	eb d0                	jmp    0x40a5bb
40a5eb:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40a5ee:	83 c1 fe             	add    $0xfffffffe,%ecx
40a5f1:	83 f9 22             	cmp    $0x22,%ecx
40a5f4:	77 be                	ja     0x40a5b4
40a5f6:	39 5d 10             	cmp    %ebx,0x10(%ebp)
40a5f9:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40a5fc:	8b ce                	mov    %esi,%ecx
40a5fe:	74 0f                	je     0x40a60f
40a600:	c6 06 2d             	movb   $0x2d,(%esi)
40a603:	8d 4e 01             	lea    0x1(%esi),%ecx
40a606:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
40a60d:	f7 d8                	neg    %eax
40a60f:	8b f9                	mov    %ecx,%edi
40a611:	33 d2                	xor    %edx,%edx
40a613:	f7 75 0c             	divl   0xc(%ebp)
40a616:	83 fa 09             	cmp    $0x9,%edx
40a619:	76 05                	jbe    0x40a620
40a61b:	80 c2 57             	add    $0x57,%dl
40a61e:	eb 03                	jmp    0x40a623
40a620:	80 c2 30             	add    $0x30,%dl
40a623:	88 11                	mov    %dl,(%ecx)
40a625:	41                   	inc    %ecx
40a626:	ff 45 fc             	incl   -0x4(%ebp)
40a629:	33 db                	xor    %ebx,%ebx
40a62b:	3b c3                	cmp    %ebx,%eax
40a62d:	76 08                	jbe    0x40a637
40a62f:	8b 55 08             	mov    0x8(%ebp),%edx
40a632:	39 55 fc             	cmp    %edx,-0x4(%ebp)
40a635:	72 da                	jb     0x40a611
40a637:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a63a:	3b 45 08             	cmp    0x8(%ebp),%eax
40a63d:	72 04                	jb     0x40a643
40a63f:	88 1e                	mov    %bl,(%esi)
40a641:	eb 9f                	jmp    0x40a5e2
40a643:	88 19                	mov    %bl,(%ecx)
40a645:	49                   	dec    %ecx
40a646:	8a 17                	mov    (%edi),%dl
40a648:	8a 01                	mov    (%ecx),%al
40a64a:	88 11                	mov    %dl,(%ecx)
40a64c:	49                   	dec    %ecx
40a64d:	88 07                	mov    %al,(%edi)
40a64f:	47                   	inc    %edi
40a650:	3b f9                	cmp    %ecx,%edi
40a652:	72 f2                	jb     0x40a646
40a654:	33 c0                	xor    %eax,%eax
40a656:	5f                   	pop    %edi
40a657:	5e                   	pop    %esi
40a658:	5b                   	pop    %ebx
40a659:	c9                   	leave
40a65a:	c2 0c 00             	ret    $0xc
40a65d:	55                   	push   %ebp
40a65e:	8b ec                	mov    %esp,%ebp
40a660:	83 7d 14 0a          	cmpl   $0xa,0x14(%ebp)
40a664:	8b 45 08             	mov    0x8(%ebp),%eax
40a667:	75 0a                	jne    0x40a673
40a669:	85 c0                	test   %eax,%eax
40a66b:	7d 06                	jge    0x40a673
40a66d:	6a 01                	push   $0x1
40a66f:	6a 0a                	push   $0xa
40a671:	eb 05                	jmp    0x40a678
40a673:	6a 00                	push   $0x0
40a675:	ff 75 14             	push   0x14(%ebp)
40a678:	ff 75 10             	push   0x10(%ebp)
40a67b:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40a67e:	e8 ff fe ff ff       	call   0x40a582
40a683:	5d                   	pop    %ebp
40a684:	c3                   	ret
40a685:	55                   	push   %ebp
40a686:	8b ec                	mov    %esp,%ebp
40a688:	83 ec 0c             	sub    $0xc,%esp
40a68b:	53                   	push   %ebx
40a68c:	33 db                	xor    %ebx,%ebx
40a68e:	3b fb                	cmp    %ebx,%edi
40a690:	56                   	push   %esi
40a691:	75 1e                	jne    0x40a6b1
40a693:	e8 62 ed ff ff       	call   0x4093fa
40a698:	6a 16                	push   $0x16
40a69a:	5e                   	pop    %esi
40a69b:	89 30                	mov    %esi,(%eax)
40a69d:	53                   	push   %ebx
40a69e:	53                   	push   %ebx
40a69f:	53                   	push   %ebx
40a6a0:	53                   	push   %ebx
40a6a1:	53                   	push   %ebx
40a6a2:	e8 a9 cf ff ff       	call   0x407650
40a6a7:	83 c4 14             	add    $0x14,%esp
40a6aa:	8b c6                	mov    %esi,%eax
40a6ac:	e9 c4 00 00 00       	jmp    0x40a775
40a6b1:	39 5d 10             	cmp    %ebx,0x10(%ebp)
40a6b4:	76 dd                	jbe    0x40a693
40a6b6:	33 c0                	xor    %eax,%eax
40a6b8:	39 5d 18             	cmp    %ebx,0x18(%ebp)
40a6bb:	88 1f                	mov    %bl,(%edi)
40a6bd:	0f 95 c0             	setne  %al
40a6c0:	40                   	inc    %eax
40a6c1:	39 45 10             	cmp    %eax,0x10(%ebp)
40a6c4:	77 09                	ja     0x40a6cf
40a6c6:	e8 2f ed ff ff       	call   0x4093fa
40a6cb:	6a 22                	push   $0x22
40a6cd:	eb cb                	jmp    0x40a69a
40a6cf:	8b 45 14             	mov    0x14(%ebp),%eax
40a6d2:	83 c0 fe             	add    $0xfffffffe,%eax
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