406897:	83 ee 03             	sub    $0x3,%esi
40689a:	83 ef 03             	sub    $0x3,%edi
40689d:	83 f9 08             	cmp    $0x8,%ecx
4068a0:	0f 82 5a ff ff ff    	jb     0x406800
4068a6:	fd                   	std
4068a7:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
4068a9:	fc                   	cld
4068aa:	ff 24 95 20 69 40 00 	jmp    *0x406920(,%edx,4)
4068b1:	8d 49 00             	lea    0x0(%ecx),%ecx
4068b4:	d4 68                	aam    $0x68
4068b6:	40                   	inc    %eax
4068b7:	00 dc                	add    %bl,%ah
4068b9:	68 40 00 e4 68       	push   $0x68e40040
4068be:	40                   	inc    %eax
4068bf:	00 ec                	add    %ch,%ah
4068c1:	68 40 00 f4 68       	push   $0x68f40040
4068c6:	40                   	inc    %eax
4068c7:	00 fc                	add    %bh,%ah
4068c9:	68 40 00 04 69       	push   $0x69040040
4068ce:	40                   	inc    %eax
4068cf:	00 17                	add    %dl,(%edi)
4068d1:	69 40 00 8b 44 8e 1c 	imul   $0x1c8e448b,0x0(%eax),%eax
4068d8:	89 44 8f 1c          	mov    %eax,0x1c(%edi,%ecx,4)
4068dc:	8b 44 8e 18          	mov    0x18(%esi,%ecx,4),%eax
4068e0:	89 44 8f 18          	mov    %eax,0x18(%edi,%ecx,4)
4068e4:	8b 44 8e 14          	mov    0x14(%esi,%ecx,4),%eax
4068e8:	89 44 8f 14          	mov    %eax,0x14(%edi,%ecx,4)
4068ec:	8b 44 8e 10          	mov    0x10(%esi,%ecx,4),%eax
4068f0:	89 44 8f 10          	mov    %eax,0x10(%edi,%ecx,4)
4068f4:	8b 44 8e 0c          	mov    0xc(%esi,%ecx,4),%eax
4068f8:	89 44 8f 0c          	mov    %eax,0xc(%edi,%ecx,4)
4068fc:	8b 44 8e 08          	mov    0x8(%esi,%ecx,4),%eax
406900:	89 44 8f 08          	mov    %eax,0x8(%edi,%ecx,4)
406904:	8b 44 8e 04          	mov    0x4(%esi,%ecx,4),%eax
406908:	89 44 8f 04          	mov    %eax,0x4(%edi,%ecx,4)
40690c:	8d 04 8d 00 00 00 00 	lea    0x0(,%ecx,4),%eax
406913:	03 f0                	add    %eax,%esi
406915:	03 f8                	add    %eax,%edi
406917:	ff 24 95 20 69 40 00 	jmp    *0x406920(,%edx,4)
40691e:	8b ff                	mov    %edi,%edi
406920:	30 69 40             	xor    %ch,0x40(%ecx)
406923:	00 38                	add    %bh,(%eax)
406925:	69 40 00 48 69 40 00 	imul   $0x406948,0x0(%eax),%eax
40692c:	5c                   	pop    %esp
40692d:	69 40 00 8b 45 08 5e 	imul   $0x5e08458b,0x0(%eax),%eax
406934:	5f                   	pop    %edi
406935:	c9                   	leave
406936:	c3                   	ret
406937:	90                   	nop
406938:	8a 46 03             	mov    0x3(%esi),%al
40693b:	88 47 03             	mov    %al,0x3(%edi)
40693e:	8b 45 08             	mov    0x8(%ebp),%eax
406941:	5e                   	pop    %esi
406942:	5f                   	pop    %edi
406943:	c9                   	leave
406944:	c3                   	ret
406945:	8d 49 00             	lea    0x0(%ecx),%ecx
406948:	8a 46 03             	mov    0x3(%esi),%al
40694b:	88 47 03             	mov    %al,0x3(%edi)
40694e:	8a 46 02             	mov    0x2(%esi),%al
406951:	88 47 02             	mov    %al,0x2(%edi)
406954:	8b 45 08             	mov    0x8(%ebp),%eax
406957:	5e                   	pop    %esi
406958:	5f                   	pop    %edi
406959:	c9                   	leave
40695a:	c3                   	ret
40695b:	90                   	nop
40695c:	8a 46 03             	mov    0x3(%esi),%al
40695f:	88 47 03             	mov    %al,0x3(%edi)
406962:	8a 46 02             	mov    0x2(%esi),%al
406965:	88 47 02             	mov    %al,0x2(%edi)
406968:	8a 46 01             	mov    0x1(%esi),%al
40696b:	88 47 01             	mov    %al,0x1(%edi)
40696e:	8b 45 08             	mov    0x8(%ebp),%eax
406971:	5e                   	pop    %esi
406972:	5f                   	pop    %edi
406973:	c9                   	leave
406974:	c3                   	ret
406975:	56                   	push   %esi
406976:	8b 74 24 08          	mov    0x8(%esp),%esi
40697a:	57                   	push   %edi
40697b:	83 cf ff             	or     $0xffffffff,%edi
40697e:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
406982:	74 06                	je     0x40698a
406984:	83 66 0c 00          	andl   $0x0,0xc(%esi)
406988:	eb 17                	jmp    0x4069a1
40698a:	56                   	push   %esi
40698b:	e8 36 ef ff ff       	call   0x4058c6
406990:	56                   	push   %esi
406991:	e8 10 00 00 00       	call   0x4069a6
406996:	56                   	push   %esi
406997:	8b f8                	mov    %eax,%edi
406999:	e8 7a ef ff ff       	call   0x405918
40699e:	83 c4 0c             	add    $0xc,%esp
4069a1:	8b c7                	mov    %edi,%eax
4069a3:	5f                   	pop    %edi
4069a4:	5e                   	pop    %esi
4069a5:	c3                   	ret
4069a6:	56                   	push   %esi
4069a7:	8b 74 24 08          	mov    0x8(%esp),%esi
4069ab:	57                   	push   %edi
4069ac:	83 cf ff             	or     $0xffffffff,%edi
4069af:	f6 46 0c 83          	testb  $0x83,0xc(%esi)
4069b3:	74 34                	je     0x4069e9
4069b5:	56                   	push   %esi
4069b6:	e8 15 fb ff ff       	call   0x4064d0
4069bb:	56                   	push   %esi
4069bc:	8b f8                	mov    %eax,%edi
4069be:	e8 91 32 00 00       	call   0x409c54
4069c3:	ff 76 10             	push   0x10(%esi)
4069c6:	e8 47 33 00 00       	call   0x409d12
4069cb:	83 c4 0c             	add    $0xc,%esp
4069ce:	85 c0                	test   %eax,%eax
4069d0:	7d 05                	jge    0x4069d7
4069d2:	83 cf ff             	or     $0xffffffff,%edi
4069d5:	eb 12                	jmp    0x4069e9
4069d7:	8b 46 1c             	mov    0x1c(%esi),%eax
4069da:	85 c0                	test   %eax,%eax
4069dc:	74 0b                	je     0x4069e9
4069de:	50                   	push   %eax
4069df:	e8 f3 04 00 00       	call   0x406ed7
4069e4:	83 66 1c 00          	andl   $0x0,0x1c(%esi)
4069e8:	59                   	pop    %ecx
4069e9:	83 66 0c 00          	andl   $0x0,0xc(%esi)
4069ed:	8b c7                	mov    %edi,%eax
4069ef:	5f                   	pop    %edi
4069f0:	5e                   	pop    %esi
4069f1:	c3                   	ret
4069f2:	cc                   	int3
4069f3:	cc                   	int3
4069f4:	cc                   	int3
4069f5:	cc                   	int3
4069f6:	cc                   	int3
4069f7:	cc                   	int3
4069f8:	cc                   	int3
4069f9:	cc                   	int3
4069fa:	cc                   	int3
4069fb:	cc                   	int3
4069fc:	cc                   	int3
4069fd:	cc                   	int3
4069fe:	cc                   	int3
4069ff:	cc                   	int3
406a00:	8b 4c 24 04          	mov    0x4(%esp),%ecx
406a04:	f7 c1 03 00 00 00    	test   $0x3,%ecx
406a0a:	74 14                	je     0x406a20
406a0c:	8a 01                	mov    (%ecx),%al
406a0e:	41                   	inc    %ecx
406a0f:	84 c0                	test   %al,%al
406a11:	74 40                	je     0x406a53
406a13:	f7 c1 03 00 00 00    	test   $0x3,%ecx
406a19:	75 f1                	jne    0x406a0c
406a1b:	05 00 00 00 00       	add    $0x0,%eax
406a20:	8b 01                	mov    (%ecx),%eax
406a22:	ba ff fe fe 7e       	mov    $0x7efefeff,%edx
406a27:	03 d0                	add    %eax,%edx
406a29:	83 f0 ff             	xor    $0xffffffff,%eax
406a2c:	33 c2                	xor    %edx,%eax
406a2e:	83 c1 04             	add    $0x4,%ecx
406a31:	a9 00 01 01 81       	test   $0x81010100,%eax
406a36:	74 e8                	je     0x406a20
406a38:	8b 41 fc             	mov    -0x4(%ecx),%eax
406a3b:	84 c0                	test   %al,%al
406a3d:	74 32                	je     0x406a71
406a3f:	84 e4                	test   %ah,%ah
406a41:	74 24                	je     0x406a67
406a43:	a9 00 00 ff 00       	test   $0xff0000,%eax
406a48:	74 13                	je     0x406a5d
406a4a:	a9 00 00 00 ff       	test   $0xff000000,%eax
406a4f:	74 02                	je     0x406a53
406a51:	eb cd                	jmp    0x406a20
406a53:	8d 41 ff             	lea    -0x1(%ecx),%eax
406a56:	8b 4c 24 04          	mov    0x4(%esp),%ecx
406a5a:	2b c1                	sub    %ecx,%eax
406a5c:	c3                   	ret
406a5d:	8d 41 fe             	lea    -0x2(%ecx),%eax
406a60:	8b 4c 24 04          	mov    0x4(%esp),%ecx
406a64:	2b c1                	sub    %ecx,%eax
406a66:	c3                   	ret
406a67:	8d 41 fd             	lea    -0x3(%ecx),%eax
406a6a:	8b 4c 24 04          	mov    0x4(%esp),%ecx
406a6e:	2b c1                	sub    %ecx,%eax
406a70:	c3                   	ret
406a71:	8d 41 fc             	lea    -0x4(%ecx),%eax
406a74:	8b 4c 24 04          	mov    0x4(%esp),%ecx
406a78:	2b c1                	sub    %ecx,%eax
406a7a:	c3                   	ret
406a7b:	6a 01                	push   $0x1
406a7d:	ff 74 24 08          	push   0x8(%esp)
406a81:	e8 19 09 00 00       	call   0x40739f
406a86:	59                   	pop    %ecx
406a87:	59                   	pop    %ecx
406a88:	c3                   	ret
406a89:	56                   	push   %esi
406a8a:	ff 74 24 0c          	push   0xc(%esp)
406a8e:	e8 33 ee ff ff       	call   0x4058c6
406a93:	ff 74 24 10          	push   0x10(%esp)
406a97:	ff 74 24 10          	push   0x10(%esp)
406a9b:	e8 13 00 00 00       	call   0x406ab3
406aa0:	ff 74 24 18          	push   0x18(%esp)
406aa4:	8b f0                	mov    %eax,%esi
406aa6:	e8 6d ee ff ff       	call   0x405918
406aab:	83 c4 10             	add    $0x10,%esp
406aae:	66 8b c6             	mov    %si,%ax
406ab1:	5e                   	pop    %esi
406ab2:	c3                   	ret
406ab3:	55                   	push   %ebp
406ab4:	8b ec                	mov    %esp,%ebp
406ab6:	56                   	push   %esi
406ab7:	8b 75 0c             	mov    0xc(%ebp),%esi
406aba:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
406abe:	0f 85 c5 00 00 00    	jne    0x406b89
406ac4:	8b 46 10             	mov    0x10(%esi),%eax
406ac7:	83 f8 ff             	cmp    $0xffffffff,%eax
406aca:	74 17                	je     0x406ae3
406acc:	8b c8                	mov    %eax,%ecx
406ace:	c1 f9 05             	sar    $0x5,%ecx
406ad1:	83 e0 1f             	and    $0x1f,%eax
406ad4:	8b 0c 8d c0 1d 41 00 	mov    0x411dc0(,%ecx,4),%ecx
406adb:	8d 04 c0             	lea    (%eax,%eax,8),%eax
406ade:	8d 04 81             	lea    (%ecx,%eax,4),%eax
406ae1:	eb 05                	jmp    0x406ae8
406ae3:	b8 08 0e 41 00       	mov    $0x410e08,%eax
406ae8:	f6 40 04 80          	testb  $0x80,0x4(%eax)
406aec:	0f 84 97 00 00 00    	je     0x406b89
406af2:	ff 75 08             	push   0x8(%ebp)
406af5:	8d 45 0c             	lea    0xc(%ebp),%eax
406af8:	50                   	push   %eax
406af9:	e8 1b 34 00 00       	call   0x409f19
406afe:	59                   	pop    %ecx
406aff:	83 f8 ff             	cmp    $0xffffffff,%eax
406b02:	59                   	pop    %ecx
406b03:	75 14                	jne    0x406b19
406b05:	e8 d4 05 00 00       	call   0x4070de
406b0a:	c7 00 2a 00 00 00    	movl   $0x2a,(%eax)
406b10:	66 0d ff ff          	or     $0xffff,%ax
406b14:	e9 90 00 00 00       	jmp    0x406ba9
406b19:	83 f8 01             	cmp    $0x1,%eax
406b1c:	75 2c                	jne    0x406b4a
406b1e:	ff 4e 04             	decl   0x4(%esi)
406b21:	78 0f                	js     0x406b32
406b23:	8b 06                	mov    (%esi),%eax
406b25:	8a 4d 0c             	mov    0xc(%ebp),%cl
406b28:	88 08                	mov    %cl,(%eax)
406b2a:	0f b6 45 0c          	movzbl 0xc(%ebp),%eax
406b2e:	ff 06                	incl   (%esi)
406b30:	eb 0d                	jmp    0x406b3f
406b32:	0f be 45 0c          	movsbl 0xc(%ebp),%eax
406b36:	56                   	push   %esi
406b37:	50                   	push   %eax
406b38:	e8 47 12 00 00       	call   0x407d84
406b3d:	59                   	pop    %ecx
406b3e:	59                   	pop    %ecx
406b3f:	83 f8 ff             	cmp    $0xffffffff,%eax
406b42:	74 cc                	je     0x406b10
406b44:	66 8b 45 08          	mov    0x8(%ebp),%ax
406b48:	eb 5f                	jmp    0x406ba9
406b4a:	ff 4e 04             	decl   0x4(%esi)
406b4d:	78 0f                	js     0x406b5e
406b4f:	8b 06                	mov    (%esi),%eax
406b51:	8a 4d 0c             	mov    0xc(%ebp),%cl
406b54:	88 08                	mov    %cl,(%eax)
406b56:	ff 06                	incl   (%esi)
406b58:	0f b6 45 0c          	movzbl 0xc(%ebp),%eax
406b5c:	eb 0d                	jmp    0x406b6b
406b5e:	0f be 45 0c          	movsbl 0xc(%ebp),%eax
406b62:	56                   	push   %esi
406b63:	50                   	push   %eax
406b64:	e8 1b 12 00 00       	call   0x407d84
406b69:	59                   	pop    %ecx
406b6a:	59                   	pop    %ecx
406b6b:	83 f8 ff             	cmp    $0xffffffff,%eax
406b6e:	74 a0                	je     0x406b10
406b70:	ff 4e 04             	decl   0x4(%esi)
406b73:	78 0d                	js     0x406b82
406b75:	8b 06                	mov    (%esi),%eax
406b77:	8a 4d 0d             	mov    0xd(%ebp),%cl
406b7a:	88 08                	mov    %cl,(%eax)
406b7c:	0f b6 45 0d          	movzbl 0xd(%ebp),%eax
406b80:	eb ac                	jmp    0x406b2e
406b82:	0f be 45 0d          	movsbl 0xd(%ebp),%eax
406b86:	56                   	push   %esi
406b87:	eb ae                	jmp    0x406b37
406b89:	83 46 04 fe          	addl   $0xfffffffe,0x4(%esi)
406b8d:	78 0d                	js     0x406b9c
406b8f:	8b 0e                	mov    (%esi),%ecx
406b91:	8b 45 08             	mov    0x8(%ebp),%eax
406b94:	66 89 01             	mov    %ax,(%ecx)
406b97:	83 06 02             	addl   $0x2,(%esi)
406b9a:	eb 0d                	jmp    0x406ba9
406b9c:	0f b7 45 08          	movzwl 0x8(%ebp),%eax
406ba0:	56                   	push   %esi
406ba1:	50                   	push   %eax
406ba2:	e8 4b 32 00 00       	call   0x409df2
406ba7:	59                   	pop    %ecx
406ba8:	59                   	pop    %ecx
406ba9:	5e                   	pop    %esi
406baa:	5d                   	pop    %ebp
406bab:	c3                   	ret
406bac:	56                   	push   %esi
406bad:	ff 74 24 0c          	push   0xc(%esp)
406bb1:	e8 10 ed ff ff       	call   0x4058c6
406bb6:	ff 74 24 10          	push   0x10(%esp)
406bba:	ff 74 24 10          	push   0x10(%esp)
406bbe:	e8 13 00 00 00       	call   0x406bd6
406bc3:	ff 74 24 18          	push   0x18(%esp)
406bc7:	8b f0                	mov    %eax,%esi
406bc9:	e8 4a ed ff ff       	call   0x405918
406bce:	83 c4 10             	add    $0x10,%esp
406bd1:	66 8b c6             	mov    %si,%ax
406bd4:	5e                   	pop    %esi
406bd5:	c3                   	ret
406bd6:	55                   	push   %ebp
406bd7:	8b ec                	mov    %esp,%ebp
406bd9:	53                   	push   %ebx
406bda:	8b 5d 08             	mov    0x8(%ebp),%ebx
406bdd:	66 81 fb ff ff       	cmp    $0xffff,%bx
406be2:	56                   	push   %esi
406be3:	74 70                	je     0x406c55
406be5:	8b 75 0c             	mov    0xc(%ebp),%esi
406be8:	8b 46 0c             	mov    0xc(%esi),%eax
406beb:	a8 01                	test   $0x1,%al
406bed:	75 08                	jne    0x406bf7
406bef:	a8 80                	test   $0x80,%al
406bf1:	74 62                	je     0x406c55
406bf3:	a8 02                	test   $0x2,%al
406bf5:	75 5e                	jne    0x406c55
406bf7:	83 7e 08 00          	cmpl   $0x0,0x8(%esi)
406bfb:	75 07                	jne    0x406c04
406bfd:	56                   	push   %esi
406bfe:	e8 80 2a 00 00       	call   0x409683
406c03:	59                   	pop    %ecx
406c04:	8b 46 0c             	mov    0xc(%esi),%eax
406c07:	a8 40                	test   $0x40,%al
406c09:	0f 85 88 00 00 00    	jne    0x406c97
406c0f:	8b 4e 10             	mov    0x10(%esi),%ecx
406c12:	83 f9 ff             	cmp    $0xffffffff,%ecx
406c15:	74 17                	je     0x406c2e
406c17:	8b d1                	mov    %ecx,%edx
406c19:	c1 fa 05             	sar    $0x5,%edx
406c1c:	83 e1 1f             	and    $0x1f,%ecx
406c1f:	8b 14 95 c0 1d 41 00 	mov    0x411dc0(,%edx,4),%edx
406c26:	8d 0c c9             	lea    (%ecx,%ecx,8),%ecx
406c29:	8d 0c 8a             	lea    (%edx,%ecx,4),%ecx
406c2c:	eb 05                	jmp    0x406c33
406c2e:	b9 08 0e 41 00       	mov    $0x410e08,%ecx
406c33:	f6 41 04 80          	testb  $0x80,0x4(%ecx)
406c37:	74 5e                	je     0x406c97
406c39:	8d 45 08             	lea    0x8(%ebp),%eax
406c3c:	53                   	push   %ebx
406c3d:	50                   	push   %eax