41889c:	73 07                	jae    0x4188a5
41889e:	c7 45 a4 01 00 00 00 	movl   $0x1,-0x5c(%ebp)
4188a5:	83 7d a4 00          	cmpl   $0x0,-0x5c(%ebp)
4188a9:	89 46 fc             	mov    %eax,-0x4(%esi)
4188ac:	74 03                	je     0x4188b1
4188ae:	66 ff 06             	incw   (%esi)
4188b1:	83 45 94 02          	addl   $0x2,-0x6c(%ebp)
4188b5:	83 6d 98 02          	subl   $0x2,-0x68(%ebp)
4188b9:	ff 4d b0             	decl   -0x50(%ebp)
4188bc:	83 7d b0 00          	cmpl   $0x0,-0x50(%ebp)
4188c0:	7f bb                	jg     0x41887d
4188c2:	8b 45 bc             	mov    -0x44(%ebp),%eax
4188c5:	46                   	inc    %esi
4188c6:	46                   	inc    %esi
4188c7:	ff 45 a8             	incl   -0x58(%ebp)
4188ca:	ff 4d c0             	decl   -0x40(%ebp)
4188cd:	83 7d c0 00          	cmpl   $0x0,-0x40(%ebp)
4188d1:	7f 8e                	jg     0x418861
4188d3:	81 c7 02 c0 00 00    	add    $0xc002,%edi
4188d9:	66 85 ff             	test   %di,%di
4188dc:	7e 3b                	jle    0x418919
4188de:	f7 45 f8 00 00 00 80 	testl  $0x80000000,-0x8(%ebp)
4188e5:	75 2d                	jne    0x418914
4188e7:	8b 45 f4             	mov    -0xc(%ebp),%eax
4188ea:	8b 4d f0             	mov    -0x10(%ebp),%ecx
4188ed:	d1 65 f0             	shll   $1,-0x10(%ebp)
4188f0:	8b d0                	mov    %eax,%edx
4188f2:	03 c0                	add    %eax,%eax
4188f4:	c1 e9 1f             	shr    $0x1f,%ecx
4188f7:	0b c1                	or     %ecx,%eax
4188f9:	89 45 f4             	mov    %eax,-0xc(%ebp)
4188fc:	8b 45 f8             	mov    -0x8(%ebp),%eax
4188ff:	c1 ea 1f             	shr    $0x1f,%edx
418902:	03 c0                	add    %eax,%eax
418904:	0b c2                	or     %edx,%eax
418906:	81 c7 ff ff 00 00    	add    $0xffff,%edi
41890c:	89 45 f8             	mov    %eax,-0x8(%ebp)
41890f:	66 85 ff             	test   %di,%di
418912:	7f ca                	jg     0x4188de
418914:	66 85 ff             	test   %di,%di
418917:	7f 4d                	jg     0x418966
418919:	81 c7 ff ff 00 00    	add    $0xffff,%edi
41891f:	66 85 ff             	test   %di,%di
418922:	7d 42                	jge    0x418966
418924:	8b c7                	mov    %edi,%eax
418926:	f7 d8                	neg    %eax
418928:	0f b7 c0             	movzwl %ax,%eax
41892b:	03 f8                	add    %eax,%edi
41892d:	f6 45 f0 01          	testb  $0x1,-0x10(%ebp)
418931:	74 03                	je     0x418936
418933:	ff 45 ac             	incl   -0x54(%ebp)
418936:	8b 4d f8             	mov    -0x8(%ebp),%ecx
418939:	8b 75 f4             	mov    -0xc(%ebp),%esi
41893c:	8b 55 f4             	mov    -0xc(%ebp),%edx
41893f:	d1 6d f8             	shrl   $1,-0x8(%ebp)
418942:	c1 e1 1f             	shl    $0x1f,%ecx
418945:	d1 ee                	shr    $1,%esi
418947:	0b f1                	or     %ecx,%esi
418949:	8b 4d f0             	mov    -0x10(%ebp),%ecx
41894c:	c1 e2 1f             	shl    $0x1f,%edx
41894f:	d1 e9                	shr    $1,%ecx
418951:	0b ca                	or     %edx,%ecx
418953:	48                   	dec    %eax
418954:	89 75 f4             	mov    %esi,-0xc(%ebp)
418957:	89 4d f0             	mov    %ecx,-0x10(%ebp)
41895a:	75 d1                	jne    0x41892d
41895c:	39 45 ac             	cmp    %eax,-0x54(%ebp)
41895f:	74 05                	je     0x418966
418961:	66 83 4d f0 01       	orw    $0x1,-0x10(%ebp)
418966:	b8 00 80 00 00       	mov    $0x8000,%eax
41896b:	8b c8                	mov    %eax,%ecx
41896d:	66 39 4d f0          	cmp    %cx,-0x10(%ebp)
418971:	77 11                	ja     0x418984
418973:	8b 4d f0             	mov    -0x10(%ebp),%ecx
418976:	81 e1 ff ff 01 00    	and    $0x1ffff,%ecx
41897c:	81 f9 00 80 01 00    	cmp    $0x18000,%ecx
418982:	75 34                	jne    0x4189b8
418984:	83 7d f2 ff          	cmpl   $0xffffffff,-0xe(%ebp)
418988:	75 2b                	jne    0x4189b5
41898a:	83 65 f2 00          	andl   $0x0,-0xe(%ebp)
41898e:	83 7d f6 ff          	cmpl   $0xffffffff,-0xa(%ebp)
418992:	75 1c                	jne    0x4189b0
418994:	83 65 f6 00          	andl   $0x0,-0xa(%ebp)
418998:	b9 ff ff 00 00       	mov    $0xffff,%ecx
41899d:	66 39 4d fa          	cmp    %cx,-0x6(%ebp)
4189a1:	75 07                	jne    0x4189aa
4189a3:	66 89 45 fa          	mov    %ax,-0x6(%ebp)
4189a7:	47                   	inc    %edi
4189a8:	eb 0e                	jmp    0x4189b8
4189aa:	66 ff 45 fa          	incw   -0x6(%ebp)
4189ae:	eb 08                	jmp    0x4189b8
4189b0:	ff 45 f6             	incl   -0xa(%ebp)
4189b3:	eb 03                	jmp    0x4189b8
4189b5:	ff 45 f2             	incl   -0xe(%ebp)
4189b8:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
4189bd:	66 3b f8             	cmp    %ax,%di
4189c0:	0f 82 ab 00 00 00    	jb     0x418a71
4189c6:	33 c0                	xor    %eax,%eax
4189c8:	33 c9                	xor    %ecx,%ecx
4189ca:	66 39 45 b8          	cmp    %ax,-0x48(%ebp)
4189ce:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4189d1:	0f 94 c1             	sete   %cl
4189d4:	89 45 e0             	mov    %eax,-0x20(%ebp)
4189d7:	49                   	dec    %ecx
4189d8:	81 e1 00 00 00 80    	and    $0x80000000,%ecx
4189de:	81 c1 00 80 ff 7f    	add    $0x7fff8000,%ecx
4189e4:	89 4d e8             	mov    %ecx,-0x18(%ebp)
4189e7:	33 f6                	xor    %esi,%esi
4189e9:	3b de                	cmp    %esi,%ebx
4189eb:	0f 85 7b fd ff ff    	jne    0x41876c
4189f1:	8b 4d e8             	mov    -0x18(%ebp),%ecx
4189f4:	c1 e9 10             	shr    $0x10,%ecx
4189f7:	ba ff 3f 00 00       	mov    $0x3fff,%edx
4189fc:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
418a01:	66 3b ca             	cmp    %dx,%cx
418a04:	0f 82 a3 02 00 00    	jb     0x418cad
418a0a:	ff 45 b4             	incl   -0x4c(%ebp)
418a0d:	33 d2                	xor    %edx,%edx
418a0f:	89 55 b0             	mov    %edx,-0x50(%ebp)
418a12:	89 55 f0             	mov    %edx,-0x10(%ebp)
418a15:	89 55 f4             	mov    %edx,-0xc(%ebp)
418a18:	89 55 f8             	mov    %edx,-0x8(%ebp)
418a1b:	8b 55 da             	mov    -0x26(%ebp),%edx
418a1e:	0f b7 c9             	movzwl %cx,%ecx
418a21:	8b da                	mov    %edx,%ebx
418a23:	33 d9                	xor    %ecx,%ebx
418a25:	23 c8                	and    %eax,%ecx
418a27:	23 d0                	and    %eax,%edx
418a29:	81 e3 00 80 00 00    	and    $0x8000,%ebx
418a2f:	8b f8                	mov    %eax,%edi
418a31:	8d 34 0a             	lea    (%edx,%ecx,1),%esi
418a34:	89 5d a4             	mov    %ebx,-0x5c(%ebp)
418a37:	0f b7 f6             	movzwl %si,%esi
418a3a:	66 3b cf             	cmp    %di,%cx
418a3d:	0f 83 4c 02 00 00    	jae    0x418c8f
418a43:	66 3b d0             	cmp    %ax,%dx
418a46:	0f 83 43 02 00 00    	jae    0x418c8f
418a4c:	b8 fd bf 00 00       	mov    $0xbffd,%eax
418a51:	66 3b f0             	cmp    %ax,%si
418a54:	0f 87 35 02 00 00    	ja     0x418c8f
418a5a:	b8 bf 3f 00 00       	mov    $0x3fbf,%eax
418a5f:	66 3b f0             	cmp    %ax,%si
418a62:	77 4b                	ja     0x418aaf
418a64:	33 c0                	xor    %eax,%eax
418a66:	89 45 e4             	mov    %eax,-0x1c(%ebp)
418a69:	89 45 e0             	mov    %eax,-0x20(%ebp)
418a6c:	e9 39 02 00 00       	jmp    0x418caa
418a71:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
418a75:	0b 7d b8             	or     -0x48(%ebp),%edi
418a78:	66 89 45 e0          	mov    %ax,-0x20(%ebp)
418a7c:	8b 45 f4             	mov    -0xc(%ebp),%eax
418a7f:	89 45 e2             	mov    %eax,-0x1e(%ebp)
418a82:	8b 45 f8             	mov    -0x8(%ebp),%eax
418a85:	89 45 e6             	mov    %eax,-0x1a(%ebp)
418a88:	66 89 7d ea          	mov    %di,-0x16(%ebp)
418a8c:	e9 56 ff ff ff       	jmp    0x4189e7
418a91:	33 c0                	xor    %eax,%eax
418a93:	33 f6                	xor    %esi,%esi
418a95:	66 39 75 b8          	cmp    %si,-0x48(%ebp)
418a99:	0f 94 c0             	sete   %al
418a9c:	48                   	dec    %eax
418a9d:	25 00 00 00 80       	and    $0x80000000,%eax
418aa2:	05 00 80 ff 7f       	add    $0x7fff8000,%eax
418aa7:	89 45 e8             	mov    %eax,-0x18(%ebp)
418aaa:	e9 5c fd ff ff       	jmp    0x41880b
418aaf:	33 c0                	xor    %eax,%eax
418ab1:	66 3b c8             	cmp    %ax,%cx
418ab4:	75 1d                	jne    0x418ad3
418ab6:	46                   	inc    %esi
418ab7:	f7 45 e8 ff ff ff 7f 	testl  $0x7fffffff,-0x18(%ebp)
418abe:	75 13                	jne    0x418ad3
418ac0:	39 45 e4             	cmp    %eax,-0x1c(%ebp)
418ac3:	75 0e                	jne    0x418ad3
418ac5:	39 45 e0             	cmp    %eax,-0x20(%ebp)
418ac8:	75 09                	jne    0x418ad3
418aca:	66 89 45 ea          	mov    %ax,-0x16(%ebp)
418ace:	e9 da 01 00 00       	jmp    0x418cad
418ad3:	66 3b d0             	cmp    %ax,%dx
418ad6:	75 18                	jne    0x418af0
418ad8:	46                   	inc    %esi
418ad9:	f7 45 d8 ff ff ff 7f 	testl  $0x7fffffff,-0x28(%ebp)
418ae0:	75 0e                	jne    0x418af0
418ae2:	39 45 d4             	cmp    %eax,-0x2c(%ebp)
418ae5:	75 09                	jne    0x418af0
418ae7:	39 45 d0             	cmp    %eax,-0x30(%ebp)
418aea:	0f 84 76 ff ff ff    	je     0x418a66
418af0:	89 45 a8             	mov    %eax,-0x58(%ebp)
418af3:	8d 7d f4             	lea    -0xc(%ebp),%edi
418af6:	c7 45 c0 05 00 00 00 	movl   $0x5,-0x40(%ebp)
418afd:	8b 45 a8             	mov    -0x58(%ebp),%eax
418b00:	8b 4d c0             	mov    -0x40(%ebp),%ecx
418b03:	03 c0                	add    %eax,%eax
418b05:	89 4d ac             	mov    %ecx,-0x54(%ebp)
418b08:	85 c9                	test   %ecx,%ecx
418b0a:	7e 4a                	jle    0x418b56
418b0c:	8d 4d d8             	lea    -0x28(%ebp),%ecx
418b0f:	89 4d b8             	mov    %ecx,-0x48(%ebp)
418b12:	8d 44 05 e0          	lea    -0x20(%ebp,%eax,1),%eax
418b16:	8b 4d b8             	mov    -0x48(%ebp),%ecx
418b19:	0f b7 10             	movzwl (%eax),%edx
418b1c:	0f b7 09             	movzwl (%ecx),%ecx
418b1f:	83 65 bc 00          	andl   $0x0,-0x44(%ebp)
418b23:	0f af ca             	imul   %edx,%ecx
418b26:	8b 57 fc             	mov    -0x4(%edi),%edx
418b29:	8d 1c 0a             	lea    (%edx,%ecx,1),%ebx
418b2c:	3b da                	cmp    %edx,%ebx
418b2e:	72 04                	jb     0x418b34
418b30:	3b d9                	cmp    %ecx,%ebx
418b32:	73 07                	jae    0x418b3b
418b34:	c7 45 bc 01 00 00 00 	movl   $0x1,-0x44(%ebp)
418b3b:	83 7d bc 00          	cmpl   $0x0,-0x44(%ebp)
418b3f:	89 5f fc             	mov    %ebx,-0x4(%edi)
418b42:	74 03                	je     0x418b47
418b44:	66 ff 07             	incw   (%edi)
418b47:	83 6d b8 02          	subl   $0x2,-0x48(%ebp)
418b4b:	40                   	inc    %eax
418b4c:	40                   	inc    %eax
418b4d:	ff 4d ac             	decl   -0x54(%ebp)
418b50:	83 7d ac 00          	cmpl   $0x0,-0x54(%ebp)
418b54:	7f c0                	jg     0x418b16
418b56:	47                   	inc    %edi
418b57:	47                   	inc    %edi
418b58:	ff 45 a8             	incl   -0x58(%ebp)
418b5b:	ff 4d c0             	decl   -0x40(%ebp)
418b5e:	83 7d c0 00          	cmpl   $0x0,-0x40(%ebp)
418b62:	7f 99                	jg     0x418afd
418b64:	81 c6 02 c0 00 00    	add    $0xc002,%esi
418b6a:	66 85 f6             	test   %si,%si
418b6d:	7e 37                	jle    0x418ba6
418b6f:	8b 7d f8             	mov    -0x8(%ebp),%edi
418b72:	85 ff                	test   %edi,%edi
418b74:	78 2b                	js     0x418ba1
418b76:	8b 45 f4             	mov    -0xc(%ebp),%eax
418b79:	8b 4d f0             	mov    -0x10(%ebp),%ecx
418b7c:	d1 65 f0             	shll   $1,-0x10(%ebp)
418b7f:	8b d0                	mov    %eax,%edx
418b81:	03 c0                	add    %eax,%eax
418b83:	c1 e9 1f             	shr    $0x1f,%ecx
418b86:	0b c1                	or     %ecx,%eax
418b88:	89 45 f4             	mov    %eax,-0xc(%ebp)
418b8b:	c1 ea 1f             	shr    $0x1f,%edx
418b8e:	8d 04 3f             	lea    (%edi,%edi,1),%eax
418b91:	0b c2                	or     %edx,%eax
418b93:	81 c6 ff ff 00 00    	add    $0xffff,%esi
418b99:	89 45 f8             	mov    %eax,-0x8(%ebp)
418b9c:	66 85 f6             	test   %si,%si
418b9f:	7f ce                	jg     0x418b6f
418ba1:	66 85 f6             	test   %si,%si
418ba4:	7f 4d                	jg     0x418bf3
418ba6:	81 c6 ff ff 00 00    	add    $0xffff,%esi
418bac:	66 85 f6             	test   %si,%si
418baf:	7d 42                	jge    0x418bf3
418bb1:	8b c6                	mov    %esi,%eax
418bb3:	f7 d8                	neg    %eax
418bb5:	0f b7 c0             	movzwl %ax,%eax
418bb8:	03 f0                	add    %eax,%esi
418bba:	f6 45 f0 01          	testb  $0x1,-0x10(%ebp)
418bbe:	74 03                	je     0x418bc3
418bc0:	ff 45 b0             	incl   -0x50(%ebp)
418bc3:	8b 4d f8             	mov    -0x8(%ebp),%ecx
418bc6:	8b 7d f4             	mov    -0xc(%ebp),%edi
418bc9:	8b 55 f4             	mov    -0xc(%ebp),%edx
418bcc:	d1 6d f8             	shrl   $1,-0x8(%ebp)
418bcf:	c1 e1 1f             	shl    $0x1f,%ecx
418bd2:	d1 ef                	shr    $1,%edi
418bd4:	0b f9                	or     %ecx,%edi
418bd6:	8b 4d f0             	mov    -0x10(%ebp),%ecx
418bd9:	c1 e2 1f             	shl    $0x1f,%edx
418bdc:	d1 e9                	shr    $1,%ecx
418bde:	0b ca                	or     %edx,%ecx
418be0:	48                   	dec    %eax
418be1:	89 7d f4             	mov    %edi,-0xc(%ebp)
418be4:	89 4d f0             	mov    %ecx,-0x10(%ebp)
418be7:	75 d1                	jne    0x418bba
418be9:	39 45 b0             	cmp    %eax,-0x50(%ebp)
418bec:	74 05                	je     0x418bf3
418bee:	66 83 4d f0 01       	orw    $0x1,-0x10(%ebp)
418bf3:	b8 00 80 00 00       	mov    $0x8000,%eax
418bf8:	8b c8                	mov    %eax,%ecx
418bfa:	66 39 4d f0          	cmp    %cx,-0x10(%ebp)
418bfe:	77 11                	ja     0x418c11
418c00:	8b 4d f0             	mov    -0x10(%ebp),%ecx
418c03:	81 e1 ff ff 01 00    	and    $0x1ffff,%ecx
418c09:	81 f9 00 80 01 00    	cmp    $0x18000,%ecx
418c0f:	75 34                	jne    0x418c45
418c11:	83 7d f2 ff          	cmpl   $0xffffffff,-0xe(%ebp)
418c15:	75 2b                	jne    0x418c42
418c17:	83 65 f2 00          	andl   $0x0,-0xe(%ebp)
418c1b:	83 7d f6 ff          	cmpl   $0xffffffff,-0xa(%ebp)
418c1f:	75 1c                	jne    0x418c3d
418c21:	83 65 f6 00          	andl   $0x0,-0xa(%ebp)
418c25:	b9 ff ff 00 00       	mov    $0xffff,%ecx
418c2a:	66 39 4d fa          	cmp    %cx,-0x6(%ebp)
418c2e:	75 07                	jne    0x418c37
418c30:	66 89 45 fa          	mov    %ax,-0x6(%ebp)
418c34:	46                   	inc    %esi
418c35:	eb 0e                	jmp    0x418c45
418c37:	66 ff 45 fa          	incw   -0x6(%ebp)
418c3b:	eb 08                	jmp    0x418c45
418c3d:	ff 45 f6             	incl   -0xa(%ebp)
418c40:	eb 03                	jmp    0x418c45
418c42:	ff 45 f2             	incl   -0xe(%ebp)
418c45:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
418c4a:	66 3b f0             	cmp    %ax,%si
418c4d:	72 23                	jb     0x418c72
418c4f:	33 c0                	xor    %eax,%eax
418c51:	33 c9                	xor    %ecx,%ecx
418c53:	66 39 45 a4          	cmp    %ax,-0x5c(%ebp)
418c57:	89 45 e4             	mov    %eax,-0x1c(%ebp)
418c5a:	0f 94 c1             	sete   %cl
418c5d:	89 45 e0             	mov    %eax,-0x20(%ebp)
418c60:	49                   	dec    %ecx
418c61:	81 e1 00 00 00 80    	and    $0x80000000,%ecx
418c67:	81 c1 00 80 ff 7f    	add    $0x7fff8000,%ecx
418c6d:	89 4d e8             	mov    %ecx,-0x18(%ebp)
418c70:	eb 3b                	jmp    0x418cad
418c72:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
418c76:	0b 75 a4             	or     -0x5c(%ebp),%esi
418c79:	66 89 45 e0          	mov    %ax,-0x20(%ebp)
418c7d:	8b 45 f4             	mov    -0xc(%ebp),%eax
418c80:	89 45 e2             	mov    %eax,-0x1e(%ebp)
418c83:	8b 45 f8             	mov    -0x8(%ebp),%eax
418c86:	89 45 e6             	mov    %eax,-0x1a(%ebp)
418c89:	66 89 75 ea          	mov    %si,-0x16(%ebp)
418c8d:	eb 1e                	jmp    0x418cad
418c8f:	33 c0                	xor    %eax,%eax
418c91:	66 85 db             	test   %bx,%bx
418c94:	0f 94 c0             	sete   %al
418c97:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
418c9b:	48                   	dec    %eax
418c9c:	25 00 00 00 80       	and    $0x80000000,%eax
418ca1:	05 00 80 ff 7f       	add    $0x7fff8000,%eax
418ca6:	83 65 e0 00          	andl   $0x0,-0x20(%ebp)
418caa:	89 45 e8             	mov    %eax,-0x18(%ebp)
418cad:	f6 45 18 01          	testb  $0x1,0x18(%ebp)
418cb1:	8b 55 a0             	mov    -0x60(%ebp),%edx
418cb4:	8b 45 b4             	mov    -0x4c(%ebp),%eax
418cb7:	8b 7d 14             	mov    0x14(%ebp),%edi
418cba:	66 89 02             	mov    %ax,(%edx)
418cbd:	74 32                	je     0x418cf1
418cbf:	98                   	cwtl
418cc0:	03 f8                	add    %eax,%edi
418cc2:	85 ff                	test   %edi,%edi
418cc4:	7f 2b                	jg     0x418cf1
418cc6:	33 c0                	xor    %eax,%eax
418cc8:	66 89 02             	mov    %ax,(%edx)
418ccb:	b8 00 80 00 00       	mov    $0x8000,%eax
418cd0:	66 39 45 90          	cmp    %ax,-0x70(%ebp)
418cd4:	c6 42 03 01          	movb   $0x1,0x3(%edx)
418cd8:	0f 95 c0             	setne  %al