416954:	66 8b c6             	mov    %si,%ax
416957:	66 0b c2             	or     %dx,%ax
41695a:	66 89 45 f0          	mov    %ax,-0x10(%ebp)
41695e:	8b 75 f0             	mov    -0x10(%ebp),%esi
416961:	eb 04                	jmp    0x416967
416963:	66 8b 45 f0          	mov    -0x10(%ebp),%ax
416967:	b9 00 80 00 00       	mov    $0x8000,%ecx
41696c:	66 3b c1             	cmp    %cx,%ax
41696f:	77 0e                	ja     0x41697f
416971:	81 e6 ff ff 01 00    	and    $0x1ffff,%esi
416977:	81 fe 00 80 01 00    	cmp    $0x18000,%esi
41697d:	75 40                	jne    0x4169bf
41697f:	8b 45 f2             	mov    -0xe(%ebp),%eax
416982:	83 f8 ff             	cmp    $0xffffffff,%eax
416985:	75 34                	jne    0x4169bb
416987:	8b 45 f6             	mov    -0xa(%ebp),%eax
41698a:	89 5d f2             	mov    %ebx,-0xe(%ebp)
41698d:	83 f8 ff             	cmp    $0xffffffff,%eax
416990:	75 20                	jne    0x4169b2
416992:	66 8b 45 fa          	mov    -0x6(%ebp),%ax
416996:	ba ff ff 00 00       	mov    $0xffff,%edx
41699b:	89 5d f6             	mov    %ebx,-0xa(%ebp)
41699e:	66 3b c2             	cmp    %dx,%ax
4169a1:	75 07                	jne    0x4169aa
4169a3:	66 89 4d fa          	mov    %cx,-0x6(%ebp)
4169a7:	47                   	inc    %edi
4169a8:	eb 0c                	jmp    0x4169b6
4169aa:	66 40                	inc    %ax
4169ac:	66 89 45 fa          	mov    %ax,-0x6(%ebp)
4169b0:	eb 04                	jmp    0x4169b6
4169b2:	40                   	inc    %eax
4169b3:	89 45 f6             	mov    %eax,-0xa(%ebp)
4169b6:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4169b9:	eb 07                	jmp    0x4169c2
4169bb:	40                   	inc    %eax
4169bc:	89 45 f2             	mov    %eax,-0xe(%ebp)
4169bf:	8b 4d c0             	mov    -0x40(%ebp),%ecx
4169c2:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
4169c7:	66 3b f8             	cmp    %ax,%di
4169ca:	73 20                	jae    0x4169ec
4169cc:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
4169d0:	0b 7d 9c             	or     -0x64(%ebp),%edi
4169d3:	66 89 45 e0          	mov    %ax,-0x20(%ebp)
4169d7:	8b 45 f4             	mov    -0xc(%ebp),%eax
4169da:	89 45 e2             	mov    %eax,-0x1e(%ebp)
4169dd:	8b 75 e0             	mov    -0x20(%ebp),%esi
4169e0:	89 4d e6             	mov    %ecx,-0x1a(%ebp)
4169e3:	8b 55 e4             	mov    -0x1c(%ebp),%edx
4169e6:	66 89 7d ea          	mov    %di,-0x16(%ebp)
4169ea:	eb 21                	jmp    0x416a0d
4169ec:	33 c0                	xor    %eax,%eax
4169ee:	66 39 45 9c          	cmp    %ax,-0x64(%ebp)
4169f2:	0f 94 c0             	sete   %al
4169f5:	48                   	dec    %eax
4169f6:	25 00 00 00 80       	and    $0x80000000,%eax
4169fb:	05 00 80 ff 7f       	add    $0x7fff8000,%eax
416a00:	89 45 e8             	mov    %eax,-0x18(%ebp)
416a03:	8b f3                	mov    %ebx,%esi
416a05:	8b d3                	mov    %ebx,%edx
416a07:	89 75 e0             	mov    %esi,-0x20(%ebp)
416a0a:	89 55 e4             	mov    %edx,-0x1c(%ebp)
416a0d:	89 75 c0             	mov    %esi,-0x40(%ebp)
416a10:	8b 45 ac             	mov    -0x54(%ebp),%eax
416a13:	8b 4d bc             	mov    -0x44(%ebp),%ecx
416a16:	85 c9                	test   %ecx,%ecx
416a18:	0f 85 01 fd ff ff    	jne    0x41671f
416a1e:	eb 06                	jmp    0x416a26
416a20:	8b 55 e4             	mov    -0x1c(%ebp),%edx
416a23:	8b 75 e0             	mov    -0x20(%ebp),%esi
416a26:	8b 45 e8             	mov    -0x18(%ebp),%eax
416a29:	c1 e8 10             	shr    $0x10,%eax
416a2c:	b9 ff 3f 00 00       	mov    $0x3fff,%ecx
416a31:	66 3b c1             	cmp    %cx,%ax
416a34:	0f 82 9e 02 00 00    	jb     0x416cd8
416a3a:	ff 45 b8             	incl   -0x48(%ebp)
416a3d:	8b c8                	mov    %eax,%ecx
416a3f:	8b 45 da             	mov    -0x26(%ebp),%eax
416a42:	8b f8                	mov    %eax,%edi
416a44:	33 f9                	xor    %ecx,%edi
416a46:	81 e7 00 80 00 00    	and    $0x8000,%edi
416a4c:	89 7d ac             	mov    %edi,-0x54(%ebp)
416a4f:	bf ff 7f 00 00       	mov    $0x7fff,%edi
416a54:	23 c7                	and    %edi,%eax
416a56:	23 cf                	and    %edi,%ecx
416a58:	89 45 8c             	mov    %eax,-0x74(%ebp)
416a5b:	03 c1                	add    %ecx,%eax
416a5d:	0f b7 f8             	movzwl %ax,%edi
416a60:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
416a65:	89 5d 84             	mov    %ebx,-0x7c(%ebp)
416a68:	89 5d f0             	mov    %ebx,-0x10(%ebp)
416a6b:	89 5d f4             	mov    %ebx,-0xc(%ebp)
416a6e:	89 5d f8             	mov    %ebx,-0x8(%ebp)
416a71:	89 7d b4             	mov    %edi,-0x4c(%ebp)
416a74:	66 3b c8             	cmp    %ax,%cx
416a77:	0f 83 40 02 00 00    	jae    0x416cbd
416a7d:	8b 45 8c             	mov    -0x74(%ebp),%eax
416a80:	66 3b 45 98          	cmp    -0x68(%ebp),%ax
416a84:	0f 83 33 02 00 00    	jae    0x416cbd
416a8a:	66 3b 7d 94          	cmp    -0x6c(%ebp),%di
416a8e:	0f 87 29 02 00 00    	ja     0x416cbd
416a94:	66 3b 7d a8          	cmp    -0x58(%ebp),%di
416a98:	77 08                	ja     0x416aa2
416a9a:	89 5d e8             	mov    %ebx,-0x18(%ebp)
416a9d:	e9 32 02 00 00       	jmp    0x416cd4
416aa2:	66 85 c9             	test   %cx,%cx
416aa5:	75 20                	jne    0x416ac7
416aa7:	47                   	inc    %edi
416aa8:	f7 45 e8 ff ff ff 7f 	testl  $0x7fffffff,-0x18(%ebp)
416aaf:	89 7d b4             	mov    %edi,-0x4c(%ebp)
416ab2:	75 13                	jne    0x416ac7
416ab4:	85 d2                	test   %edx,%edx
416ab6:	75 0f                	jne    0x416ac7
416ab8:	85 f6                	test   %esi,%esi
416aba:	75 0b                	jne    0x416ac7
416abc:	33 c0                	xor    %eax,%eax
416abe:	66 89 45 ea          	mov    %ax,-0x16(%ebp)
416ac2:	e9 11 02 00 00       	jmp    0x416cd8
416ac7:	66 85 c0             	test   %ax,%ax
416aca:	75 19                	jne    0x416ae5
416acc:	47                   	inc    %edi
416acd:	f7 45 d8 ff ff ff 7f 	testl  $0x7fffffff,-0x28(%ebp)
416ad4:	89 7d b4             	mov    %edi,-0x4c(%ebp)
416ad7:	75 0c                	jne    0x416ae5
416ad9:	83 7d d4 00          	cmpl   $0x0,-0x2c(%ebp)
416add:	75 06                	jne    0x416ae5
416adf:	83 7d d0 00          	cmpl   $0x0,-0x30(%ebp)
416ae3:	74 b5                	je     0x416a9a
416ae5:	8b d3                	mov    %ebx,%edx
416ae7:	6a 05                	push   $0x5
416ae9:	89 55 b0             	mov    %edx,-0x50(%ebp)
416aec:	8d 4d f4             	lea    -0xc(%ebp),%ecx
416aef:	58                   	pop    %eax
416af0:	8b f0                	mov    %eax,%esi
416af2:	85 c0                	test   %eax,%eax
416af4:	7e 58                	jle    0x416b4e
416af6:	8d 7d e0             	lea    -0x20(%ebp),%edi
416af9:	8d 45 d8             	lea    -0x28(%ebp),%eax
416afc:	8d 3c 57             	lea    (%edi,%edx,2),%edi
416aff:	89 45 94             	mov    %eax,-0x6c(%ebp)
416b02:	89 7d a8             	mov    %edi,-0x58(%ebp)
416b05:	0f b7 10             	movzwl (%eax),%edx
416b08:	0f b7 07             	movzwl (%edi),%eax
416b0b:	0f af d0             	imul   %eax,%edx
416b0e:	8b 41 fc             	mov    -0x4(%ecx),%eax
416b11:	89 5d 98             	mov    %ebx,-0x68(%ebp)
416b14:	8d 3c 10             	lea    (%eax,%edx,1),%edi
416b17:	3b f8                	cmp    %eax,%edi
416b19:	72 04                	jb     0x416b1f
416b1b:	3b fa                	cmp    %edx,%edi
416b1d:	73 05                	jae    0x416b24
416b1f:	33 c0                	xor    %eax,%eax
416b21:	40                   	inc    %eax
416b22:	eb 03                	jmp    0x416b27
416b24:	8b 45 98             	mov    -0x68(%ebp),%eax
416b27:	89 79 fc             	mov    %edi,-0x4(%ecx)
416b2a:	85 c0                	test   %eax,%eax
416b2c:	74 03                	je     0x416b31
416b2e:	66 ff 01             	incw   (%ecx)
416b31:	8b 7d a8             	mov    -0x58(%ebp),%edi
416b34:	8b 45 94             	mov    -0x6c(%ebp),%eax
416b37:	83 c7 02             	add    $0x2,%edi
416b3a:	83 e8 02             	sub    $0x2,%eax
416b3d:	4e                   	dec    %esi
416b3e:	89 7d a8             	mov    %edi,-0x58(%ebp)
416b41:	89 45 94             	mov    %eax,-0x6c(%ebp)
416b44:	85 f6                	test   %esi,%esi
416b46:	7f bd                	jg     0x416b05
416b48:	8b 55 b0             	mov    -0x50(%ebp),%edx
416b4b:	8b 45 a4             	mov    -0x5c(%ebp),%eax
416b4e:	83 c1 02             	add    $0x2,%ecx
416b51:	42                   	inc    %edx
416b52:	48                   	dec    %eax
416b53:	89 55 b0             	mov    %edx,-0x50(%ebp)
416b56:	89 45 a4             	mov    %eax,-0x5c(%ebp)
416b59:	85 c0                	test   %eax,%eax
416b5b:	7f 93                	jg     0x416af0
416b5d:	8b 7d b4             	mov    -0x4c(%ebp),%edi
416b60:	8b 75 f8             	mov    -0x8(%ebp),%esi
416b63:	81 c7 02 c0 00 00    	add    $0xc002,%edi
416b69:	66 85 ff             	test   %di,%di
416b6c:	0f 8e 9c 00 00 00    	jle    0x416c0e
416b72:	8b 5d f0             	mov    -0x10(%ebp),%ebx
416b75:	89 5d bc             	mov    %ebx,-0x44(%ebp)
416b78:	85 f6                	test   %esi,%esi
416b7a:	78 2c                	js     0x416ba8
416b7c:	8b 45 f4             	mov    -0xc(%ebp),%eax
416b7f:	8b c8                	mov    %eax,%ecx
416b81:	8b d3                	mov    %ebx,%edx
416b83:	03 c0                	add    %eax,%eax
416b85:	c1 ea 1f             	shr    $0x1f,%edx
416b88:	0b c2                	or     %edx,%eax
416b8a:	89 45 f4             	mov    %eax,-0xc(%ebp)
416b8d:	c1 e9 1f             	shr    $0x1f,%ecx
416b90:	03 f6                	add    %esi,%esi
416b92:	b8 ff ff 00 00       	mov    $0xffff,%eax
416b97:	03 db                	add    %ebx,%ebx
416b99:	0b f1                	or     %ecx,%esi
416b9b:	03 f8                	add    %eax,%edi
416b9d:	89 5d f0             	mov    %ebx,-0x10(%ebp)
416ba0:	89 75 f8             	mov    %esi,-0x8(%ebp)
416ba3:	66 85 ff             	test   %di,%di
416ba6:	7f d0                	jg     0x416b78
416ba8:	89 5d bc             	mov    %ebx,-0x44(%ebp)
416bab:	8b 55 bc             	mov    -0x44(%ebp),%edx
416bae:	6a 00                	push   $0x0
416bb0:	5b                   	pop    %ebx
416bb1:	66 85 ff             	test   %di,%di
416bb4:	7e 5b                	jle    0x416c11
416bb6:	66 8b 4d f0          	mov    -0x10(%ebp),%cx
416bba:	b8 00 80 00 00       	mov    $0x8000,%eax
416bbf:	66 3b c8             	cmp    %ax,%cx
416bc2:	77 12                	ja     0x416bd6
416bc4:	81 e2 ff ff 01 00    	and    $0x1ffff,%edx
416bca:	81 fa 00 80 01 00    	cmp    $0x18000,%edx
416bd0:	0f 85 bd 00 00 00    	jne    0x416c93
416bd6:	8b 45 f2             	mov    -0xe(%ebp),%eax
416bd9:	83 f8 ff             	cmp    $0xffffffff,%eax
416bdc:	0f 85 ad 00 00 00    	jne    0x416c8f
416be2:	8b 45 f6             	mov    -0xa(%ebp),%eax
416be5:	89 5d f2             	mov    %ebx,-0xe(%ebp)
416be8:	83 f8 ff             	cmp    $0xffffffff,%eax
416beb:	0f 85 95 00 00 00    	jne    0x416c86
416bf1:	66 8b 45 fa          	mov    -0x6(%ebp),%ax
416bf5:	b9 ff ff 00 00       	mov    $0xffff,%ecx
416bfa:	89 5d f6             	mov    %ebx,-0xa(%ebp)
416bfd:	66 3b c1             	cmp    %cx,%ax
416c00:	75 7c                	jne    0x416c7e
416c02:	b8 00 80 00 00       	mov    $0x8000,%eax
416c07:	66 89 45 fa          	mov    %ax,-0x6(%ebp)
416c0b:	47                   	inc    %edi
416c0c:	eb 7c                	jmp    0x416c8a
416c0e:	8b 55 f0             	mov    -0x10(%ebp),%edx
416c11:	b8 ff ff 00 00       	mov    $0xffff,%eax
416c16:	03 f8                	add    %eax,%edi
416c18:	66 85 ff             	test   %di,%di
416c1b:	79 99                	jns    0x416bb6
416c1d:	8b c7                	mov    %edi,%eax
416c1f:	f7 d8                	neg    %eax
416c21:	0f b7 c0             	movzwl %ax,%eax
416c24:	03 f8                	add    %eax,%edi
416c26:	89 7d b4             	mov    %edi,-0x4c(%ebp)
416c29:	8b 7d 84             	mov    -0x7c(%ebp),%edi
416c2c:	89 45 a4             	mov    %eax,-0x5c(%ebp)
416c2f:	f6 45 f0 01          	testb  $0x1,-0x10(%ebp)
416c33:	74 01                	je     0x416c36
416c35:	47                   	inc    %edi
416c36:	8b 5d f4             	mov    -0xc(%ebp),%ebx
416c39:	8b cb                	mov    %ebx,%ecx
416c3b:	8b c6                	mov    %esi,%eax
416c3d:	c1 e0 1f             	shl    $0x1f,%eax
416c40:	c1 e1 1f             	shl    $0x1f,%ecx
416c43:	d1 eb                	shr    $1,%ebx
416c45:	d1 ea                	shr    $1,%edx
416c47:	0b d8                	or     %eax,%ebx
416c49:	0b d1                	or     %ecx,%edx
416c4b:	d1 ee                	shr    $1,%esi
416c4d:	ff 4d a4             	decl   -0x5c(%ebp)
416c50:	89 5d f4             	mov    %ebx,-0xc(%ebp)
416c53:	89 55 f0             	mov    %edx,-0x10(%ebp)
416c56:	75 d7                	jne    0x416c2f
416c58:	6a 00                	push   $0x0
416c5a:	85 ff                	test   %edi,%edi
416c5c:	8b 7d b4             	mov    -0x4c(%ebp),%edi
416c5f:	89 75 f8             	mov    %esi,-0x8(%ebp)
416c62:	5b                   	pop    %ebx
416c63:	0f 84 4d ff ff ff    	je     0x416bb6
416c69:	33 c0                	xor    %eax,%eax
416c6b:	66 8b ca             	mov    %dx,%cx
416c6e:	40                   	inc    %eax
416c6f:	66 0b c8             	or     %ax,%cx
416c72:	66 89 4d f0          	mov    %cx,-0x10(%ebp)
416c76:	8b 55 f0             	mov    -0x10(%ebp),%edx
416c79:	e9 3c ff ff ff       	jmp    0x416bba
416c7e:	66 40                	inc    %ax
416c80:	66 89 45 fa          	mov    %ax,-0x6(%ebp)
416c84:	eb 04                	jmp    0x416c8a
416c86:	40                   	inc    %eax
416c87:	89 45 f6             	mov    %eax,-0xa(%ebp)
416c8a:	8b 75 f8             	mov    -0x8(%ebp),%esi
416c8d:	eb 04                	jmp    0x416c93
416c8f:	40                   	inc    %eax
416c90:	89 45 f2             	mov    %eax,-0xe(%ebp)
416c93:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
416c98:	66 3b f8             	cmp    %ax,%di
416c9b:	73 20                	jae    0x416cbd
416c9d:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
416ca1:	0b 7d ac             	or     -0x54(%ebp),%edi
416ca4:	66 89 45 e0          	mov    %ax,-0x20(%ebp)
416ca8:	8b 45 f4             	mov    -0xc(%ebp),%eax
416cab:	89 45 e2             	mov    %eax,-0x1e(%ebp)
416cae:	89 75 e6             	mov    %esi,-0x1a(%ebp)
416cb1:	8b 55 e4             	mov    -0x1c(%ebp),%edx
416cb4:	8b 75 e0             	mov    -0x20(%ebp),%esi
416cb7:	66 89 7d ea          	mov    %di,-0x16(%ebp)
416cbb:	eb 1b                	jmp    0x416cd8
416cbd:	33 c0                	xor    %eax,%eax
416cbf:	66 39 45 ac          	cmp    %ax,-0x54(%ebp)
416cc3:	0f 94 c0             	sete   %al
416cc6:	48                   	dec    %eax
416cc7:	25 00 00 00 80       	and    $0x80000000,%eax
416ccc:	05 00 80 ff 7f       	add    $0x7fff8000,%eax
416cd1:	89 45 e8             	mov    %eax,-0x18(%ebp)
416cd4:	8b f3                	mov    %ebx,%esi
416cd6:	8b d3                	mov    %ebx,%edx
416cd8:	f6 45 18 01          	testb  $0x1,0x18(%ebp)
416cdc:	8b 4d 90             	mov    -0x70(%ebp),%ecx
416cdf:	8b 45 b8             	mov    -0x48(%ebp),%eax
416ce2:	8b 7d 14             	mov    0x14(%ebp),%edi
416ce5:	66 89 01             	mov    %ax,(%ecx)
416ce8:	74 36                	je     0x416d20
416cea:	98                   	cwtl
416ceb:	03 f8                	add    %eax,%edi
416ced:	89 7d b8             	mov    %edi,-0x48(%ebp)
416cf0:	85 ff                	test   %edi,%edi
416cf2:	7f 2f                	jg     0x416d23
416cf4:	33 c0                	xor    %eax,%eax
416cf6:	66 89 01             	mov    %ax,(%ecx)
416cf9:	b8 00 80 00 00       	mov    $0x8000,%eax
416cfe:	66 39 45 88          	cmp    %ax,-0x78(%ebp)
416d02:	0f 95 c0             	setne  %al
416d05:	fe c8                	dec    %al
416d07:	24 0d                	and    $0xd,%al
416d09:	04 20                	add    $0x20,%al
416d0b:	88 41 02             	mov    %al,0x2(%ecx)
416d0e:	33 c0                	xor    %eax,%eax
416d10:	40                   	inc    %eax
416d11:	88 41 03             	mov    %al,0x3(%ecx)
416d14:	c6 41 04 30          	movb   $0x30,0x4(%ecx)
416d18:	88 59 05             	mov    %bl,0x5(%ecx)
416d1b:	e9 ac 01 00 00       	jmp    0x416ecc
416d20:	89 7d b8             	mov    %edi,-0x48(%ebp)
416d23:	6a 15                	push   $0x15
416d25:	58                   	pop    %eax
416d26:	3b f8                	cmp    %eax,%edi
416d28:	7e 03                	jle    0x416d2d
416d2a:	89 45 b8             	mov    %eax,-0x48(%ebp)
416d2d:	8b 7d e8             	mov    -0x18(%ebp),%edi
416d30:	c1 ef 10             	shr    $0x10,%edi
416d33:	81 ef fe 3f 00 00    	sub    $0x3ffe,%edi
416d39:	33 c0                	xor    %eax,%eax
416d3b:	6a 08                	push   $0x8
416d3d:	89 7d 98             	mov    %edi,-0x68(%ebp)
416d40:	66 89 45 ea          	mov    %ax,-0x16(%ebp)
416d44:	8b 5d e8             	mov    -0x18(%ebp),%ebx
416d47:	5f                   	pop    %edi
416d48:	8b ca                	mov    %edx,%ecx
416d4a:	8b c6                	mov    %esi,%eax
416d4c:	c1 e8 1f             	shr    $0x1f,%eax
416d4f:	c1 e9 1f             	shr    $0x1f,%ecx
416d52:	03 d2                	add    %edx,%edx