437cc0:	46                   	inc    %esi
437cc1:	eb 03                	jmp    0x437cc6
437cc3:	8b 75 84             	mov    -0x7c(%ebp),%esi
437cc6:	89 42 fc             	mov    %eax,-0x4(%edx)
437cc9:	85 f6                	test   %esi,%esi
437ccb:	74 03                	je     0x437cd0
437ccd:	66 ff 02             	incw   (%edx)
437cd0:	8b 45 c0             	mov    -0x40(%ebp),%eax
437cd3:	8b b5 7c ff ff ff    	mov    -0x84(%ebp),%esi
437cd9:	83 c0 02             	add    $0x2,%eax
437cdc:	83 ee 02             	sub    $0x2,%esi
437cdf:	49                   	dec    %ecx
437ce0:	89 45 c0             	mov    %eax,-0x40(%ebp)
437ce3:	89 b5 7c ff ff ff    	mov    %esi,-0x84(%ebp)
437ce9:	85 c9                	test   %ecx,%ecx
437ceb:	7f b2                	jg     0x437c9f
437ced:	8b 8d 78 ff ff ff    	mov    -0x88(%ebp),%ecx
437cf3:	8b 75 b0             	mov    -0x50(%ebp),%esi
437cf6:	8b 45 80             	mov    -0x80(%ebp),%eax
437cf9:	83 c2 02             	add    $0x2,%edx
437cfc:	40                   	inc    %eax
437cfd:	4e                   	dec    %esi
437cfe:	89 45 80             	mov    %eax,-0x80(%ebp)
437d01:	89 75 b0             	mov    %esi,-0x50(%ebp)
437d04:	85 f6                	test   %esi,%esi
437d06:	0f 8f 77 ff ff ff    	jg     0x437c83
437d0c:	8b 7d b4             	mov    -0x4c(%ebp),%edi
437d0f:	8b 45 f8             	mov    -0x8(%ebp),%eax
437d12:	8b 75 f0             	mov    -0x10(%ebp),%esi
437d15:	81 c7 02 c0 00 00    	add    $0xc002,%edi
437d1b:	89 45 c0             	mov    %eax,-0x40(%ebp)
437d1e:	66 85 ff             	test   %di,%di
437d21:	7e 3b                	jle    0x437d5e
437d23:	85 c0                	test   %eax,%eax
437d25:	78 32                	js     0x437d59
437d27:	8b 45 f4             	mov    -0xc(%ebp),%eax
437d2a:	8b c8                	mov    %eax,%ecx
437d2c:	03 c0                	add    %eax,%eax
437d2e:	8b d6                	mov    %esi,%edx
437d30:	c1 ea 1f             	shr    $0x1f,%edx
437d33:	0b c2                	or     %edx,%eax
437d35:	89 45 f4             	mov    %eax,-0xc(%ebp)
437d38:	8b 45 c0             	mov    -0x40(%ebp),%eax
437d3b:	c1 e9 1f             	shr    $0x1f,%ecx
437d3e:	03 c0                	add    %eax,%eax
437d40:	0b c1                	or     %ecx,%eax
437d42:	b9 ff ff 00 00       	mov    $0xffff,%ecx
437d47:	03 f6                	add    %esi,%esi
437d49:	03 f9                	add    %ecx,%edi
437d4b:	89 75 f0             	mov    %esi,-0x10(%ebp)
437d4e:	89 45 c0             	mov    %eax,-0x40(%ebp)
437d51:	89 45 f8             	mov    %eax,-0x8(%ebp)
437d54:	66 85 ff             	test   %di,%di
437d57:	7f ca                	jg     0x437d23
437d59:	66 85 ff             	test   %di,%di
437d5c:	7f 71                	jg     0x437dcf
437d5e:	b8 ff ff 00 00       	mov    $0xffff,%eax
437d63:	03 f8                	add    %eax,%edi
437d65:	66 85 ff             	test   %di,%di
437d68:	79 65                	jns    0x437dcf
437d6a:	8b 5d c0             	mov    -0x40(%ebp),%ebx
437d6d:	8b c7                	mov    %edi,%eax
437d6f:	f7 d8                	neg    %eax
437d71:	0f b7 c0             	movzwl %ax,%eax
437d74:	03 f8                	add    %eax,%edi
437d76:	33 d2                	xor    %edx,%edx
437d78:	89 7d b4             	mov    %edi,-0x4c(%ebp)
437d7b:	8b 7d 8c             	mov    -0x74(%ebp),%edi
437d7e:	89 45 b0             	mov    %eax,-0x50(%ebp)
437d81:	42                   	inc    %edx
437d82:	84 55 f0             	test   %dl,-0x10(%ebp)
437d85:	74 01                	je     0x437d88
437d87:	47                   	inc    %edi
437d88:	8b 4d f4             	mov    -0xc(%ebp),%ecx
437d8b:	8b c3                	mov    %ebx,%eax
437d8d:	c1 e0 1f             	shl    $0x1f,%eax
437d90:	89 4d c0             	mov    %ecx,-0x40(%ebp)
437d93:	d1 6d c0             	shrl   $1,-0x40(%ebp)
437d96:	09 45 c0             	or     %eax,-0x40(%ebp)
437d99:	8b 45 c0             	mov    -0x40(%ebp),%eax
437d9c:	c1 e1 1f             	shl    $0x1f,%ecx
437d9f:	d1 ee                	shr    $1,%esi
437da1:	d1 eb                	shr    $1,%ebx
437da3:	0b f1                	or     %ecx,%esi
437da5:	ff 4d b0             	decl   -0x50(%ebp)
437da8:	89 5d f8             	mov    %ebx,-0x8(%ebp)
437dab:	89 45 f4             	mov    %eax,-0xc(%ebp)
437dae:	89 75 f0             	mov    %esi,-0x10(%ebp)
437db1:	75 cf                	jne    0x437d82
437db3:	6a 00                	push   $0x0
437db5:	89 5d c0             	mov    %ebx,-0x40(%ebp)
437db8:	85 ff                	test   %edi,%edi
437dba:	8b 7d b4             	mov    -0x4c(%ebp),%edi
437dbd:	5b                   	pop    %ebx
437dbe:	74 0f                	je     0x437dcf
437dc0:	66 8b c6             	mov    %si,%ax
437dc3:	66 0b c2             	or     %dx,%ax
437dc6:	66 89 45 f0          	mov    %ax,-0x10(%ebp)
437dca:	8b 75 f0             	mov    -0x10(%ebp),%esi
437dcd:	eb 04                	jmp    0x437dd3
437dcf:	66 8b 45 f0          	mov    -0x10(%ebp),%ax
437dd3:	b9 00 80 00 00       	mov    $0x8000,%ecx
437dd8:	66 3b c1             	cmp    %cx,%ax
437ddb:	77 0e                	ja     0x437deb
437ddd:	81 e6 ff ff 01 00    	and    $0x1ffff,%esi
437de3:	81 fe 00 80 01 00    	cmp    $0x18000,%esi
437de9:	75 40                	jne    0x437e2b
437deb:	8b 45 f2             	mov    -0xe(%ebp),%eax
437dee:	83 f8 ff             	cmp    $0xffffffff,%eax
437df1:	75 34                	jne    0x437e27
437df3:	8b 45 f6             	mov    -0xa(%ebp),%eax
437df6:	89 5d f2             	mov    %ebx,-0xe(%ebp)
437df9:	83 f8 ff             	cmp    $0xffffffff,%eax
437dfc:	75 20                	jne    0x437e1e
437dfe:	66 8b 45 fa          	mov    -0x6(%ebp),%ax
437e02:	ba ff ff 00 00       	mov    $0xffff,%edx
437e07:	89 5d f6             	mov    %ebx,-0xa(%ebp)
437e0a:	66 3b c2             	cmp    %dx,%ax
437e0d:	75 07                	jne    0x437e16
437e0f:	66 89 4d fa          	mov    %cx,-0x6(%ebp)
437e13:	47                   	inc    %edi
437e14:	eb 0c                	jmp    0x437e22
437e16:	66 40                	inc    %ax
437e18:	66 89 45 fa          	mov    %ax,-0x6(%ebp)
437e1c:	eb 04                	jmp    0x437e22
437e1e:	40                   	inc    %eax
437e1f:	89 45 f6             	mov    %eax,-0xa(%ebp)
437e22:	8b 4d f8             	mov    -0x8(%ebp),%ecx
437e25:	eb 07                	jmp    0x437e2e
437e27:	40                   	inc    %eax
437e28:	89 45 f2             	mov    %eax,-0xe(%ebp)
437e2b:	8b 4d c0             	mov    -0x40(%ebp),%ecx
437e2e:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
437e33:	66 3b f8             	cmp    %ax,%di
437e36:	73 20                	jae    0x437e58
437e38:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
437e3c:	0b 7d 9c             	or     -0x64(%ebp),%edi
437e3f:	66 89 45 e0          	mov    %ax,-0x20(%ebp)
437e43:	8b 45 f4             	mov    -0xc(%ebp),%eax
437e46:	89 45 e2             	mov    %eax,-0x1e(%ebp)
437e49:	8b 75 e0             	mov    -0x20(%ebp),%esi
437e4c:	89 4d e6             	mov    %ecx,-0x1a(%ebp)
437e4f:	8b 55 e4             	mov    -0x1c(%ebp),%edx
437e52:	66 89 7d ea          	mov    %di,-0x16(%ebp)
437e56:	eb 21                	jmp    0x437e79
437e58:	33 c0                	xor    %eax,%eax
437e5a:	66 39 45 9c          	cmp    %ax,-0x64(%ebp)
437e5e:	0f 94 c0             	sete   %al
437e61:	48                   	dec    %eax
437e62:	25 00 00 00 80       	and    $0x80000000,%eax
437e67:	05 00 80 ff 7f       	add    $0x7fff8000,%eax
437e6c:	89 45 e8             	mov    %eax,-0x18(%ebp)
437e6f:	8b f3                	mov    %ebx,%esi
437e71:	8b d3                	mov    %ebx,%edx
437e73:	89 75 e0             	mov    %esi,-0x20(%ebp)
437e76:	89 55 e4             	mov    %edx,-0x1c(%ebp)
437e79:	89 75 c0             	mov    %esi,-0x40(%ebp)
437e7c:	8b 45 ac             	mov    -0x54(%ebp),%eax
437e7f:	8b 4d bc             	mov    -0x44(%ebp),%ecx
437e82:	85 c9                	test   %ecx,%ecx
437e84:	0f 85 01 fd ff ff    	jne    0x437b8b
437e8a:	eb 06                	jmp    0x437e92
437e8c:	8b 55 e4             	mov    -0x1c(%ebp),%edx
437e8f:	8b 75 e0             	mov    -0x20(%ebp),%esi
437e92:	8b 45 e8             	mov    -0x18(%ebp),%eax
437e95:	c1 e8 10             	shr    $0x10,%eax
437e98:	b9 ff 3f 00 00       	mov    $0x3fff,%ecx
437e9d:	66 3b c1             	cmp    %cx,%ax
437ea0:	0f 82 9e 02 00 00    	jb     0x438144
437ea6:	ff 45 b8             	incl   -0x48(%ebp)
437ea9:	8b c8                	mov    %eax,%ecx
437eab:	8b 45 da             	mov    -0x26(%ebp),%eax
437eae:	8b f8                	mov    %eax,%edi
437eb0:	33 f9                	xor    %ecx,%edi
437eb2:	81 e7 00 80 00 00    	and    $0x8000,%edi
437eb8:	89 7d ac             	mov    %edi,-0x54(%ebp)
437ebb:	bf ff 7f 00 00       	mov    $0x7fff,%edi
437ec0:	23 c7                	and    %edi,%eax
437ec2:	23 cf                	and    %edi,%ecx
437ec4:	89 45 8c             	mov    %eax,-0x74(%ebp)
437ec7:	03 c1                	add    %ecx,%eax
437ec9:	0f b7 f8             	movzwl %ax,%edi
437ecc:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
437ed1:	89 5d 84             	mov    %ebx,-0x7c(%ebp)
437ed4:	89 5d f0             	mov    %ebx,-0x10(%ebp)
437ed7:	89 5d f4             	mov    %ebx,-0xc(%ebp)
437eda:	89 5d f8             	mov    %ebx,-0x8(%ebp)
437edd:	89 7d b4             	mov    %edi,-0x4c(%ebp)
437ee0:	66 3b c8             	cmp    %ax,%cx
437ee3:	0f 83 40 02 00 00    	jae    0x438129
437ee9:	8b 45 8c             	mov    -0x74(%ebp),%eax
437eec:	66 3b 45 98          	cmp    -0x68(%ebp),%ax
437ef0:	0f 83 33 02 00 00    	jae    0x438129
437ef6:	66 3b 7d 94          	cmp    -0x6c(%ebp),%di
437efa:	0f 87 29 02 00 00    	ja     0x438129
437f00:	66 3b 7d a8          	cmp    -0x58(%ebp),%di
437f04:	77 08                	ja     0x437f0e
437f06:	89 5d e8             	mov    %ebx,-0x18(%ebp)
437f09:	e9 32 02 00 00       	jmp    0x438140
437f0e:	66 85 c9             	test   %cx,%cx
437f11:	75 20                	jne    0x437f33
437f13:	47                   	inc    %edi
437f14:	f7 45 e8 ff ff ff 7f 	testl  $0x7fffffff,-0x18(%ebp)
437f1b:	89 7d b4             	mov    %edi,-0x4c(%ebp)
437f1e:	75 13                	jne    0x437f33
437f20:	85 d2                	test   %edx,%edx
437f22:	75 0f                	jne    0x437f33
437f24:	85 f6                	test   %esi,%esi
437f26:	75 0b                	jne    0x437f33
437f28:	33 c0                	xor    %eax,%eax
437f2a:	66 89 45 ea          	mov    %ax,-0x16(%ebp)
437f2e:	e9 11 02 00 00       	jmp    0x438144
437f33:	66 85 c0             	test   %ax,%ax
437f36:	75 19                	jne    0x437f51
437f38:	47                   	inc    %edi
437f39:	f7 45 d8 ff ff ff 7f 	testl  $0x7fffffff,-0x28(%ebp)
437f40:	89 7d b4             	mov    %edi,-0x4c(%ebp)
437f43:	75 0c                	jne    0x437f51
437f45:	83 7d d4 00          	cmpl   $0x0,-0x2c(%ebp)
437f49:	75 06                	jne    0x437f51
437f4b:	83 7d d0 00          	cmpl   $0x0,-0x30(%ebp)
437f4f:	74 b5                	je     0x437f06
437f51:	8b d3                	mov    %ebx,%edx
437f53:	6a 05                	push   $0x5
437f55:	89 55 b0             	mov    %edx,-0x50(%ebp)
437f58:	8d 4d f4             	lea    -0xc(%ebp),%ecx
437f5b:	58                   	pop    %eax
437f5c:	8b f0                	mov    %eax,%esi
437f5e:	85 c0                	test   %eax,%eax
437f60:	7e 58                	jle    0x437fba
437f62:	8d 7d e0             	lea    -0x20(%ebp),%edi
437f65:	8d 45 d8             	lea    -0x28(%ebp),%eax
437f68:	8d 3c 57             	lea    (%edi,%edx,2),%edi
437f6b:	89 45 94             	mov    %eax,-0x6c(%ebp)
437f6e:	89 7d a8             	mov    %edi,-0x58(%ebp)
437f71:	0f b7 10             	movzwl (%eax),%edx
437f74:	0f b7 07             	movzwl (%edi),%eax
437f77:	0f af d0             	imul   %eax,%edx
437f7a:	8b 41 fc             	mov    -0x4(%ecx),%eax
437f7d:	89 5d 98             	mov    %ebx,-0x68(%ebp)
437f80:	8d 3c 10             	lea    (%eax,%edx,1),%edi
437f83:	3b f8                	cmp    %eax,%edi
437f85:	72 04                	jb     0x437f8b
437f87:	3b fa                	cmp    %edx,%edi
437f89:	73 05                	jae    0x437f90
437f8b:	33 c0                	xor    %eax,%eax
437f8d:	40                   	inc    %eax
437f8e:	eb 03                	jmp    0x437f93
437f90:	8b 45 98             	mov    -0x68(%ebp),%eax
437f93:	89 79 fc             	mov    %edi,-0x4(%ecx)
437f96:	85 c0                	test   %eax,%eax
437f98:	74 03                	je     0x437f9d
437f9a:	66 ff 01             	incw   (%ecx)
437f9d:	8b 7d a8             	mov    -0x58(%ebp),%edi
437fa0:	8b 45 94             	mov    -0x6c(%ebp),%eax
437fa3:	83 c7 02             	add    $0x2,%edi
437fa6:	83 e8 02             	sub    $0x2,%eax
437fa9:	4e                   	dec    %esi
437faa:	89 7d a8             	mov    %edi,-0x58(%ebp)
437fad:	89 45 94             	mov    %eax,-0x6c(%ebp)
437fb0:	85 f6                	test   %esi,%esi
437fb2:	7f bd                	jg     0x437f71
437fb4:	8b 55 b0             	mov    -0x50(%ebp),%edx
437fb7:	8b 45 a4             	mov    -0x5c(%ebp),%eax
437fba:	83 c1 02             	add    $0x2,%ecx
437fbd:	42                   	inc    %edx
437fbe:	48                   	dec    %eax
437fbf:	89 55 b0             	mov    %edx,-0x50(%ebp)
437fc2:	89 45 a4             	mov    %eax,-0x5c(%ebp)
437fc5:	85 c0                	test   %eax,%eax
437fc7:	7f 93                	jg     0x437f5c
437fc9:	8b 7d b4             	mov    -0x4c(%ebp),%edi
437fcc:	8b 75 f8             	mov    -0x8(%ebp),%esi
437fcf:	81 c7 02 c0 00 00    	add    $0xc002,%edi
437fd5:	66 85 ff             	test   %di,%di
437fd8:	0f 8e 9c 00 00 00    	jle    0x43807a
437fde:	8b 5d f0             	mov    -0x10(%ebp),%ebx
437fe1:	89 5d bc             	mov    %ebx,-0x44(%ebp)
437fe4:	85 f6                	test   %esi,%esi
437fe6:	78 2c                	js     0x438014
437fe8:	8b 45 f4             	mov    -0xc(%ebp),%eax
437feb:	8b c8                	mov    %eax,%ecx
437fed:	8b d3                	mov    %ebx,%edx
437fef:	03 c0                	add    %eax,%eax
437ff1:	c1 ea 1f             	shr    $0x1f,%edx
437ff4:	0b c2                	or     %edx,%eax
437ff6:	89 45 f4             	mov    %eax,-0xc(%ebp)
437ff9:	c1 e9 1f             	shr    $0x1f,%ecx
437ffc:	03 f6                	add    %esi,%esi
437ffe:	b8 ff ff 00 00       	mov    $0xffff,%eax
438003:	03 db                	add    %ebx,%ebx
438005:	0b f1                	or     %ecx,%esi
438007:	03 f8                	add    %eax,%edi
438009:	89 5d f0             	mov    %ebx,-0x10(%ebp)
43800c:	89 75 f8             	mov    %esi,-0x8(%ebp)
43800f:	66 85 ff             	test   %di,%di
438012:	7f d0                	jg     0x437fe4
438014:	89 5d bc             	mov    %ebx,-0x44(%ebp)
438017:	8b 55 bc             	mov    -0x44(%ebp),%edx
43801a:	6a 00                	push   $0x0
43801c:	5b                   	pop    %ebx
43801d:	66 85 ff             	test   %di,%di
438020:	7e 5b                	jle    0x43807d
438022:	66 8b 4d f0          	mov    -0x10(%ebp),%cx
438026:	b8 00 80 00 00       	mov    $0x8000,%eax
43802b:	66 3b c8             	cmp    %ax,%cx
43802e:	77 12                	ja     0x438042
438030:	81 e2 ff ff 01 00    	and    $0x1ffff,%edx
438036:	81 fa 00 80 01 00    	cmp    $0x18000,%edx
43803c:	0f 85 bd 00 00 00    	jne    0x4380ff
438042:	8b 45 f2             	mov    -0xe(%ebp),%eax
438045:	83 f8 ff             	cmp    $0xffffffff,%eax
438048:	0f 85 ad 00 00 00    	jne    0x4380fb
43804e:	8b 45 f6             	mov    -0xa(%ebp),%eax
438051:	89 5d f2             	mov    %ebx,-0xe(%ebp)
438054:	83 f8 ff             	cmp    $0xffffffff,%eax
438057:	0f 85 95 00 00 00    	jne    0x4380f2
43805d:	66 8b 45 fa          	mov    -0x6(%ebp),%ax
438061:	b9 ff ff 00 00       	mov    $0xffff,%ecx
438066:	89 5d f6             	mov    %ebx,-0xa(%ebp)
438069:	66 3b c1             	cmp    %cx,%ax
43806c:	75 7c                	jne    0x4380ea
43806e:	b8 00 80 00 00       	mov    $0x8000,%eax
438073:	66 89 45 fa          	mov    %ax,-0x6(%ebp)
438077:	47                   	inc    %edi
438078:	eb 7c                	jmp    0x4380f6
43807a:	8b 55 f0             	mov    -0x10(%ebp),%edx
43807d:	b8 ff ff 00 00       	mov    $0xffff,%eax
438082:	03 f8                	add    %eax,%edi
438084:	66 85 ff             	test   %di,%di
438087:	79 99                	jns    0x438022
438089:	8b c7                	mov    %edi,%eax
43808b:	f7 d8                	neg    %eax
43808d:	0f b7 c0             	movzwl %ax,%eax
438090:	03 f8                	add    %eax,%edi
438092:	89 7d b4             	mov    %edi,-0x4c(%ebp)
438095:	8b 7d 84             	mov    -0x7c(%ebp),%edi
438098:	89 45 a4             	mov    %eax,-0x5c(%ebp)
43809b:	f6 45 f0 01          	testb  $0x1,-0x10(%ebp)
43809f:	74 01                	je     0x4380a2
4380a1:	47                   	inc    %edi
4380a2:	8b 5d f4             	mov    -0xc(%ebp),%ebx
4380a5:	8b cb                	mov    %ebx,%ecx
4380a7:	8b c6                	mov    %esi,%eax
4380a9:	c1 e0 1f             	shl    $0x1f,%eax
4380ac:	c1 e1 1f             	shl    $0x1f,%ecx
4380af:	d1 eb                	shr    $1,%ebx
4380b1:	d1 ea                	shr    $1,%edx
4380b3:	0b d8                	or     %eax,%ebx
4380b5:	0b d1                	or     %ecx,%edx