406899:	83 ec 14             	sub    $0x14,%esp
40689c:	53                   	push   %ebx
40689d:	8b 5d 10             	mov    0x10(%ebp),%ebx
4068a0:	8b d3                	mov    %ebx,%edx
4068a2:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4068a5:	89 55 ec             	mov    %edx,-0x14(%ebp)
4068a8:	57                   	push   %edi
4068a9:	8b 7d 0c             	mov    0xc(%ebp),%edi
4068ac:	8b c7                	mov    %edi,%eax
4068ae:	89 45 f0             	mov    %eax,-0x10(%ebp)
4068b1:	85 db                	test   %ebx,%ebx
4068b3:	0f 8c ab 00 00 00    	jl     0x406964
4068b9:	7f 08                	jg     0x4068c3
4068bb:	85 ff                	test   %edi,%edi
4068bd:	0f 84 a1 00 00 00    	je     0x406964
4068c3:	56                   	push   %esi
4068c4:	8b 41 20             	mov    0x20(%ecx),%eax
4068c7:	8b 00                	mov    (%eax),%eax
4068c9:	89 45 f4             	mov    %eax,-0xc(%ebp)
4068cc:	85 c0                	test   %eax,%eax
4068ce:	74 07                	je     0x4068d7
4068d0:	8b 41 30             	mov    0x30(%ecx),%eax
4068d3:	8b 00                	mov    (%eax),%eax
4068d5:	eb 02                	jmp    0x4068d9
4068d7:	33 c0                	xor    %eax,%eax
4068d9:	99                   	cltd
4068da:	8b f0                	mov    %eax,%esi
4068dc:	8b c2                	mov    %edx,%eax
4068de:	89 45 f8             	mov    %eax,-0x8(%ebp)
4068e1:	85 c0                	test   %eax,%eax
4068e3:	7c 39                	jl     0x40691e
4068e5:	7f 04                	jg     0x4068eb
4068e7:	85 f6                	test   %esi,%esi
4068e9:	74 33                	je     0x40691e
4068eb:	3b d8                	cmp    %eax,%ebx
4068ed:	7f 0b                	jg     0x4068fa
4068ef:	7c 04                	jl     0x4068f5
4068f1:	3b fe                	cmp    %esi,%edi
4068f3:	73 05                	jae    0x4068fa
4068f5:	8b f7                	mov    %edi,%esi
4068f7:	89 5d f8             	mov    %ebx,-0x8(%ebp)
4068fa:	8b 45 08             	mov    0x8(%ebp),%eax
4068fd:	56                   	push   %esi
4068fe:	50                   	push   %eax
4068ff:	ff 75 f4             	push   -0xc(%ebp)
406902:	e8 69 20 00 00       	call   0x408970
406907:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40690a:	83 c4 0c             	add    $0xc,%esp
40690d:	2b fe                	sub    %esi,%edi
40690f:	1b 5d f8             	sbb    -0x8(%ebp),%ebx
406912:	8b 41 30             	mov    0x30(%ecx),%eax
406915:	29 30                	sub    %esi,(%eax)
406917:	8b 41 20             	mov    0x20(%ecx),%eax
40691a:	01 30                	add    %esi,(%eax)
40691c:	eb 2a                	jmp    0x406948
40691e:	8b 01                	mov    (%ecx),%eax
406920:	8b 70 0c             	mov    0xc(%eax),%esi
406923:	8b ce                	mov    %esi,%ecx
406925:	8b 45 08             	mov    0x8(%ebp),%eax
406928:	0f b6 00             	movzbl (%eax),%eax
40692b:	50                   	push   %eax
40692c:	ff 15 54 41 42 00    	call   *0x424154
406932:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406935:	ff d6                	call   *%esi
406937:	83 f8 ff             	cmp    $0xffffffff,%eax
40693a:	74 21                	je     0x40695d
40693c:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40693f:	83 c7 ff             	add    $0xffffffff,%edi
406942:	83 d3 ff             	adc    $0xffffffff,%ebx
406945:	33 f6                	xor    %esi,%esi
406947:	46                   	inc    %esi
406948:	01 75 08             	add    %esi,0x8(%ebp)
40694b:	85 db                	test   %ebx,%ebx
40694d:	0f 8f 71 ff ff ff    	jg     0x4068c4
406953:	7c 08                	jl     0x40695d
406955:	85 ff                	test   %edi,%edi
406957:	0f 85 67 ff ff ff    	jne    0x4068c4
40695d:	8b 45 f0             	mov    -0x10(%ebp),%eax
406960:	8b 55 ec             	mov    -0x14(%ebp),%edx
406963:	5e                   	pop    %esi
406964:	2b c7                	sub    %edi,%eax
406966:	5f                   	pop    %edi
406967:	1b d3                	sbb    %ebx,%edx
406969:	5b                   	pop    %ebx
40696a:	c9                   	leave
40696b:	c2 0c 00             	ret    $0xc
40696e:	55                   	push   %ebp
40696f:	8b ec                	mov    %esp,%ebp
406971:	51                   	push   %ecx
406972:	8a 45 08             	mov    0x8(%ebp),%al
406975:	33 d2                	xor    %edx,%edx
406977:	56                   	push   %esi
406978:	8b f1                	mov    %ecx,%esi
40697a:	68 9c 44 42 00       	push   $0x42449c
40697f:	89 75 fc             	mov    %esi,-0x4(%ebp)
406982:	8d 4e 18             	lea    0x18(%esi),%ecx
406985:	c7 46 04 01 00 00 00 	movl   $0x1,0x4(%esi)
40698c:	c7 06 90 44 42 00    	movl   $0x424490,(%esi)
406992:	89 56 08             	mov    %edx,0x8(%esi)
406995:	89 56 0c             	mov    %edx,0xc(%esi)
406998:	89 56 10             	mov    %edx,0x10(%esi)
40699b:	88 46 14             	mov    %al,0x14(%esi)
40699e:	89 11                	mov    %edx,(%ecx)
4069a0:	88 51 04             	mov    %dl,0x4(%ecx)
4069a3:	e8 8a 00 00 00       	call   0x406a32
4069a8:	8b c6                	mov    %esi,%eax
4069aa:	5e                   	pop    %esi
4069ab:	c9                   	leave
4069ac:	c2 04 00             	ret    $0x4
4069af:	56                   	push   %esi
4069b0:	57                   	push   %edi
4069b1:	8b 79 04             	mov    0x4(%ecx),%edi
4069b4:	8b 07                	mov    (%edi),%eax
4069b6:	8b 70 08             	mov    0x8(%eax),%esi
4069b9:	8b ce                	mov    %esi,%ecx
4069bb:	ff 15 54 41 42 00    	call   *0x424154
4069c1:	8b cf                	mov    %edi,%ecx
4069c3:	ff d6                	call   *%esi
4069c5:	8b f8                	mov    %eax,%edi
4069c7:	85 ff                	test   %edi,%edi
4069c9:	74 12                	je     0x4069dd
4069cb:	8b 0f                	mov    (%edi),%ecx
4069cd:	6a 01                	push   $0x1
4069cf:	8b 31                	mov    (%ecx),%esi
4069d1:	8b ce                	mov    %esi,%ecx
4069d3:	ff 15 54 41 42 00    	call   *0x424154
4069d9:	8b cf                	mov    %edi,%ecx
4069db:	ff d6                	call   *%esi
4069dd:	5f                   	pop    %edi
4069de:	5e                   	pop    %esi
4069df:	c3                   	ret
4069e0:	56                   	push   %esi
4069e1:	eb 18                	jmp    0x4069fb
4069e3:	8b 06                	mov    (%esi),%eax
4069e5:	8b ce                	mov    %esi,%ecx
4069e7:	a3 f4 40 43 00       	mov    %eax,0x4340f4
4069ec:	e8 be ff ff ff       	call   0x4069af
4069f1:	6a 08                	push   $0x8
4069f3:	56                   	push   %esi
4069f4:	e8 53 0c 00 00       	call   0x40764c
4069f9:	59                   	pop    %ecx
4069fa:	59                   	pop    %ecx
4069fb:	8b 35 f4 40 43 00    	mov    0x4340f4,%esi
406a01:	85 f6                	test   %esi,%esi
406a03:	75 de                	jne    0x4069e3
406a05:	5e                   	pop    %esi
406a06:	c3                   	ret
406a07:	56                   	push   %esi
406a08:	8b f1                	mov    %ecx,%esi
406a0a:	56                   	push   %esi
406a0b:	c7 06 90 44 42 00    	movl   $0x424490,(%esi)
406a11:	e8 54 01 00 00       	call   0x406b6a
406a16:	83 7e 18 00          	cmpl   $0x0,0x18(%esi)
406a1a:	59                   	pop    %ecx
406a1b:	74 09                	je     0x406a26
406a1d:	ff 76 18             	push   0x18(%esi)
406a20:	e8 ee 61 00 00       	call   0x40cc13
406a25:	59                   	pop    %ecx
406a26:	83 66 18 00          	andl   $0x0,0x18(%esi)
406a2a:	c7 06 78 43 42 00    	movl   $0x424378,(%esi)
406a30:	5e                   	pop    %esi
406a31:	c3                   	ret
406a32:	55                   	push   %ebp
406a33:	8b ec                	mov    %esp,%ebp
406a35:	53                   	push   %ebx
406a36:	8b d9                	mov    %ecx,%ebx
406a38:	57                   	push   %edi
406a39:	8b 7d 08             	mov    0x8(%ebp),%edi
406a3c:	39 3b                	cmp    %edi,(%ebx)
406a3e:	74 3e                	je     0x406a7e
406a40:	83 3b 00             	cmpl   $0x0,(%ebx)
406a43:	74 08                	je     0x406a4d
406a45:	ff 33                	push   (%ebx)
406a47:	e8 c7 61 00 00       	call   0x40cc13
406a4c:	59                   	pop    %ecx
406a4d:	83 23 00             	andl   $0x0,(%ebx)
406a50:	85 ff                	test   %edi,%edi
406a52:	74 2a                	je     0x406a7e
406a54:	80 3f 00             	cmpb   $0x0,(%edi)
406a57:	56                   	push   %esi
406a58:	8b f7                	mov    %edi,%esi
406a5a:	74 06                	je     0x406a62
406a5c:	46                   	inc    %esi
406a5d:	80 3e 00             	cmpb   $0x0,(%esi)
406a60:	75 fa                	jne    0x406a5c
406a62:	2b f7                	sub    %edi,%esi
406a64:	46                   	inc    %esi
406a65:	56                   	push   %esi
406a66:	e8 12 7a 00 00       	call   0x40e47d
406a6b:	89 03                	mov    %eax,(%ebx)
406a6d:	59                   	pop    %ecx
406a6e:	85 c0                	test   %eax,%eax
406a70:	74 0b                	je     0x406a7d
406a72:	56                   	push   %esi
406a73:	57                   	push   %edi
406a74:	50                   	push   %eax
406a75:	e8 f6 1e 00 00       	call   0x408970
406a7a:	83 c4 0c             	add    $0xc,%esp
406a7d:	5e                   	pop    %esi
406a7e:	5f                   	pop    %edi
406a7f:	8b c3                	mov    %ebx,%eax
406a81:	5b                   	pop    %ebx
406a82:	5d                   	pop    %ebp
406a83:	c2 04 00             	ret    $0x4
406a86:	55                   	push   %ebp
406a87:	8b ec                	mov    %esp,%ebp
406a89:	56                   	push   %esi
406a8a:	8b f1                	mov    %ecx,%esi
406a8c:	e8 76 ff ff ff       	call   0x406a07
406a91:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
406a95:	74 0a                	je     0x406aa1
406a97:	6a 20                	push   $0x20
406a99:	56                   	push   %esi
406a9a:	e8 ad 0b 00 00       	call   0x40764c
406a9f:	59                   	pop    %ecx
406aa0:	59                   	pop    %ecx
406aa1:	8b c6                	mov    %esi,%eax
406aa3:	5e                   	pop    %esi
406aa4:	5d                   	pop    %ebp
406aa5:	c2 04 00             	ret    $0x4
406aa8:	55                   	push   %ebp
406aa9:	8b ec                	mov    %esp,%ebp
406aab:	51                   	push   %ecx
406aac:	6a 08                	push   $0x8
406aae:	e8 69 0b 00 00       	call   0x40761c
406ab3:	89 45 fc             	mov    %eax,-0x4(%ebp)
406ab6:	59                   	pop    %ecx
406ab7:	85 c0                	test   %eax,%eax
406ab9:	74 10                	je     0x406acb
406abb:	8b 0d f4 40 43 00    	mov    0x4340f4,%ecx
406ac1:	89 08                	mov    %ecx,(%eax)
406ac3:	8b 4d 08             	mov    0x8(%ebp),%ecx
406ac6:	89 48 04             	mov    %ecx,0x4(%eax)
406ac9:	eb 02                	jmp    0x406acd
406acb:	33 c0                	xor    %eax,%eax
406acd:	a3 f4 40 43 00       	mov    %eax,0x4340f4
406ad2:	c9                   	leave
406ad3:	c3                   	ret
406ad4:	a1 fc 40 43 00       	mov    0x4340fc,%eax
406ad9:	c3                   	ret
406ada:	6a 04                	push   $0x4
406adc:	b8 5e 2f 42 00       	mov    $0x422f5e,%eax
406ae1:	e8 56 10 00 00       	call   0x407b3c
406ae6:	33 f6                	xor    %esi,%esi
406ae8:	8d 4d f0             	lea    -0x10(%ebp),%ecx
406aeb:	56                   	push   %esi
406aec:	e8 50 e9 ff ff       	call   0x405441
406af1:	8b 3d fc 40 43 00    	mov    0x4340fc,%edi
406af7:	89 75 fc             	mov    %esi,-0x4(%ebp)
406afa:	85 ff                	test   %edi,%edi
406afc:	75 45                	jne    0x406b43
406afe:	56                   	push   %esi
406aff:	e8 3b 01 00 00       	call   0x406c3f
406b04:	8b f8                	mov    %eax,%edi
406b06:	57                   	push   %edi
406b07:	e8 56 01 00 00       	call   0x406c62
406b0c:	59                   	pop    %ecx
406b0d:	59                   	pop    %ecx
406b0e:	68 a0 44 42 00       	push   $0x4244a0
406b13:	8d 4f 18             	lea    0x18(%edi),%ecx
406b16:	c7 47 10 3f 00 00 00 	movl   $0x3f,0x10(%edi)
406b1d:	e8 10 ff ff ff       	call   0x406a32
406b22:	89 3d d4 40 43 00    	mov    %edi,0x4340d4
406b28:	8b 07                	mov    (%edi),%eax
406b2a:	8b 70 04             	mov    0x4(%eax),%esi
406b2d:	8b ce                	mov    %esi,%ecx
406b2f:	ff 15 54 41 42 00    	call   *0x424154
406b35:	8b cf                	mov    %edi,%ecx
406b37:	ff d6                	call   *%esi
406b39:	a1 d4 40 43 00       	mov    0x4340d4,%eax
406b3e:	a3 f0 40 43 00       	mov    %eax,0x4340f0
406b43:	80 7d 08 00          	cmpb   $0x0,0x8(%ebp)
406b47:	74 11                	je     0x406b5a
406b49:	8b 07                	mov    (%edi),%eax
406b4b:	8b 70 04             	mov    0x4(%eax),%esi
406b4e:	8b ce                	mov    %esi,%ecx
406b50:	ff 15 54 41 42 00    	call   *0x424154
406b56:	8b cf                	mov    %edi,%ecx
406b58:	ff d6                	call   *%esi
406b5a:	8d 4d f0             	lea    -0x10(%ebp),%ecx
406b5d:	e8 37 e9 ff ff       	call   0x405499
406b62:	8b c7                	mov    %edi,%eax
406b64:	e8 b0 0f 00 00       	call   0x407b19
406b69:	c3                   	ret
406b6a:	55                   	push   %ebp
406b6b:	8b ec                	mov    %esp,%ebp
406b6d:	51                   	push   %ecx
406b6e:	51                   	push   %ecx
406b6f:	53                   	push   %ebx
406b70:	57                   	push   %edi
406b71:	6a 00                	push   $0x0
406b73:	8d 4d f8             	lea    -0x8(%ebp),%ecx
406b76:	e8 c6 e8 ff ff       	call   0x405441
406b7b:	8b 5d 08             	mov    0x8(%ebp),%ebx
406b7e:	8b 7b 0c             	mov    0xc(%ebx),%edi
406b81:	85 ff                	test   %edi,%edi
406b83:	74 40                	je     0x406bc5
406b85:	56                   	push   %esi
406b86:	8b 43 08             	mov    0x8(%ebx),%eax
406b89:	4f                   	dec    %edi
406b8a:	8b 04 b8             	mov    (%eax,%edi,4),%eax
406b8d:	89 45 fc             	mov    %eax,-0x4(%ebp)
406b90:	85 c0                	test   %eax,%eax
406b92:	74 2c                	je     0x406bc0
406b94:	8b 00                	mov    (%eax),%eax
406b96:	8b 70 08             	mov    0x8(%eax),%esi
406b99:	8b ce                	mov    %esi,%ecx
406b9b:	ff 15 54 41 42 00    	call   *0x424154
406ba1:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406ba4:	ff d6                	call   *%esi
406ba6:	89 45 fc             	mov    %eax,-0x4(%ebp)
406ba9:	85 c0                	test   %eax,%eax
406bab:	74 13                	je     0x406bc0
406bad:	8b 08                	mov    (%eax),%ecx
406baf:	6a 01                	push   $0x1
406bb1:	8b 31                	mov    (%ecx),%esi
406bb3:	8b ce                	mov    %esi,%ecx
406bb5:	ff 15 54 41 42 00    	call   *0x424154
406bbb:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406bbe:	ff d6                	call   *%esi
406bc0:	85 ff                	test   %edi,%edi
406bc2:	75 c2                	jne    0x406b86
406bc4:	5e                   	pop    %esi
406bc5:	ff 73 08             	push   0x8(%ebx)
406bc8:	e8 46 60 00 00       	call   0x40cc13
406bcd:	59                   	pop    %ecx
406bce:	8d 4d f8             	lea    -0x8(%ebp),%ecx
406bd1:	e8 c3 e8 ff ff       	call   0x405499
406bd6:	5f                   	pop    %edi
406bd7:	5b                   	pop    %ebx
406bd8:	c9                   	leave
406bd9:	c3                   	ret
406bda:	55                   	push   %ebp
406bdb:	8b ec                	mov    %esp,%ebp
406bdd:	6a 00                	push   $0x0
406bdf:	6a 00                	push   $0x0
406be1:	e8 f7 7a 00 00       	call   0x40e6dd
406be6:	59                   	pop    %ecx
406be7:	59                   	pop    %ecx
406be8:	85 c0                	test   %eax,%eax
406bea:	75 05                	jne    0x406bf1
406bec:	b8 db f6 42 00       	mov    $0x42f6db,%eax
406bf1:	56                   	push   %esi
406bf2:	8b 75 08             	mov    0x8(%ebp),%esi
406bf5:	50                   	push   %eax
406bf6:	8d 4e 24             	lea    0x24(%esi),%ecx
406bf9:	e8 34 fe ff ff       	call   0x406a32
406bfe:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
406c02:	74 10                	je     0x406c14
406c04:	ff 75 0c             	push   0xc(%ebp)