41675f:	8b 45 ea             	mov    -0x16(%ebp),%eax
416762:	89 7d 9c             	mov    %edi,-0x64(%ebp)
416765:	31 45 9c             	xor    %eax,-0x64(%ebp)
416768:	25 ff 7f 00 00       	and    $0x7fff,%eax
41676d:	81 e7 ff 7f 00 00    	and    $0x7fff,%edi
416773:	89 45 b0             	mov    %eax,-0x50(%ebp)
416776:	03 c7                	add    %edi,%eax
416778:	be 00 80 00 00       	mov    $0x8000,%esi
41677d:	21 75 9c             	and    %esi,-0x64(%ebp)
416780:	89 7d a0             	mov    %edi,-0x60(%ebp)
416783:	0f b7 f8             	movzwl %ax,%edi
416786:	8b 45 b0             	mov    -0x50(%ebp),%eax
416789:	4e                   	dec    %esi
41678a:	89 5d 8c             	mov    %ebx,-0x74(%ebp)
41678d:	89 5d f0             	mov    %ebx,-0x10(%ebp)
416790:	89 5d f4             	mov    %ebx,-0xc(%ebp)
416793:	89 5d f8             	mov    %ebx,-0x8(%ebp)
416796:	89 7d b4             	mov    %edi,-0x4c(%ebp)
416799:	66 3b c6             	cmp    %si,%ax
41679c:	0f 83 4a 02 00 00    	jae    0x4169ec
4167a2:	66 39 75 a0          	cmp    %si,-0x60(%ebp)
4167a6:	8b 75 c0             	mov    -0x40(%ebp),%esi
4167a9:	0f 83 3d 02 00 00    	jae    0x4169ec
4167af:	66 3b 7d 94          	cmp    -0x6c(%ebp),%di
4167b3:	0f 87 33 02 00 00    	ja     0x4169ec
4167b9:	66 3b 7d a8          	cmp    -0x58(%ebp),%di
4167bd:	77 08                	ja     0x4167c7
4167bf:	89 5d e8             	mov    %ebx,-0x18(%ebp)
4167c2:	e9 3c 02 00 00       	jmp    0x416a03
4167c7:	66 85 c0             	test   %ax,%ax
4167ca:	75 20                	jne    0x4167ec
4167cc:	47                   	inc    %edi
4167cd:	f7 45 e8 ff ff ff 7f 	testl  $0x7fffffff,-0x18(%ebp)
4167d4:	89 7d b4             	mov    %edi,-0x4c(%ebp)
4167d7:	75 13                	jne    0x4167ec
4167d9:	85 d2                	test   %edx,%edx
4167db:	75 0f                	jne    0x4167ec
4167dd:	85 f6                	test   %esi,%esi
4167df:	75 0b                	jne    0x4167ec
4167e1:	33 c0                	xor    %eax,%eax
4167e3:	66 89 45 ea          	mov    %ax,-0x16(%ebp)
4167e7:	e9 24 02 00 00       	jmp    0x416a10
4167ec:	66 83 7d a0 00       	cmpw   $0x0,-0x60(%ebp)
4167f1:	75 16                	jne    0x416809
4167f3:	47                   	inc    %edi
4167f4:	f7 41 08 ff ff ff 7f 	testl  $0x7fffffff,0x8(%ecx)
4167fb:	89 7d b4             	mov    %edi,-0x4c(%ebp)
4167fe:	75 09                	jne    0x416809
416800:	39 59 04             	cmp    %ebx,0x4(%ecx)
416803:	75 04                	jne    0x416809
416805:	39 19                	cmp    %ebx,(%ecx)
416807:	74 b6                	je     0x4167bf
416809:	6a 05                	push   $0x5
41680b:	8b c3                	mov    %ebx,%eax
41680d:	5e                   	pop    %esi
41680e:	89 45 80             	mov    %eax,-0x80(%ebp)
416811:	8d 55 f4             	lea    -0xc(%ebp),%edx
416814:	89 75 b0             	mov    %esi,-0x50(%ebp)
416817:	89 75 a0             	mov    %esi,-0x60(%ebp)
41681a:	85 f6                	test   %esi,%esi
41681c:	7e 6f                	jle    0x41688d
41681e:	8d 75 e0             	lea    -0x20(%ebp),%esi
416821:	8d 04 46             	lea    (%esi,%eax,2),%eax
416824:	8d 71 08             	lea    0x8(%ecx),%esi
416827:	8b 4d a0             	mov    -0x60(%ebp),%ecx
41682a:	89 45 c0             	mov    %eax,-0x40(%ebp)
41682d:	89 b5 7c ff ff ff    	mov    %esi,-0x84(%ebp)
416833:	0f b7 38             	movzwl (%eax),%edi
416836:	0f b7 06             	movzwl (%esi),%eax
416839:	0f af f8             	imul   %eax,%edi
41683c:	8b 42 fc             	mov    -0x4(%edx),%eax
41683f:	89 5d 84             	mov    %ebx,-0x7c(%ebp)
416842:	8d 34 38             	lea    (%eax,%edi,1),%esi
416845:	3b f0                	cmp    %eax,%esi
416847:	89 75 a0             	mov    %esi,-0x60(%ebp)
41684a:	8b c6                	mov    %esi,%eax
41684c:	72 04                	jb     0x416852
41684e:	3b c7                	cmp    %edi,%eax
416850:	73 05                	jae    0x416857
416852:	33 f6                	xor    %esi,%esi
416854:	46                   	inc    %esi
416855:	eb 03                	jmp    0x41685a
416857:	8b 75 84             	mov    -0x7c(%ebp),%esi
41685a:	89 42 fc             	mov    %eax,-0x4(%edx)
41685d:	85 f6                	test   %esi,%esi
41685f:	74 03                	je     0x416864
416861:	66 ff 02             	incw   (%edx)
416864:	8b 45 c0             	mov    -0x40(%ebp),%eax
416867:	8b b5 7c ff ff ff    	mov    -0x84(%ebp),%esi
41686d:	83 c0 02             	add    $0x2,%eax
416870:	83 ee 02             	sub    $0x2,%esi
416873:	49                   	dec    %ecx
416874:	89 45 c0             	mov    %eax,-0x40(%ebp)
416877:	89 b5 7c ff ff ff    	mov    %esi,-0x84(%ebp)
41687d:	85 c9                	test   %ecx,%ecx
41687f:	7f b2                	jg     0x416833
416881:	8b 8d 78 ff ff ff    	mov    -0x88(%ebp),%ecx
416887:	8b 75 b0             	mov    -0x50(%ebp),%esi
41688a:	8b 45 80             	mov    -0x80(%ebp),%eax
41688d:	83 c2 02             	add    $0x2,%edx
416890:	40                   	inc    %eax
416891:	4e                   	dec    %esi
416892:	89 45 80             	mov    %eax,-0x80(%ebp)
416895:	89 75 b0             	mov    %esi,-0x50(%ebp)
416898:	85 f6                	test   %esi,%esi
41689a:	0f 8f 77 ff ff ff    	jg     0x416817
4168a0:	8b 7d b4             	mov    -0x4c(%ebp),%edi
4168a3:	8b 45 f8             	mov    -0x8(%ebp),%eax
4168a6:	8b 75 f0             	mov    -0x10(%ebp),%esi
4168a9:	81 c7 02 c0 00 00    	add    $0xc002,%edi
4168af:	89 45 c0             	mov    %eax,-0x40(%ebp)
4168b2:	66 85 ff             	test   %di,%di
4168b5:	7e 3b                	jle    0x4168f2
4168b7:	85 c0                	test   %eax,%eax
4168b9:	78 32                	js     0x4168ed
4168bb:	8b 45 f4             	mov    -0xc(%ebp),%eax
4168be:	8b c8                	mov    %eax,%ecx
4168c0:	03 c0                	add    %eax,%eax
4168c2:	8b d6                	mov    %esi,%edx
4168c4:	c1 ea 1f             	shr    $0x1f,%edx
4168c7:	0b c2                	or     %edx,%eax
4168c9:	89 45 f4             	mov    %eax,-0xc(%ebp)
4168cc:	8b 45 c0             	mov    -0x40(%ebp),%eax
4168cf:	c1 e9 1f             	shr    $0x1f,%ecx
4168d2:	03 c0                	add    %eax,%eax
4168d4:	0b c1                	or     %ecx,%eax
4168d6:	b9 ff ff 00 00       	mov    $0xffff,%ecx
4168db:	03 f6                	add    %esi,%esi
4168dd:	03 f9                	add    %ecx,%edi
4168df:	89 75 f0             	mov    %esi,-0x10(%ebp)
4168e2:	89 45 c0             	mov    %eax,-0x40(%ebp)
4168e5:	89 45 f8             	mov    %eax,-0x8(%ebp)
4168e8:	66 85 ff             	test   %di,%di
4168eb:	7f ca                	jg     0x4168b7
4168ed:	66 85 ff             	test   %di,%di
4168f0:	7f 71                	jg     0x416963
4168f2:	b8 ff ff 00 00       	mov    $0xffff,%eax
4168f7:	03 f8                	add    %eax,%edi
4168f9:	66 85 ff             	test   %di,%di
4168fc:	79 65                	jns    0x416963
4168fe:	8b 5d c0             	mov    -0x40(%ebp),%ebx
416901:	8b c7                	mov    %edi,%eax
416903:	f7 d8                	neg    %eax
416905:	0f b7 c0             	movzwl %ax,%eax
416908:	03 f8                	add    %eax,%edi
41690a:	33 d2                	xor    %edx,%edx
41690c:	89 7d b4             	mov    %edi,-0x4c(%ebp)
41690f:	8b 7d 8c             	mov    -0x74(%ebp),%edi
416912:	89 45 b0             	mov    %eax,-0x50(%ebp)
416915:	42                   	inc    %edx
416916:	84 55 f0             	test   %dl,-0x10(%ebp)
416919:	74 01                	je     0x41691c
41691b:	47                   	inc    %edi
41691c:	8b 4d f4             	mov    -0xc(%ebp),%ecx
41691f:	8b c3                	mov    %ebx,%eax
416921:	c1 e0 1f             	shl    $0x1f,%eax
416924:	89 4d c0             	mov    %ecx,-0x40(%ebp)
416927:	d1 6d c0             	shrl   $1,-0x40(%ebp)
41692a:	09 45 c0             	or     %eax,-0x40(%ebp)
41692d:	8b 45 c0             	mov    -0x40(%ebp),%eax
416930:	c1 e1 1f             	shl    $0x1f,%ecx
416933:	d1 ee                	shr    $1,%esi
416935:	d1 eb                	shr    $1,%ebx
416937:	0b f1                	or     %ecx,%esi
416939:	ff 4d b0             	decl   -0x50(%ebp)
41693c:	89 5d f8             	mov    %ebx,-0x8(%ebp)
41693f:	89 45 f4             	mov    %eax,-0xc(%ebp)
416942:	89 75 f0             	mov    %esi,-0x10(%ebp)
416945:	75 cf                	jne    0x416916
416947:	6a 00                	push   $0x0
416949:	89 5d c0             	mov    %ebx,-0x40(%ebp)
41694c:	85 ff                	test   %edi,%edi
41694e:	8b 7d b4             	mov    -0x4c(%ebp),%edi
416951:	5b                   	pop    %ebx
416952:	74 0f                	je     0x416963
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