40d5ab:	83 c4 20             	add    $0x20,%esp
40d5ae:	5f                   	pop    %edi
40d5af:	5e                   	pop    %esi
40d5b0:	c9                   	leave
40d5b1:	c3                   	ret
40d5b2:	8b ff                	mov    %edi,%edi
40d5b4:	55                   	push   %ebp
40d5b5:	8b ec                	mov    %esp,%ebp
40d5b7:	56                   	push   %esi
40d5b8:	57                   	push   %edi
40d5b9:	8b 7d 10             	mov    0x10(%ebp),%edi
40d5bc:	33 d2                	xor    %edx,%edx
40d5be:	8b c7                	mov    %edi,%eax
40d5c0:	85 ff                	test   %edi,%edi
40d5c2:	7f 02                	jg     0x40d5c6
40d5c4:	8b c2                	mov    %edx,%eax
40d5c6:	83 c0 09             	add    $0x9,%eax
40d5c9:	39 45 0c             	cmp    %eax,0xc(%ebp)
40d5cc:	77 21                	ja     0x40d5ef
40d5ce:	8b 4d 24             	mov    0x24(%ebp),%ecx
40d5d1:	6a 22                	push   $0x22
40d5d3:	5e                   	pop    %esi
40d5d4:	51                   	push   %ecx
40d5d5:	52                   	push   %edx
40d5d6:	52                   	push   %edx
40d5d7:	52                   	push   %edx
40d5d8:	52                   	push   %edx
40d5d9:	52                   	push   %edx
40d5da:	c6 41 1c 01          	movb   $0x1,0x1c(%ecx)
40d5de:	89 71 18             	mov    %esi,0x18(%ecx)
40d5e1:	e8 66 9e ff ff       	call   0x40744c
40d5e6:	83 c4 18             	add    $0x18,%esp
40d5e9:	8b c6                	mov    %esi,%eax
40d5eb:	5f                   	pop    %edi
40d5ec:	5e                   	pop    %esi
40d5ed:	5d                   	pop    %ebp
40d5ee:	c3                   	ret
40d5ef:	53                   	push   %ebx
40d5f0:	8b 5d 08             	mov    0x8(%ebp),%ebx
40d5f3:	38 55 20             	cmp    %dl,0x20(%ebp)
40d5f6:	74 22                	je     0x40d61a
40d5f8:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
40d5fb:	33 c0                	xor    %eax,%eax
40d5fd:	85 ff                	test   %edi,%edi
40d5ff:	0f 9f c0             	setg   %al
40d602:	50                   	push   %eax
40d603:	33 c0                	xor    %eax,%eax
40d605:	83 39 2d             	cmpl   $0x2d,(%ecx)
40d608:	0f 94 c0             	sete   %al
40d60b:	03 c3                	add    %ebx,%eax
40d60d:	50                   	push   %eax
40d60e:	ff 75 0c             	push   0xc(%ebp)
40d611:	53                   	push   %ebx
40d612:	e8 d6 03 00 00       	call   0x40d9ed
40d617:	83 c4 10             	add    $0x10,%esp
40d61a:	8b 45 1c             	mov    0x1c(%ebp),%eax
40d61d:	8b f3                	mov    %ebx,%esi
40d61f:	83 38 2d             	cmpl   $0x2d,(%eax)
40d622:	75 06                	jne    0x40d62a
40d624:	c6 03 2d             	movb   $0x2d,(%ebx)
40d627:	8d 73 01             	lea    0x1(%ebx),%esi
40d62a:	85 ff                	test   %edi,%edi
40d62c:	7e 28                	jle    0x40d656
40d62e:	8a 46 01             	mov    0x1(%esi),%al
40d631:	88 06                	mov    %al,(%esi)
40d633:	46                   	inc    %esi
40d634:	8b 45 24             	mov    0x24(%ebp),%eax
40d637:	80 78 14 00          	cmpb   $0x0,0x14(%eax)
40d63b:	75 0a                	jne    0x40d647
40d63d:	8b c8                	mov    %eax,%ecx
40d63f:	e8 5c b8 ff ff       	call   0x408ea0
40d644:	8b 45 24             	mov    0x24(%ebp),%eax
40d647:	8b 40 0c             	mov    0xc(%eax),%eax
40d64a:	8b 80 88 00 00 00    	mov    0x88(%eax),%eax
40d650:	8b 00                	mov    (%eax),%eax
40d652:	8a 00                	mov    (%eax),%al
40d654:	88 06                	mov    %al,(%esi)
40d656:	0f b6 45 20          	movzbl 0x20(%ebp),%eax
40d65a:	83 f0 01             	xor    $0x1,%eax
40d65d:	03 c7                	add    %edi,%eax
40d65f:	03 f0                	add    %eax,%esi
40d661:	83 c8 ff             	or     $0xffffffff,%eax
40d664:	39 45 0c             	cmp    %eax,0xc(%ebp)
40d667:	74 07                	je     0x40d670
40d669:	8b c3                	mov    %ebx,%eax
40d66b:	2b c6                	sub    %esi,%eax
40d66d:	03 45 0c             	add    0xc(%ebp),%eax
40d670:	68 a8 af 41 00       	push   $0x41afa8
40d675:	50                   	push   %eax
40d676:	56                   	push   %esi
40d677:	e8 f2 ce ff ff       	call   0x40a56e
40d67c:	83 c4 0c             	add    $0xc,%esp
40d67f:	85 c0                	test   %eax,%eax
40d681:	75 75                	jne    0x40d6f8
40d683:	8d 7e 02             	lea    0x2(%esi),%edi
40d686:	38 45 14             	cmp    %al,0x14(%ebp)
40d689:	74 03                	je     0x40d68e
40d68b:	c6 06 45             	movb   $0x45,(%esi)
40d68e:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
40d691:	8b 41 08             	mov    0x8(%ecx),%eax
40d694:	80 38 30             	cmpb   $0x30,(%eax)
40d697:	74 3d                	je     0x40d6d6
40d699:	8b 49 04             	mov    0x4(%ecx),%ecx
40d69c:	83 e9 01             	sub    $0x1,%ecx
40d69f:	79 06                	jns    0x40d6a7
40d6a1:	f7 d9                	neg    %ecx
40d6a3:	c6 46 01 2d          	movb   $0x2d,0x1(%esi)
40d6a7:	6a 64                	push   $0x64
40d6a9:	5b                   	pop    %ebx
40d6aa:	3b cb                	cmp    %ebx,%ecx
40d6ac:	7c 0f                	jl     0x40d6bd
40d6ae:	8b c1                	mov    %ecx,%eax
40d6b0:	99                   	cltd
40d6b1:	f7 fb                	idiv   %ebx
40d6b3:	00 46 02             	add    %al,0x2(%esi)
40d6b6:	8b c1                	mov    %ecx,%eax
40d6b8:	99                   	cltd
40d6b9:	f7 fb                	idiv   %ebx
40d6bb:	8b ca                	mov    %edx,%ecx
40d6bd:	6a 0a                	push   $0xa
40d6bf:	5b                   	pop    %ebx
40d6c0:	3b cb                	cmp    %ebx,%ecx
40d6c2:	7c 0f                	jl     0x40d6d3
40d6c4:	8b c1                	mov    %ecx,%eax
40d6c6:	99                   	cltd
40d6c7:	f7 fb                	idiv   %ebx
40d6c9:	00 46 03             	add    %al,0x3(%esi)
40d6cc:	8b c1                	mov    %ecx,%eax
40d6ce:	99                   	cltd
40d6cf:	f7 fb                	idiv   %ebx
40d6d1:	8b ca                	mov    %edx,%ecx
40d6d3:	00 4e 04             	add    %cl,0x4(%esi)
40d6d6:	83 7d 18 02          	cmpl   $0x2,0x18(%ebp)
40d6da:	5b                   	pop    %ebx
40d6db:	75 14                	jne    0x40d6f1
40d6dd:	80 3f 30             	cmpb   $0x30,(%edi)
40d6e0:	75 0f                	jne    0x40d6f1
40d6e2:	6a 03                	push   $0x3
40d6e4:	8d 47 01             	lea    0x1(%edi),%eax
40d6e7:	50                   	push   %eax
40d6e8:	57                   	push   %edi
40d6e9:	e8 42 6c ff ff       	call   0x404330
40d6ee:	83 c4 0c             	add    $0xc,%esp
40d6f1:	33 c0                	xor    %eax,%eax
40d6f3:	e9 f3 fe ff ff       	jmp    0x40d5eb
40d6f8:	33 c0                	xor    %eax,%eax
40d6fa:	50                   	push   %eax
40d6fb:	50                   	push   %eax
40d6fc:	50                   	push   %eax
40d6fd:	50                   	push   %eax
40d6fe:	50                   	push   %eax
40d6ff:	e8 f2 9d ff ff       	call   0x4074f6
40d704:	cc                   	int3
40d705:	8b ff                	mov    %edi,%edi
40d707:	55                   	push   %ebp
40d708:	8b ec                	mov    %esp,%ebp
40d70a:	83 ec 0c             	sub    $0xc,%esp
40d70d:	56                   	push   %esi
40d70e:	57                   	push   %edi
40d70f:	ff 75 18             	push   0x18(%ebp)
40d712:	33 c0                	xor    %eax,%eax
40d714:	8d 7d f4             	lea    -0xc(%ebp),%edi
40d717:	ff 75 14             	push   0x14(%ebp)
40d71a:	ab                   	stos   %eax,%es:(%edi)
40d71b:	ab                   	stos   %eax,%es:(%edi)
40d71c:	ab                   	stos   %eax,%es:(%edi)
40d71d:	8d 45 f4             	lea    -0xc(%ebp),%eax
40d720:	8b 7d 1c             	mov    0x1c(%ebp),%edi
40d723:	50                   	push   %eax
40d724:	8b 45 08             	mov    0x8(%ebp),%eax
40d727:	6a 00                	push   $0x0
40d729:	57                   	push   %edi
40d72a:	ff 70 04             	push   0x4(%eax)
40d72d:	ff 30                	push   (%eax)
40d72f:	e8 07 59 00 00       	call   0x41303b
40d734:	8b 75 f8             	mov    -0x8(%ebp),%esi
40d737:	83 c9 ff             	or     $0xffffffff,%ecx
40d73a:	83 c4 1c             	add    $0x1c,%esp
40d73d:	03 f7                	add    %edi,%esi
40d73f:	8b d0                	mov    %eax,%edx
40d741:	39 4d 10             	cmp    %ecx,0x10(%ebp)
40d744:	74 0e                	je     0x40d754
40d746:	8b 4d 10             	mov    0x10(%ebp),%ecx
40d749:	33 c0                	xor    %eax,%eax
40d74b:	83 7d f4 2d          	cmpl   $0x2d,-0xc(%ebp)
40d74f:	0f 94 c0             	sete   %al
40d752:	2b c8                	sub    %eax,%ecx
40d754:	ff 75 24             	push   0x24(%ebp)
40d757:	8d 45 f4             	lea    -0xc(%ebp),%eax
40d75a:	ff 75 20             	push   0x20(%ebp)
40d75d:	52                   	push   %edx
40d75e:	50                   	push   %eax
40d75f:	33 c0                	xor    %eax,%eax
40d761:	83 7d f4 2d          	cmpl   $0x2d,-0xc(%ebp)
40d765:	56                   	push   %esi
40d766:	8b 75 0c             	mov    0xc(%ebp),%esi
40d769:	0f 94 c0             	sete   %al
40d76c:	51                   	push   %ecx
40d76d:	03 c6                	add    %esi,%eax
40d76f:	50                   	push   %eax
40d770:	e8 1a 53 00 00       	call   0x412a8f
40d775:	83 c4 1c             	add    $0x1c,%esp
40d778:	85 c0                	test   %eax,%eax
40d77a:	74 05                	je     0x40d781
40d77c:	c6 06 00             	movb   $0x0,(%esi)
40d77f:	eb 16                	jmp    0x40d797
40d781:	ff 75 24             	push   0x24(%ebp)
40d784:	8d 45 f4             	lea    -0xc(%ebp),%eax
40d787:	6a 00                	push   $0x0
40d789:	50                   	push   %eax
40d78a:	57                   	push   %edi
40d78b:	ff 75 10             	push   0x10(%ebp)
40d78e:	56                   	push   %esi
40d78f:	e8 07 00 00 00       	call   0x40d79b
40d794:	83 c4 18             	add    $0x18,%esp
40d797:	5f                   	pop    %edi
40d798:	5e                   	pop    %esi
40d799:	c9                   	leave
40d79a:	c3                   	ret
40d79b:	8b ff                	mov    %edi,%edi
40d79d:	55                   	push   %ebp
40d79e:	8b ec                	mov    %esp,%ebp
40d7a0:	51                   	push   %ecx
40d7a1:	53                   	push   %ebx
40d7a2:	8b 5d 14             	mov    0x14(%ebp),%ebx
40d7a5:	33 d2                	xor    %edx,%edx
40d7a7:	56                   	push   %esi
40d7a8:	8b 75 08             	mov    0x8(%ebp),%esi
40d7ab:	57                   	push   %edi
40d7ac:	8b 4b 04             	mov    0x4(%ebx),%ecx
40d7af:	8b 7d 10             	mov    0x10(%ebp),%edi
40d7b2:	49                   	dec    %ecx
40d7b3:	38 55 18             	cmp    %dl,0x18(%ebp)
40d7b6:	74 14                	je     0x40d7cc
40d7b8:	3b cf                	cmp    %edi,%ecx
40d7ba:	75 10                	jne    0x40d7cc
40d7bc:	33 c0                	xor    %eax,%eax
40d7be:	83 3b 2d             	cmpl   $0x2d,(%ebx)
40d7c1:	0f 94 c0             	sete   %al
40d7c4:	03 c1                	add    %ecx,%eax
40d7c6:	66 c7 04 30 30 00    	movw   $0x30,(%eax,%esi,1)
40d7cc:	83 3b 2d             	cmpl   $0x2d,(%ebx)
40d7cf:	8b ce                	mov    %esi,%ecx
40d7d1:	89 75 fc             	mov    %esi,-0x4(%ebp)
40d7d4:	75 09                	jne    0x40d7df
40d7d6:	8d 4e 01             	lea    0x1(%esi),%ecx
40d7d9:	c6 06 2d             	movb   $0x2d,(%esi)
40d7dc:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40d7df:	8b 43 04             	mov    0x4(%ebx),%eax
40d7e2:	85 c0                	test   %eax,%eax
40d7e4:	7f 2e                	jg     0x40d814
40d7e6:	75 0a                	jne    0x40d7f2
40d7e8:	8b 43 08             	mov    0x8(%ebx),%eax
40d7eb:	80 38 30             	cmpb   $0x30,(%eax)
40d7ee:	75 02                	jne    0x40d7f2
40d7f0:	b2 01                	mov    $0x1,%dl
40d7f2:	80 7d 18 00          	cmpb   $0x0,0x18(%ebp)
40d7f6:	74 04                	je     0x40d7fc
40d7f8:	84 d2                	test   %dl,%dl
40d7fa:	75 12                	jne    0x40d80e
40d7fc:	6a 01                	push   $0x1
40d7fe:	51                   	push   %ecx
40d7ff:	ff 75 0c             	push   0xc(%ebp)
40d802:	56                   	push   %esi
40d803:	e8 e5 01 00 00       	call   0x40d9ed
40d808:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40d80b:	83 c4 10             	add    $0x10,%esp
40d80e:	33 c0                	xor    %eax,%eax
40d810:	c6 01 30             	movb   $0x30,(%ecx)
40d813:	40                   	inc    %eax
40d814:	03 c1                	add    %ecx,%eax
40d816:	89 45 fc             	mov    %eax,-0x4(%ebp)
40d819:	85 ff                	test   %edi,%edi
40d81b:	7e 65                	jle    0x40d882
40d81d:	6a 01                	push   $0x1
40d81f:	50                   	push   %eax
40d820:	ff 75 0c             	push   0xc(%ebp)
40d823:	56                   	push   %esi
40d824:	e8 c4 01 00 00       	call   0x40d9ed
40d829:	8b 45 1c             	mov    0x1c(%ebp),%eax
40d82c:	83 c4 10             	add    $0x10,%esp
40d82f:	80 78 14 00          	cmpb   $0x0,0x14(%eax)
40d833:	75 0a                	jne    0x40d83f
40d835:	8b c8                	mov    %eax,%ecx
40d837:	e8 64 b6 ff ff       	call   0x408ea0
40d83c:	8b 45 1c             	mov    0x1c(%ebp),%eax
40d83f:	8b 40 0c             	mov    0xc(%eax),%eax
40d842:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40d845:	8b 80 88 00 00 00    	mov    0x88(%eax),%eax
40d84b:	8b 00                	mov    (%eax),%eax
40d84d:	8a 00                	mov    (%eax),%al
40d84f:	88 01                	mov    %al,(%ecx)
40d851:	41                   	inc    %ecx
40d852:	8b 43 04             	mov    0x4(%ebx),%eax
40d855:	85 c0                	test   %eax,%eax
40d857:	79 29                	jns    0x40d882
40d859:	f7 d8                	neg    %eax
40d85b:	80 7d 18 00          	cmpb   $0x0,0x18(%ebp)
40d85f:	75 04                	jne    0x40d865
40d861:	3b c7                	cmp    %edi,%eax
40d863:	7d 02                	jge    0x40d867
40d865:	8b f8                	mov    %eax,%edi
40d867:	57                   	push   %edi
40d868:	51                   	push   %ecx
40d869:	ff 75 0c             	push   0xc(%ebp)
40d86c:	56                   	push   %esi
40d86d:	e8 7b 01 00 00       	call   0x40d9ed
40d872:	8b 45 fc             	mov    -0x4(%ebp),%eax
40d875:	57                   	push   %edi
40d876:	40                   	inc    %eax
40d877:	6a 30                	push   $0x30
40d879:	50                   	push   %eax
40d87a:	e8 f1 71 ff ff       	call   0x404a70
40d87f:	83 c4 1c             	add    $0x1c,%esp
40d882:	5f                   	pop    %edi
40d883:	5e                   	pop    %esi
40d884:	33 c0                	xor    %eax,%eax
40d886:	5b                   	pop    %ebx
40d887:	c9                   	leave
40d888:	c3                   	ret
40d889:	8b ff                	mov    %edi,%edi
40d88b:	55                   	push   %ebp
40d88c:	8b ec                	mov    %esp,%ebp
40d88e:	83 ec 14             	sub    $0x14,%esp
40d891:	53                   	push   %ebx
40d892:	56                   	push   %esi
40d893:	57                   	push   %edi
40d894:	ff 75 18             	push   0x18(%ebp)
40d897:	33 c0                	xor    %eax,%eax
40d899:	8d 7d ec             	lea    -0x14(%ebp),%edi
40d89c:	ff 75 14             	push   0x14(%ebp)
40d89f:	ab                   	stos   %eax,%es:(%edi)
40d8a0:	ab                   	stos   %eax,%es:(%edi)
40d8a1:	ab                   	stos   %eax,%es:(%edi)
40d8a2:	8d 45 ec             	lea    -0x14(%ebp),%eax
40d8a5:	8b 7d 1c             	mov    0x1c(%ebp),%edi
40d8a8:	50                   	push   %eax
40d8a9:	8b 45 08             	mov    0x8(%ebp),%eax
40d8ac:	6a 00                	push   $0x0
40d8ae:	57                   	push   %edi
40d8af:	ff 70 04             	push   0x4(%eax)
40d8b2:	ff 30                	push   (%eax)
40d8b4:	e8 82 57 00 00       	call   0x41303b
40d8b9:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40d8bc:	33 d2                	xor    %edx,%edx
40d8be:	83 c4 1c             	add    $0x1c,%esp
40d8c1:	89 45 fc             	mov    %eax,-0x4(%ebp)
40d8c4:	83 7d ec 2d          	cmpl   $0x2d,-0x14(%ebp)
40d8c8:	8b 45 f0             	mov    -0x10(%ebp),%eax
40d8cb:	0f 94 c2             	sete   %dl