40d688:	85 c0                	test   %eax,%eax
40d68a:	75 06                	jne    0x40d692
40d68c:	33 c9                	xor    %ecx,%ecx
40d68e:	8b c1                	mov    %ecx,%eax
40d690:	eb 07                	jmp    0x40d699
40d692:	8b c8                	mov    %eax,%ecx
40d694:	e8 42 67 ff ff       	call   0x403ddb
40d699:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40d69c:	51                   	push   %ecx
40d69d:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40d6a0:	51                   	push   %ecx
40d6a1:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40d6a4:	51                   	push   %ecx
40d6a5:	50                   	push   %eax
40d6a6:	8b cb                	mov    %ebx,%ecx
40d6a8:	e8 2f a0 ff ff       	call   0x4076dc
40d6ad:	6a 69                	push   $0x69
40d6af:	53                   	push   %ebx
40d6b0:	ff 15 14 33 43 00    	call   *0x433314
40d6b6:	85 c0                	test   %eax,%eax
40d6b8:	74 12                	je     0x40d6cc
40d6ba:	50                   	push   %eax
40d6bb:	8d 55 f8             	lea    -0x8(%ebp),%edx
40d6be:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40d6c1:	e8 bb 74 ff ff       	call   0x404b81
40d6c6:	8b 75 fc             	mov    -0x4(%ebp),%esi
40d6c9:	8b 7d f8             	mov    -0x8(%ebp),%edi
40d6cc:	8b 55 f0             	mov    -0x10(%ebp),%edx
40d6cf:	51                   	push   %ecx
40d6d0:	ff 75 f4             	push   -0xc(%ebp)
40d6d3:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40d6d6:	57                   	push   %edi
40d6d7:	56                   	push   %esi
40d6d8:	e8 ef 67 ff ff       	call   0x403ecc
40d6dd:	a3 48 26 43 00       	mov    %eax,0x432648
40d6e2:	85 c0                	test   %eax,%eax
40d6e4:	0f 84 3f 01 00 00    	je     0x40d829
40d6ea:	33 c9                	xor    %ecx,%ecx
40d6ec:	eb 05                	jmp    0x40d6f3
40d6ee:	a1 48 26 43 00       	mov    0x432648,%eax
40d6f3:	85 c0                	test   %eax,%eax
40d6f5:	74 12                	je     0x40d709
40d6f7:	66 39 08             	cmp    %cx,(%eax)
40d6fa:	74 0d                	je     0x40d709
40d6fc:	50                   	push   %eax
40d6fd:	ff 15 a8 31 43 00    	call   *0x4331a8
40d703:	48                   	dec    %eax
40d704:	0f b7 c0             	movzwl %ax,%eax
40d707:	eb 02                	jmp    0x40d70b
40d709:	8b c1                	mov    %ecx,%eax
40d70b:	0f b7 3d 7c 26 43 00 	movzwl 0x43267c,%edi
40d712:	66 a3 38 13 41 00    	mov    %ax,0x411338
40d718:	0f b7 c0             	movzwl %ax,%eax
40d71b:	89 7d ec             	mov    %edi,-0x14(%ebp)
40d71e:	8d b7 c7 00 00 00    	lea    0xc7(%edi),%esi
40d724:	3b f0                	cmp    %eax,%esi
40d726:	72 02                	jb     0x40d72a
40d728:	8b f0                	mov    %eax,%esi
40d72a:	68 cc 00 00 00       	push   $0xcc
40d72f:	53                   	push   %ebx
40d730:	ff 15 14 33 43 00    	call   *0x433314
40d736:	0f b7 0d 38 13 41 00 	movzwl 0x411338,%ecx
40d73d:	89 45 fc             	mov    %eax,-0x4(%ebp)
40d740:	3b f1                	cmp    %ecx,%esi
40d742:	74 62                	je     0x40d7a6
40d744:	33 c9                	xor    %ecx,%ecx
40d746:	c7 45 e8 05 00 00 00 	movl   $0x5,-0x18(%ebp)
40d74d:	51                   	push   %ecx
40d74e:	51                   	push   %ecx
40d74f:	6a 02                	push   $0x2
40d751:	50                   	push   %eax
40d752:	ff 15 d0 32 43 00    	call   *0x4332d0
40d758:	0f b7 05 7c 26 43 00 	movzwl 0x43267c,%eax
40d75f:	0f b7 0d 38 13 41 00 	movzwl 0x411338,%ecx
40d766:	2b c8                	sub    %eax,%ecx
40d768:	a1 b0 10 41 00       	mov    0x4110b0,%eax
40d76d:	81 e9 c7 00 00 00    	sub    $0xc7,%ecx
40d773:	3b c8                	cmp    %eax,%ecx
40d775:	7d 05                	jge    0x40d77c
40d777:	33 c0                	xor    %eax,%eax
40d779:	40                   	inc    %eax
40d77a:	eb 0a                	jmp    0x40d786
40d77c:	48                   	dec    %eax
40d77d:	03 c1                	add    %ecx,%eax
40d77f:	99                   	cltd
40d780:	f7 3d b0 10 41 00    	idivl  0x4110b0
40d786:	33 c9                	xor    %ecx,%ecx
40d788:	51                   	push   %ecx
40d789:	50                   	push   %eax
40d78a:	51                   	push   %ecx
40d78b:	6a 02                	push   $0x2
40d78d:	ff 75 fc             	push   -0x4(%ebp)
40d790:	ff 15 d4 32 43 00    	call   *0x4332d4
40d796:	33 c0                	xor    %eax,%eax
40d798:	50                   	push   %eax
40d799:	50                   	push   %eax
40d79a:	ff 75 fc             	push   -0x4(%ebp)
40d79d:	ff 15 fc 31 43 00    	call   *0x4331fc
40d7a3:	8b 45 fc             	mov    -0x4(%ebp),%eax
40d7a6:	ff 75 e8             	push   -0x18(%ebp)
40d7a9:	50                   	push   %eax
40d7aa:	ff 15 f4 31 43 00    	call   *0x4331f4
40d7b0:	56                   	push   %esi
40d7b1:	8b d7                	mov    %edi,%edx
40d7b3:	8b cb                	mov    %ebx,%ecx
40d7b5:	e8 46 02 00 00       	call   0x40da00
40d7ba:	53                   	push   %ebx
40d7bb:	ff 15 f0 32 43 00    	call   *0x4332f0
40d7c1:	8b f8                	mov    %eax,%edi
40d7c3:	85 ff                	test   %edi,%edi
40d7c5:	74 62                	je     0x40d829
40d7c7:	ff 35 cc 1f 43 00    	push   0x431fcc
40d7cd:	57                   	push   %edi
40d7ce:	ff 15 ac 30 43 00    	call   *0x4330ac
40d7d4:	83 3d 48 26 43 00 00 	cmpl   $0x0,0x432648
40d7db:	89 45 e8             	mov    %eax,-0x18(%ebp)
40d7de:	74 14                	je     0x40d7f4
40d7e0:	8b 55 ec             	mov    -0x14(%ebp),%edx
40d7e3:	51                   	push   %ecx
40d7e4:	68 d8 1f 43 00       	push   $0x431fd8
40d7e9:	56                   	push   %esi
40d7ea:	8b cf                	mov    %edi,%ecx
40d7ec:	e8 fa 73 ff ff       	call   0x404beb
40d7f1:	8b 45 e8             	mov    -0x18(%ebp),%eax
40d7f4:	50                   	push   %eax
40d7f5:	57                   	push   %edi
40d7f6:	ff 15 ac 30 43 00    	call   *0x4330ac
40d7fc:	8b 45 ec             	mov    -0x14(%ebp),%eax
40d7ff:	3b c6                	cmp    %esi,%eax
40d801:	77 1e                	ja     0x40d821
40d803:	2b f0                	sub    %eax,%esi
40d805:	b9 d8 1f 43 00       	mov    $0x431fd8,%ecx
40d80a:	46                   	inc    %esi
40d80b:	a1 70 1f 43 00       	mov    0x431f70,%eax
40d810:	2b 01                	sub    (%ecx),%eax
40d812:	99                   	cltd
40d813:	2b c2                	sub    %edx,%eax
40d815:	d1 f8                	sar    $1,%eax
40d817:	89 01                	mov    %eax,(%ecx)
40d819:	8d 49 04             	lea    0x4(%ecx),%ecx
40d81c:	83 ee 01             	sub    $0x1,%esi
40d81f:	75 ea                	jne    0x40d80b
40d821:	57                   	push   %edi
40d822:	53                   	push   %ebx
40d823:	ff 15 08 33 43 00    	call   *0x433308
40d829:	5f                   	pop    %edi
40d82a:	5e                   	pop    %esi
40d82b:	5b                   	pop    %ebx
40d82c:	c9                   	leave
40d82d:	c3                   	ret
40d82e:	8b ff                	mov    %edi,%edi
40d830:	55                   	push   %ebp
40d831:	8b ec                	mov    %esp,%ebp
40d833:	83 ec 20             	sub    $0x20,%esp
40d836:	53                   	push   %ebx
40d837:	56                   	push   %esi
40d838:	57                   	push   %edi
40d839:	8b f9                	mov    %ecx,%edi
40d83b:	89 55 e4             	mov    %edx,-0x1c(%ebp)
40d83e:	33 c9                	xor    %ecx,%ecx
40d840:	89 7d e0             	mov    %edi,-0x20(%ebp)
40d843:	68 82 00 00 00       	push   $0x82
40d848:	33 c0                	xor    %eax,%eax
40d84a:	89 4d e8             	mov    %ecx,-0x18(%ebp)
40d84d:	8b f1                	mov    %ecx,%esi
40d84f:	66 a3 7c 26 43 00    	mov    %ax,0x43267c
40d855:	8b d9                	mov    %ecx,%ebx
40d857:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40d85a:	57                   	push   %edi
40d85b:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40d85e:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40d861:	89 75 fc             	mov    %esi,-0x4(%ebp)
40d864:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40d867:	ff 15 14 33 43 00    	call   *0x433314
40d86d:	85 c0                	test   %eax,%eax
40d86f:	74 07                	je     0x40d878
40d871:	8b c8                	mov    %eax,%ecx
40d873:	e8 63 65 ff ff       	call   0x403ddb
40d878:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40d87b:	51                   	push   %ecx
40d87c:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40d87f:	51                   	push   %ecx
40d880:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40d883:	51                   	push   %ecx
40d884:	50                   	push   %eax
40d885:	8b cf                	mov    %edi,%ecx
40d887:	e8 50 9e ff ff       	call   0x4076dc
40d88c:	6a 69                	push   $0x69
40d88e:	57                   	push   %edi
40d88f:	ff 15 14 33 43 00    	call   *0x433314
40d895:	85 c0                	test   %eax,%eax
40d897:	74 12                	je     0x40d8ab
40d899:	50                   	push   %eax
40d89a:	8d 55 f8             	lea    -0x8(%ebp),%edx
40d89d:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40d8a0:	e8 dc 72 ff ff       	call   0x404b81
40d8a5:	8b 75 fc             	mov    -0x4(%ebp),%esi
40d8a8:	8b 5d f8             	mov    -0x8(%ebp),%ebx
40d8ab:	8b 55 f0             	mov    -0x10(%ebp),%edx
40d8ae:	51                   	push   %ecx
40d8af:	51                   	push   %ecx
40d8b0:	ff 75 e4             	push   -0x1c(%ebp)
40d8b3:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40d8b6:	ff 75 f4             	push   -0xc(%ebp)
40d8b9:	53                   	push   %ebx
40d8ba:	56                   	push   %esi
40d8bb:	e8 7f 67 ff ff       	call   0x40403f
40d8c0:	a3 48 26 43 00       	mov    %eax,0x432648
40d8c5:	85 c0                	test   %eax,%eax
40d8c7:	74 17                	je     0x40d8e0
40d8c9:	33 c9                	xor    %ecx,%ecx
40d8cb:	66 39 08             	cmp    %cx,(%eax)
40d8ce:	74 10                	je     0x40d8e0
40d8d0:	50                   	push   %eax
40d8d1:	ff 15 a8 31 43 00    	call   *0x4331a8
40d8d7:	48                   	dec    %eax
40d8d8:	66 a3 38 13 41 00    	mov    %ax,0x411338
40d8de:	eb 06                	jmp    0x40d8e6
40d8e0:	66 a1 38 13 41 00    	mov    0x411338,%ax
40d8e6:	0f b7 1d 7c 26 43 00 	movzwl 0x43267c,%ebx
40d8ed:	0f b7 c0             	movzwl %ax,%eax
40d8f0:	8d b3 c7 00 00 00    	lea    0xc7(%ebx),%esi
40d8f6:	3b f0                	cmp    %eax,%esi
40d8f8:	72 02                	jb     0x40d8fc
40d8fa:	8b f0                	mov    %eax,%esi
40d8fc:	68 cc 00 00 00       	push   $0xcc
40d901:	57                   	push   %edi
40d902:	ff 15 14 33 43 00    	call   *0x433314
40d908:	0f b7 0d 38 13 41 00 	movzwl 0x411338,%ecx
40d90f:	89 45 fc             	mov    %eax,-0x4(%ebp)
40d912:	3b f1                	cmp    %ecx,%esi
40d914:	74 62                	je     0x40d978
40d916:	33 c9                	xor    %ecx,%ecx
40d918:	c7 45 e8 05 00 00 00 	movl   $0x5,-0x18(%ebp)
40d91f:	51                   	push   %ecx
40d920:	51                   	push   %ecx
40d921:	6a 02                	push   $0x2
40d923:	50                   	push   %eax
40d924:	ff 15 d0 32 43 00    	call   *0x4332d0
40d92a:	0f b7 05 7c 26 43 00 	movzwl 0x43267c,%eax
40d931:	0f b7 0d 38 13 41 00 	movzwl 0x411338,%ecx
40d938:	2b c8                	sub    %eax,%ecx
40d93a:	a1 b0 10 41 00       	mov    0x4110b0,%eax
40d93f:	81 e9 c7 00 00 00    	sub    $0xc7,%ecx
40d945:	3b c8                	cmp    %eax,%ecx
40d947:	7d 05                	jge    0x40d94e
40d949:	33 c0                	xor    %eax,%eax
40d94b:	40                   	inc    %eax
40d94c:	eb 0a                	jmp    0x40d958
40d94e:	48                   	dec    %eax
40d94f:	03 c1                	add    %ecx,%eax
40d951:	99                   	cltd
40d952:	f7 3d b0 10 41 00    	idivl  0x4110b0
40d958:	33 c9                	xor    %ecx,%ecx
40d95a:	51                   	push   %ecx
40d95b:	50                   	push   %eax
40d95c:	51                   	push   %ecx
40d95d:	6a 02                	push   $0x2
40d95f:	ff 75 fc             	push   -0x4(%ebp)
40d962:	ff 15 d4 32 43 00    	call   *0x4332d4
40d968:	33 c0                	xor    %eax,%eax
40d96a:	50                   	push   %eax
40d96b:	50                   	push   %eax
40d96c:	ff 75 fc             	push   -0x4(%ebp)
40d96f:	ff 15 fc 31 43 00    	call   *0x4331fc
40d975:	8b 45 fc             	mov    -0x4(%ebp),%eax
40d978:	ff 75 e8             	push   -0x18(%ebp)
40d97b:	50                   	push   %eax
40d97c:	ff 15 f4 31 43 00    	call   *0x4331f4
40d982:	56                   	push   %esi
40d983:	8b d3                	mov    %ebx,%edx
40d985:	8b cf                	mov    %edi,%ecx
40d987:	e8 74 00 00 00       	call   0x40da00
40d98c:	57                   	push   %edi
40d98d:	ff 15 f0 32 43 00    	call   *0x4332f0
40d993:	8b f8                	mov    %eax,%edi
40d995:	85 ff                	test   %edi,%edi
40d997:	74 60                	je     0x40d9f9
40d999:	ff 35 cc 1f 43 00    	push   0x431fcc
40d99f:	57                   	push   %edi
40d9a0:	ff 15 ac 30 43 00    	call   *0x4330ac
40d9a6:	83 3d 48 26 43 00 00 	cmpl   $0x0,0x432648
40d9ad:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40d9b0:	74 13                	je     0x40d9c5
40d9b2:	51                   	push   %ecx
40d9b3:	68 d8 1f 43 00       	push   $0x431fd8
40d9b8:	56                   	push   %esi
40d9b9:	8b d3                	mov    %ebx,%edx
40d9bb:	8b cf                	mov    %edi,%ecx
40d9bd:	e8 29 72 ff ff       	call   0x404beb
40d9c2:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40d9c5:	50                   	push   %eax
40d9c6:	57                   	push   %edi
40d9c7:	ff 15 ac 30 43 00    	call   *0x4330ac
40d9cd:	3b de                	cmp    %esi,%ebx
40d9cf:	77 1e                	ja     0x40d9ef
40d9d1:	2b f3                	sub    %ebx,%esi
40d9d3:	b9 d8 1f 43 00       	mov    $0x431fd8,%ecx
40d9d8:	46                   	inc    %esi
40d9d9:	a1 70 1f 43 00       	mov    0x431f70,%eax
40d9de:	2b 01                	sub    (%ecx),%eax
40d9e0:	99                   	cltd
40d9e1:	2b c2                	sub    %edx,%eax
40d9e3:	d1 f8                	sar    $1,%eax
40d9e5:	89 01                	mov    %eax,(%ecx)
40d9e7:	8d 49 04             	lea    0x4(%ecx),%ecx
40d9ea:	83 ee 01             	sub    $0x1,%esi
40d9ed:	75 ea                	jne    0x40d9d9
40d9ef:	57                   	push   %edi
40d9f0:	ff 75 e0             	push   -0x20(%ebp)
40d9f3:	ff 15 08 33 43 00    	call   *0x433308
40d9f9:	5f                   	pop    %edi
40d9fa:	5e                   	pop    %esi
40d9fb:	5b                   	pop    %ebx
40d9fc:	c9                   	leave
40d9fd:	c2 04 00             	ret    $0x4
40da00:	8b ff                	mov    %edi,%edi
40da02:	55                   	push   %ebp
40da03:	8b ec                	mov    %esp,%ebp
40da05:	0f b7 45 08          	movzwl 0x8(%ebp),%eax
40da09:	53                   	push   %ebx
40da0a:	56                   	push   %esi
40da0b:	0f b7 35 c4 1f 43 00 	movzwl 0x431fc4,%esi
40da12:	8b d9                	mov    %ecx,%ebx
40da14:	66 2b 35 80 26 43 00 	sub    0x432680,%si
40da1b:	57                   	push   %edi
40da1c:	0f b7 fa             	movzwl %dx,%edi
40da1f:	66 89 3d 80 26 43 00 	mov    %di,0x432680
40da26:	66 a3 3c 13 41 00    	mov    %ax,0x41133c
40da2c:	8d 14 3e             	lea    (%esi,%edi,1),%edx
40da2f:	66 89 15 c4 1f 43 00 	mov    %dx,0x431fc4
40da36:	66 3b d0             	cmp    %ax,%dx
40da39:	76 0a                	jbe    0x40da45
40da3b:	66 8b d7             	mov    %di,%dx
40da3e:	66 89 15 c4 1f 43 00 	mov    %dx,0x431fc4
40da45:	66 3b d7             	cmp    %di,%dx
40da48:	76 24                	jbe    0x40da6e
40da4a:	8b 0d 48 26 43 00    	mov    0x432648,%ecx
40da50:	0f b7 c2             	movzwl %dx,%eax
40da53:	66 83 3c 41 20       	cmpw   $0x20,(%ecx,%eax,2)
40da58:	75 14                	jne    0x40da6e
40da5a:	b8 ff ff 00 00       	mov    $0xffff,%eax
40da5f:	66 03 d0             	add    %ax,%dx
40da62:	66 89 15 c4 1f 43 00 	mov    %dx,0x431fc4
40da69:	66 3b d7             	cmp    %di,%dx
40da6c:	77 e2                	ja     0x40da50
40da6e:	85 db                	test   %ebx,%ebx
40da70:	74 26                	je     0x40da98
40da72:	53                   	push   %ebx
40da73:	ff 15 f0 32 43 00    	call   *0x4332f0