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
40d8ce:	48                   	dec    %eax
40d8cf:	89 45 f8             	mov    %eax,-0x8(%ebp)
40d8d2:	83 c8 ff             	or     $0xffffffff,%eax
40d8d5:	8d 34 1a             	lea    (%edx,%ebx,1),%esi
40d8d8:	39 45 10             	cmp    %eax,0x10(%ebp)
40d8db:	74 05                	je     0x40d8e2
40d8dd:	8b 45 10             	mov    0x10(%ebp),%eax
40d8e0:	2b c2                	sub    %edx,%eax
40d8e2:	ff 75 2c             	push   0x2c(%ebp)
40d8e5:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40d8e8:	ff 75 28             	push   0x28(%ebp)
40d8eb:	ff 75 fc             	push   -0x4(%ebp)
40d8ee:	51                   	push   %ecx
40d8ef:	57                   	push   %edi
40d8f0:	50                   	push   %eax
40d8f1:	56                   	push   %esi
40d8f2:	e8 98 51 00 00       	call   0x412a8f
40d8f7:	83 c4 1c             	add    $0x1c,%esp
40d8fa:	85 c0                	test   %eax,%eax
40d8fc:	74 05                	je     0x40d903
40d8fe:	c6 03 00             	movb   $0x0,(%ebx)
40d901:	eb 50                	jmp    0x40d953
40d903:	8b 45 f0             	mov    -0x10(%ebp),%eax
40d906:	48                   	dec    %eax
40d907:	83 f8 fc             	cmp    $0xfffffffc,%eax
40d90a:	7c 2b                	jl     0x40d937
40d90c:	3b c7                	cmp    %edi,%eax
40d90e:	7d 27                	jge    0x40d937
40d910:	39 45 f8             	cmp    %eax,-0x8(%ebp)
40d913:	7d 0a                	jge    0x40d91f
40d915:	8a 06                	mov    (%esi),%al
40d917:	46                   	inc    %esi
40d918:	84 c0                	test   %al,%al
40d91a:	75 f9                	jne    0x40d915
40d91c:	88 46 fe             	mov    %al,-0x2(%esi)
40d91f:	ff 75 2c             	push   0x2c(%ebp)
40d922:	8d 45 ec             	lea    -0x14(%ebp),%eax
40d925:	6a 01                	push   $0x1
40d927:	50                   	push   %eax
40d928:	57                   	push   %edi
40d929:	ff 75 10             	push   0x10(%ebp)
40d92c:	53                   	push   %ebx
40d92d:	e8 69 fe ff ff       	call   0x40d79b
40d932:	83 c4 18             	add    $0x18,%esp
40d935:	eb 1c                	jmp    0x40d953
40d937:	ff 75 2c             	push   0x2c(%ebp)
40d93a:	8d 45 ec             	lea    -0x14(%ebp),%eax
40d93d:	6a 01                	push   $0x1
40d93f:	50                   	push   %eax
40d940:	ff 75 24             	push   0x24(%ebp)
40d943:	ff 75 20             	push   0x20(%ebp)
40d946:	57                   	push   %edi
40d947:	ff 75 10             	push   0x10(%ebp)
40d94a:	53                   	push   %ebx
40d94b:	e8 62 fc ff ff       	call   0x40d5b2
40d950:	83 c4 20             	add    $0x20,%esp
40d953:	5f                   	pop    %edi
40d954:	5e                   	pop    %esi
40d955:	5b                   	pop    %ebx
40d956:	c9                   	leave
40d957:	c3                   	ret
40d958:	8b ff                	mov    %edi,%edi
40d95a:	55                   	push   %ebp
40d95b:	8b ec                	mov    %esp,%ebp
40d95d:	51                   	push   %ecx
40d95e:	8a 4d 0c             	mov    0xc(%ebp),%cl
40d961:	8b 55 14             	mov    0x14(%ebp),%edx
40d964:	0f b6 c1             	movzbl %cl,%eax
40d967:	83 c0 04             	add    $0x4,%eax
40d96a:	3b d0                	cmp    %eax,%edx
40d96c:	73 0b                	jae    0x40d979
40d96e:	8b 45 10             	mov    0x10(%ebp),%eax
40d971:	6a 0c                	push   $0xc
40d973:	c6 00 00             	movb   $0x0,(%eax)
40d976:	58                   	pop    %eax
40d977:	c9                   	leave
40d978:	c3                   	ret
40d979:	84 c9                	test   %cl,%cl
40d97b:	8b 4d 10             	mov    0x10(%ebp),%ecx
40d97e:	74 0d                	je     0x40d98d
40d980:	c6 01 2d             	movb   $0x2d,(%ecx)
40d983:	41                   	inc    %ecx
40d984:	c6 01 00             	movb   $0x0,(%ecx)
40d987:	83 fa ff             	cmp    $0xffffffff,%edx
40d98a:	74 01                	je     0x40d98d
40d98c:	4a                   	dec    %edx
40d98d:	8b 45 08             	mov    0x8(%ebp),%eax
40d990:	53                   	push   %ebx
40d991:	56                   	push   %esi
40d992:	57                   	push   %edi
40d993:	0f b6 7d 18          	movzbl 0x18(%ebp),%edi
40d997:	8d 1c 85 fc ff ff ff 	lea    -0x4(,%eax,4),%ebx
40d99e:	83 f7 01             	xor    $0x1,%edi
40d9a1:	03 ff                	add    %edi,%edi
40d9a3:	8d 04 3b             	lea    (%ebx,%edi,1),%eax
40d9a6:	8b 34 85 28 af 41 00 	mov    0x41af28(,%eax,4),%esi
40d9ad:	8d 46 01             	lea    0x1(%esi),%eax
40d9b0:	89 45 fc             	mov    %eax,-0x4(%ebp)
40d9b3:	8a 06                	mov    (%esi),%al
40d9b5:	46                   	inc    %esi
40d9b6:	84 c0                	test   %al,%al
40d9b8:	75 f9                	jne    0x40d9b3
40d9ba:	2b 75 fc             	sub    -0x4(%ebp),%esi
40d9bd:	3b f2                	cmp    %edx,%esi
40d9bf:	1b c0                	sbb    %eax,%eax
40d9c1:	43                   	inc    %ebx
40d9c2:	03 c3                	add    %ebx,%eax
40d9c4:	03 c7                	add    %edi,%eax
40d9c6:	ff 34 85 28 af 41 00 	push   0x41af28(,%eax,4)
40d9cd:	52                   	push   %edx
40d9ce:	51                   	push   %ecx
40d9cf:	e8 9a cb ff ff       	call   0x40a56e
40d9d4:	83 c4 0c             	add    $0xc,%esp
40d9d7:	5f                   	pop    %edi
40d9d8:	5e                   	pop    %esi
40d9d9:	5b                   	pop    %ebx
40d9da:	85 c0                	test   %eax,%eax
40d9dc:	75 02                	jne    0x40d9e0
40d9de:	c9                   	leave
40d9df:	c3                   	ret
40d9e0:	33 c0                	xor    %eax,%eax
40d9e2:	50                   	push   %eax
40d9e3:	50                   	push   %eax
40d9e4:	50                   	push   %eax
40d9e5:	50                   	push   %eax
40d9e6:	50                   	push   %eax
40d9e7:	e8 0a 9b ff ff       	call   0x4074f6
40d9ec:	cc                   	int3
40d9ed:	8b ff                	mov    %edi,%edi
40d9ef:	55                   	push   %ebp
40d9f0:	8b ec                	mov    %esp,%ebp
40d9f2:	8b 55 14             	mov    0x14(%ebp),%edx
40d9f5:	85 d2                	test   %edx,%edx
40d9f7:	74 26                	je     0x40da1f
40d9f9:	56                   	push   %esi
40d9fa:	8b 75 10             	mov    0x10(%ebp),%esi
40d9fd:	8b ce                	mov    %esi,%ecx
40d9ff:	57                   	push   %edi
40da00:	8d 79 01             	lea    0x1(%ecx),%edi
40da03:	8a 01                	mov    (%ecx),%al
40da05:	41                   	inc    %ecx
40da06:	84 c0                	test   %al,%al
40da08:	75 f9                	jne    0x40da03
40da0a:	2b cf                	sub    %edi,%ecx
40da0c:	8d 41 01             	lea    0x1(%ecx),%eax
40da0f:	50                   	push   %eax
40da10:	8d 04 16             	lea    (%esi,%edx,1),%eax
40da13:	56                   	push   %esi
40da14:	50                   	push   %eax
40da15:	e8 16 69 ff ff       	call   0x404330
40da1a:	83 c4 0c             	add    $0xc,%esp
40da1d:	5f                   	pop    %edi
40da1e:	5e                   	pop    %esi
40da1f:	5d                   	pop    %ebp
40da20:	c3                   	ret
40da21:	8b ff                	mov    %edi,%edi
40da23:	55                   	push   %ebp
40da24:	8b ec                	mov    %esp,%ebp
40da26:	8b 45 0c             	mov    0xc(%ebp),%eax
40da29:	53                   	push   %ebx
40da2a:	8b 5d 14             	mov    0x14(%ebp),%ebx
40da2d:	56                   	push   %esi
40da2e:	8b 75 08             	mov    0x8(%ebp),%esi
40da31:	57                   	push   %edi
40da32:	0f bf cb             	movswl %bx,%ecx
40da35:	8b 56 04             	mov    0x4(%esi),%edx
40da38:	23 55 10             	and    0x10(%ebp),%edx
40da3b:	23 06                	and    (%esi),%eax
40da3d:	81 e2 ff ff 0f 00    	and    $0xfffff,%edx
40da43:	e8 78 a2 00 00       	call   0x417cc0
40da48:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
40da4c:	0f b7 f8             	movzwl %ax,%edi
40da4f:	75 09                	jne    0x40da5a
40da51:	83 ff 08             	cmp    $0x8,%edi
40da54:	1a c0                	sbb    %al,%al