4069d7:	01 19                	add    %ebx,(%ecx)
4069d9:	eb 7a                	jmp    0x406a55
4069db:	3b fa                	cmp    %edx,%edi
4069dd:	72 7b                	jb     0x406a5a
4069df:	8b 03                	mov    (%ebx),%eax
4069e1:	90                   	nop
4069e2:	a8 c0                	test   $0xc0,%al
4069e4:	74 19                	je     0x4069ff
4069e6:	ff 75 18             	push   0x18(%ebp)
4069e9:	51                   	push   %ecx
4069ea:	e8 cb 44 00 00       	call   0x40aeba
4069ef:	59                   	pop    %ecx
4069f0:	59                   	pop    %ecx
4069f1:	85 c0                	test   %eax,%eax
4069f3:	0f 85 a9 00 00 00    	jne    0x406aa2
4069f9:	8b 4d 14             	mov    0x14(%ebp),%ecx
4069fc:	8b 55 fc             	mov    -0x4(%ebp),%edx
4069ff:	8b c7                	mov    %edi,%eax
406a01:	85 d2                	test   %edx,%edx
406a03:	74 0e                	je     0x406a13
406a05:	33 d2                	xor    %edx,%edx
406a07:	f7 75 fc             	divl   -0x4(%ebp)
406a0a:	8b c7                	mov    %edi,%eax
406a0c:	2b c2                	sub    %edx,%eax
406a0e:	89 45 f8             	mov    %eax,-0x8(%ebp)
406a11:	eb 03                	jmp    0x406a16
406a13:	89 7d f8             	mov    %edi,-0x8(%ebp)
406a16:	83 f8 fe             	cmp    $0xfffffffe,%eax
406a19:	72 06                	jb     0x406a21
406a1b:	6a fe                	push   $0xfffffffe
406a1d:	58                   	pop    %eax
406a1e:	89 45 f8             	mov    %eax,-0x8(%ebp)
406a21:	ff 75 18             	push   0x18(%ebp)
406a24:	50                   	push   %eax
406a25:	ff 75 08             	push   0x8(%ebp)
406a28:	51                   	push   %ecx
406a29:	e8 95 47 00 00       	call   0x40b1c3
406a2e:	59                   	pop    %ecx
406a2f:	50                   	push   %eax
406a30:	e8 8e 4f 00 00       	call   0x40b9c3
406a35:	8b d8                	mov    %eax,%ebx
406a37:	83 c4 10             	add    $0x10,%esp
406a3a:	83 fb ff             	cmp    $0xffffffff,%ebx
406a3d:	74 71                	je     0x406ab0
406a3f:	8b 45 f8             	mov    -0x8(%ebp),%eax
406a42:	3b d8                	cmp    %eax,%ebx
406a44:	76 06                	jbe    0x406a4c
406a46:	8b d8                	mov    %eax,%ebx
406a48:	2b fb                	sub    %ebx,%edi
406a4a:	eb 06                	jmp    0x406a52
406a4c:	2b fb                	sub    %ebx,%edi
406a4e:	3b d8                	cmp    %eax,%ebx
406a50:	72 5e                	jb     0x406ab0
406a52:	8b 4d 14             	mov    0x14(%ebp),%ecx
406a55:	8b 55 fc             	mov    -0x4(%ebp),%edx
406a58:	eb 2f                	jmp    0x406a89
406a5a:	8b 45 08             	mov    0x8(%ebp),%eax
406a5d:	ff 75 18             	push   0x18(%ebp)
406a60:	51                   	push   %ecx
406a61:	0f be 00             	movsbl (%eax),%eax
406a64:	50                   	push   %eax
406a65:	e8 d3 54 00 00       	call   0x40bf3d
406a6a:	83 c4 0c             	add    $0xc,%esp
406a6d:	83 f8 ff             	cmp    $0xffffffff,%eax
406a70:	74 30                	je     0x406aa2
406a72:	8b 4d 14             	mov    0x14(%ebp),%ecx
406a75:	4f                   	dec    %edi
406a76:	33 db                	xor    %ebx,%ebx
406a78:	8b 51 18             	mov    0x18(%ecx),%edx
406a7b:	89 55 fc             	mov    %edx,-0x4(%ebp)
406a7e:	85 d2                	test   %edx,%edx
406a80:	7f 06                	jg     0x406a88
406a82:	33 d2                	xor    %edx,%edx
406a84:	42                   	inc    %edx
406a85:	89 55 fc             	mov    %edx,-0x4(%ebp)
406a88:	43                   	inc    %ebx
406a89:	01 5d 08             	add    %ebx,0x8(%ebp)
406a8c:	85 ff                	test   %edi,%edi
406a8e:	0f 85 02 ff ff ff    	jne    0x406996
406a94:	8b 45 10             	mov    0x10(%ebp),%eax
406a97:	e9 b8 fe ff ff       	jmp    0x406954
406a9c:	6a 10                	push   $0x10
406a9e:	58                   	pop    %eax
406a9f:	f0 09 03             	lock or %eax,(%ebx)
406aa2:	2b f7                	sub    %edi,%esi
406aa4:	33 d2                	xor    %edx,%edx
406aa6:	8b c6                	mov    %esi,%eax
406aa8:	f7 75 0c             	divl   0xc(%ebp)
406aab:	e9 a4 fe ff ff       	jmp    0x406954
406ab0:	8b 45 f4             	mov    -0xc(%ebp),%eax
406ab3:	6a 10                	push   $0x10
406ab5:	59                   	pop    %ecx
406ab6:	f0 09 08             	lock or %ecx,(%eax)
406ab9:	eb e7                	jmp    0x406aa2
406abb:	8b ff                	mov    %edi,%edi
406abd:	55                   	push   %ebp
406abe:	8b ec                	mov    %esp,%ebp
406ac0:	83 ec 28             	sub    $0x28,%esp
406ac3:	8d 4d d8             	lea    -0x28(%ebp),%ecx
406ac6:	56                   	push   %esi
406ac7:	6a 00                	push   $0x0
406ac9:	e8 9c fc ff ff       	call   0x40676a
406ace:	8d 45 d8             	lea    -0x28(%ebp),%eax
406ad1:	50                   	push   %eax
406ad2:	ff 75 14             	push   0x14(%ebp)
406ad5:	ff 75 10             	push   0x10(%ebp)
406ad8:	ff 75 0c             	push   0xc(%ebp)
406adb:	ff 75 08             	push   0x8(%ebp)
406ade:	e8 ba fd ff ff       	call   0x40689d
406ae3:	83 c4 14             	add    $0x14,%esp
406ae6:	8d 4d d8             	lea    -0x28(%ebp),%ecx
406ae9:	8b f0                	mov    %eax,%esi
406aeb:	e8 c2 fc ff ff       	call   0x4067b2
406af0:	8b c6                	mov    %esi,%eax
406af2:	5e                   	pop    %esi
406af3:	c9                   	leave
406af4:	c3                   	ret
406af5:	6a 10                	push   $0x10
406af7:	68 40 fe 41 00       	push   $0x41fe40
406afc:	e8 9f d3 ff ff       	call   0x403ea0
406b01:	8b 75 08             	mov    0x8(%ebp),%esi
406b04:	85 f6                	test   %esi,%esi
406b06:	75 14                	jne    0x406b1c
406b08:	e8 22 3c 00 00       	call   0x40a72f
406b0d:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
406b13:	e8 b1 09 00 00       	call   0x4074c9
406b18:	33 c0                	xor    %eax,%eax
406b1a:	eb 65                	jmp    0x406b81
406b1c:	8b 7d 0c             	mov    0xc(%ebp),%edi
406b1f:	85 ff                	test   %edi,%edi
406b21:	74 e5                	je     0x406b08
406b23:	33 db                	xor    %ebx,%ebx
406b25:	66 39 1f             	cmp    %bx,(%edi)
406b28:	74 de                	je     0x406b08
406b2a:	66 39 1e             	cmp    %bx,(%esi)
406b2d:	75 0d                	jne    0x406b3c
406b2f:	e8 fb 3b 00 00       	call   0x40a72f
406b34:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
406b3a:	eb dc                	jmp    0x406b18
406b3c:	8d 45 e4             	lea    -0x1c(%ebp),%eax
406b3f:	50                   	push   %eax
406b40:	e8 53 5b 00 00       	call   0x40c698
406b45:	59                   	pop    %ecx
406b46:	39 5d e4             	cmp    %ebx,-0x1c(%ebp)
406b49:	75 0d                	jne    0x406b58
406b4b:	e8 df 3b 00 00       	call   0x40a72f
406b50:	c7 00 18 00 00 00    	movl   $0x18,(%eax)
406b56:	eb c0                	jmp    0x406b18
406b58:	89 5d e0             	mov    %ebx,-0x20(%ebp)
406b5b:	89 5d fc             	mov    %ebx,-0x4(%ebp)
406b5e:	ff 75 e4             	push   -0x1c(%ebp)
406b61:	ff 75 10             	push   0x10(%ebp)
406b64:	57                   	push   %edi
406b65:	56                   	push   %esi
406b66:	e8 95 60 00 00       	call   0x40cc00
406b6b:	83 c4 10             	add    $0x10,%esp
406b6e:	8b f0                	mov    %eax,%esi
406b70:	89 75 e0             	mov    %esi,-0x20(%ebp)
406b73:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
406b7a:	e8 15 00 00 00       	call   0x406b94
406b7f:	8b c6                	mov    %esi,%eax
406b81:	8b 4d f0             	mov    -0x10(%ebp),%ecx
406b84:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
406b8b:	59                   	pop    %ecx
406b8c:	5f                   	pop    %edi
406b8d:	5e                   	pop    %esi
406b8e:	5b                   	pop    %ebx
406b8f:	c9                   	leave
406b90:	c3                   	ret
406b91:	8b 75 e0             	mov    -0x20(%ebp),%esi
406b94:	85 f6                	test   %esi,%esi
406b96:	75 09                	jne    0x406ba1
406b98:	ff 75 e4             	push   -0x1c(%ebp)
406b9b:	e8 61 5b 00 00       	call   0x40c701
406ba0:	59                   	pop    %ecx
406ba1:	ff 75 e4             	push   -0x1c(%ebp)
406ba4:	e8 52 fb ff ff       	call   0x4066fb
406ba9:	59                   	pop    %ecx
406baa:	c3                   	ret
406bab:	8b ff                	mov    %edi,%edi
406bad:	55                   	push   %ebp
406bae:	8b ec                	mov    %esp,%ebp
406bb0:	56                   	push   %esi
406bb1:	8b 75 08             	mov    0x8(%ebp),%esi
406bb4:	85 f6                	test   %esi,%esi
406bb6:	75 11                	jne    0x406bc9
406bb8:	e8 72 3b 00 00       	call   0x40a72f
406bbd:	6a 16                	push   $0x16
406bbf:	5e                   	pop    %esi
406bc0:	89 30                	mov    %esi,(%eax)
406bc2:	e8 02 09 00 00       	call   0x4074c9
406bc7:	eb 24                	jmp    0x406bed
406bc9:	68 80 00 00 00       	push   $0x80
406bce:	ff 75 10             	push   0x10(%ebp)
406bd1:	ff 75 0c             	push   0xc(%ebp)
406bd4:	e8 1c ff ff ff       	call   0x406af5
406bd9:	83 c4 0c             	add    $0xc,%esp
406bdc:	89 06                	mov    %eax,(%esi)
406bde:	85 c0                	test   %eax,%eax
406be0:	75 09                	jne    0x406beb
406be2:	e8 48 3b 00 00       	call   0x40a72f
406be7:	8b 30                	mov    (%eax),%esi
406be9:	eb 02                	jmp    0x406bed
406beb:	33 f6                	xor    %esi,%esi
406bed:	8b c6                	mov    %esi,%eax
406bef:	5e                   	pop    %esi
406bf0:	5d                   	pop    %ebp
406bf1:	c3                   	ret
406bf2:	6a 18                	push   $0x18
406bf4:	68 60 fe 41 00       	push   $0x41fe60
406bf9:	e8 a2 d2 ff ff       	call   0x403ea0
406bfe:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
406c02:	75 0f                	jne    0x406c13
406c04:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
406c08:	74 09                	je     0x406c13
406c0a:	33 f6                	xor    %esi,%esi
406c0c:	8b c6                	mov    %esi,%eax
406c0e:	33 ff                	xor    %edi,%edi
406c10:	47                   	inc    %edi
406c11:	eb 07                	jmp    0x406c1a
406c13:	33 ff                	xor    %edi,%edi
406c15:	47                   	inc    %edi
406c16:	8b c7                	mov    %edi,%eax
406c18:	33 f6                	xor    %esi,%esi
406c1a:	85 c0                	test   %eax,%eax
406c1c:	75 14                	jne    0x406c32
406c1e:	e8 0c 3b 00 00       	call   0x40a72f
406c23:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
406c29:	e8 9b 08 00 00       	call   0x4074c9
406c2e:	33 c0                	xor    %eax,%eax
406c30:	eb 63                	jmp    0x406c95
406c32:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
406c36:	7c e6                	jl     0x406c1e
406c38:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
406c3c:	74 e0                	je     0x406c1e
406c3e:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
406c42:	74 ea                	je     0x406c2e
406c44:	89 75 e4             	mov    %esi,-0x1c(%ebp)
406c47:	ff 75 10             	push   0x10(%ebp)
406c4a:	e8 98 fa ff ff       	call   0x4066e7
406c4f:	59                   	pop    %ecx
406c50:	89 75 fc             	mov    %esi,-0x4(%ebp)
406c53:	8b 5d 08             	mov    0x8(%ebp),%ebx
406c56:	89 5d e0             	mov    %ebx,-0x20(%ebp)
406c59:	89 7d dc             	mov    %edi,-0x24(%ebp)
406c5c:	3b 7d 0c             	cmp    0xc(%ebp),%edi
406c5f:	74 1b                	je     0x406c7c
406c61:	ff 75 10             	push   0x10(%ebp)
406c64:	e8 12 61 00 00       	call   0x40cd7b
406c69:	59                   	pop    %ecx
406c6a:	0f b7 c0             	movzwl %ax,%eax
406c6d:	89 45 d8             	mov    %eax,-0x28(%ebp)
406c70:	3d ff ff 00 00       	cmp    $0xffff,%eax
406c75:	75 2e                	jne    0x406ca5
406c77:	3b 5d 08             	cmp    0x8(%ebp),%ebx
406c7a:	74 0b                	je     0x406c87
406c7c:	33 c0                	xor    %eax,%eax
406c7e:	66 89 03             	mov    %ax,(%ebx)
406c81:	8b 75 08             	mov    0x8(%ebp),%esi
406c84:	89 75 e4             	mov    %esi,-0x1c(%ebp)
406c87:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
406c8e:	e8 26 00 00 00       	call   0x406cb9
406c93:	8b c6                	mov    %esi,%eax
406c95:	8b 4d f0             	mov    -0x10(%ebp),%ecx
406c98:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
406c9f:	59                   	pop    %ecx
406ca0:	5f                   	pop    %edi
406ca1:	5e                   	pop    %esi
406ca2:	5b                   	pop    %ebx
406ca3:	c9                   	leave
406ca4:	c3                   	ret
406ca5:	66 89 03             	mov    %ax,(%ebx)
406ca8:	83 c3 02             	add    $0x2,%ebx
406cab:	89 5d e0             	mov    %ebx,-0x20(%ebp)
406cae:	83 f8 0a             	cmp    $0xa,%eax
406cb1:	74 c9                	je     0x406c7c
406cb3:	47                   	inc    %edi
406cb4:	eb a3                	jmp    0x406c59
406cb6:	8b 75 e4             	mov    -0x1c(%ebp),%esi
406cb9:	ff 75 10             	push   0x10(%ebp)
406cbc:	e8 3a fa ff ff       	call   0x4066fb
406cc1:	59                   	pop    %ecx
406cc2:	c3                   	ret
406cc3:	8b ff                	mov    %edi,%edi
406cc5:	55                   	push   %ebp
406cc6:	8b ec                	mov    %esp,%ebp
406cc8:	8b 4d 08             	mov    0x8(%ebp),%ecx
406ccb:	56                   	push   %esi
406ccc:	8b 41 0c             	mov    0xc(%ecx),%eax
406ccf:	90                   	nop
406cd0:	c1 e8 0c             	shr    $0xc,%eax
406cd3:	a8 01                	test   $0x1,%al
406cd5:	75 6e                	jne    0x406d45
406cd7:	57                   	push   %edi
406cd8:	51                   	push   %ecx
406cd9:	e8 e5 44 00 00       	call   0x40b1c3
406cde:	59                   	pop    %ecx
406cdf:	b9 e8 11 42 00       	mov    $0x4211e8,%ecx
406ce4:	83 f8 ff             	cmp    $0xffffffff,%eax
406ce7:	74 1b                	je     0x406d04
406ce9:	83 f8 fe             	cmp    $0xfffffffe,%eax
406cec:	74 16                	je     0x406d04
406cee:	8b f0                	mov    %eax,%esi
406cf0:	8b d0                	mov    %eax,%edx
406cf2:	83 e6 3f             	and    $0x3f,%esi
406cf5:	c1 fa 06             	sar    $0x6,%edx
406cf8:	6b fe 38             	imul   $0x38,%esi,%edi
406cfb:	03 3c 95 a8 21 42 00 	add    0x4221a8(,%edx,4),%edi
406d02:	eb 0c                	jmp    0x406d10
406d04:	8b d0                	mov    %eax,%edx
406d06:	8b f0                	mov    %eax,%esi
406d08:	c1 fa 06             	sar    $0x6,%edx
406d0b:	8b f9                	mov    %ecx,%edi
406d0d:	83 e6 3f             	and    $0x3f,%esi
406d10:	80 7f 29 00          	cmpb   $0x0,0x29(%edi)
406d14:	5f                   	pop    %edi
406d15:	75 1a                	jne    0x406d31
406d17:	83 f8 ff             	cmp    $0xffffffff,%eax
406d1a:	74 0f                	je     0x406d2b
406d1c:	83 f8 fe             	cmp    $0xfffffffe,%eax
406d1f:	74 0a                	je     0x406d2b
406d21:	6b ce 38             	imul   $0x38,%esi,%ecx
406d24:	03 0c 95 a8 21 42 00 	add    0x4221a8(,%edx,4),%ecx
406d2b:	f6 41 2d 01          	testb  $0x1,0x2d(%ecx)
406d2f:	74 14                	je     0x406d45
406d31:	e8 f9 39 00 00       	call   0x40a72f
406d36:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
406d3c:	e8 88 07 00 00       	call   0x4074c9
406d41:	32 c0                	xor    %al,%al
406d43:	eb 02                	jmp    0x406d47
406d45:	b0 01                	mov    $0x1,%al
406d47:	5e                   	pop    %esi
406d48:	5d                   	pop    %ebp
406d49:	c3                   	ret
406d4a:	8b ff                	mov    %edi,%edi
406d4c:	55                   	push   %ebp
406d4d:	8b ec                	mov    %esp,%ebp
406d4f:	5d                   	pop    %ebp
406d50:	e9 9d fe ff ff       	jmp    0x406bf2
406d55:	8b ff                	mov    %edi,%edi
406d57:	55                   	push   %ebp
406d58:	8b ec                	mov    %esp,%ebp
406d5a:	a1 6c 1a 42 00       	mov    0x421a6c,%eax
406d5f:	56                   	push   %esi
406d60:	57                   	push   %edi
406d61:	83 f8 05             	cmp    $0x5,%eax
406d64:	7c 7a                	jl     0x406de0
406d66:	8b 75 08             	mov    0x8(%ebp),%esi
406d69:	8b d6                	mov    %esi,%edx
406d6b:	8b 7d 0c             	mov    0xc(%ebp),%edi