596d1e:	48                   	dec    %eax
596d1f:	89 45 98             	mov    %eax,-0x68(%ebp)
596d22:	8b 45 98             	mov    -0x68(%ebp),%eax
596d25:	83 f8 00             	cmp    $0x0,%eax
596d28:	7c 6f                	jl     0x596d99
596d2a:	89 45 c4             	mov    %eax,-0x3c(%ebp)
596d2d:	8b 45 18             	mov    0x18(%ebp),%eax
596d30:	66 83 78 02 00       	cmpw   $0x0,0x2(%eax)
596d35:	74 2d                	je     0x596d64
596d37:	8b 45 98             	mov    -0x68(%ebp),%eax
596d3a:	2b 45 c4             	sub    -0x3c(%ebp),%eax
596d3d:	89 85 74 ff ff ff    	mov    %eax,-0x8c(%ebp)
596d43:	db 85 74 ff ff ff    	fildl  -0x8c(%ebp)
596d49:	8b 45 18             	mov    0x18(%ebp),%eax
596d4c:	dc 48 18             	fmull  0x18(%eax)
596d4f:	e8 78 bf e6 ff       	call   0x402ccc
596d54:	8b c8                	mov    %eax,%ecx
596d56:	8b 75 18             	mov    0x18(%ebp),%esi
596d59:	8b 55 18             	mov    0x18(%ebp),%edx
596d5c:	8b 52 08             	mov    0x8(%edx),%edx
596d5f:	8b 46 04             	mov    0x4(%esi),%eax
596d62:	ff 16                	call   *(%esi)
596d64:	8b 45 18             	mov    0x18(%ebp),%eax
596d67:	8b 40 28             	mov    0x28(%eax),%eax
596d6a:	80 38 00             	cmpb   $0x0,(%eax)
596d6d:	75 2a                	jne    0x596d99
596d6f:	8b 45 94             	mov    -0x6c(%ebp),%eax
596d72:	2b 45 c4             	sub    -0x3c(%ebp),%eax
596d75:	99                   	cltd
596d76:	33 c2                	xor    %edx,%eax
596d78:	2b c2                	sub    %edx,%eax
596d7a:	8b d0                	mov    %eax,%edx
596d7c:	8b 45 f8             	mov    -0x8(%ebp),%eax
596d7f:	8b 08                	mov    (%eax),%ecx
596d81:	ff 11                	call   *(%ecx)
596d83:	8b d0                	mov    %eax,%edx
596d85:	8b 4d c0             	mov    -0x40(%ebp),%ecx
596d88:	8b 45 fc             	mov    -0x4(%ebp),%eax
596d8b:	8b 30                	mov    (%eax),%esi
596d8d:	ff 56 08             	call   *0x8(%esi)
596d90:	ff 4d c4             	decl   -0x3c(%ebp)
596d93:	83 7d c4 ff          	cmpl   $0xffffffff,-0x3c(%ebp)
596d97:	75 94                	jne    0x596d2d
596d99:	8b 03                	mov    (%ebx),%eax
596d9b:	83 b8 ac 03 00 00 02 	cmpl   $0x2,0x3ac(%eax)
596da2:	0f 85 26 09 00 00    	jne    0x5976ce
596da8:	8b 03                	mov    (%ebx),%eax
596daa:	8b 80 a8 03 00 00    	mov    0x3a8(%eax),%eax
596db0:	8a 50 02             	mov    0x2(%eax),%dl
596db3:	c1 e2 10             	shl    $0x10,%edx
596db6:	66 8b 10             	mov    (%eax),%dx
596db9:	52                   	push   %edx
596dba:	8d 85 70 ff ff ff    	lea    -0x90(%ebp),%eax
596dc0:	50                   	push   %eax
596dc1:	b1 ff                	mov    $0xff,%cl
596dc3:	b2 ff                	mov    $0xff,%dl
596dc5:	b0 ff                	mov    $0xff,%al
596dc7:	e8 44 25 01 00       	call   0x5a9310
596dcc:	8a 85 72 ff ff ff    	mov    -0x8e(%ebp),%al
596dd2:	c1 e0 10             	shl    $0x10,%eax
596dd5:	66 8b 85 70 ff ff ff 	mov    -0x90(%ebp),%ax
596ddc:	50                   	push   %eax
596ddd:	e8 72 26 01 00       	call   0x5a9454
596de2:	84 c0                	test   %al,%al
596de4:	0f 84 e4 08 00 00    	je     0x5976ce
596dea:	8b 03                	mov    (%ebx),%eax
596dec:	8b 80 a8 03 00 00    	mov    0x3a8(%eax),%eax
596df2:	8a 50 05             	mov    0x5(%eax),%dl
596df5:	c1 e2 10             	shl    $0x10,%edx
596df8:	66 8b 50 03          	mov    0x3(%eax),%dx
596dfc:	52                   	push   %edx
596dfd:	8d 85 70 ff ff ff    	lea    -0x90(%ebp),%eax
596e03:	50                   	push   %eax
596e04:	33 c9                	xor    %ecx,%ecx
596e06:	33 d2                	xor    %edx,%edx
596e08:	33 c0                	xor    %eax,%eax
596e0a:	e8 01 25 01 00       	call   0x5a9310
596e0f:	8a 85 72 ff ff ff    	mov    -0x8e(%ebp),%al
596e15:	c1 e0 10             	shl    $0x10,%eax
596e18:	66 8b 85 70 ff ff ff 	mov    -0x90(%ebp),%ax
596e1f:	50                   	push   %eax
596e20:	e8 2f 26 01 00       	call   0x5a9454
596e25:	84 c0                	test   %al,%al
596e27:	0f 84 a1 08 00 00    	je     0x5976ce
596e2d:	8b 45 f8             	mov    -0x8(%ebp),%eax
596e30:	e8 af 58 01 00       	call   0x5ac6e4
596e35:	e9 94 08 00 00       	jmp    0x5976ce
596e3a:	8b 03                	mov    (%ebx),%eax
596e3c:	c7 40 08 04 00 00 00 	movl   $0x4,0x8(%eax)
596e43:	8b 03                	mov    (%ebx),%eax
596e45:	c7 40 10 01 00 00 00 	movl   $0x1,0x10(%eax)
596e4c:	80 7d 14 00          	cmpb   $0x0,0x14(%ebp)
596e50:	0f 85 78 08 00 00    	jne    0x5976ce
596e56:	8b 03                	mov    (%ebx),%eax
596e58:	80 b8 a5 03 00 00 00 	cmpb   $0x0,0x3a5(%eax)
596e5f:	74 40                	je     0x596ea1
596e61:	8b 03                	mov    (%ebx),%eax
596e63:	8b b0 ac 03 00 00    	mov    0x3ac(%eax),%esi
596e69:	4e                   	dec    %esi
596e6a:	85 f6                	test   %esi,%esi
596e6c:	7c 33                	jl     0x596ea1
596e6e:	46                   	inc    %esi
596e6f:	c7 45 c4 00 00 00 00 	movl   $0x0,-0x3c(%ebp)
596e76:	8b 45 c4             	mov    -0x3c(%ebp),%eax
596e79:	8d 04 40             	lea    (%eax,%eax,2),%eax
596e7c:	8b 13                	mov    (%ebx),%edx
596e7e:	8b 92 a8 03 00 00    	mov    0x3a8(%edx),%edx
596e84:	8a 4c 02 02          	mov    0x2(%edx,%eax,1),%cl
596e88:	c1 e1 10             	shl    $0x10,%ecx
596e8b:	66 8b 0c 02          	mov    (%edx,%eax,1),%cx
596e8f:	51                   	push   %ecx
596e90:	8b 55 c4             	mov    -0x3c(%ebp),%edx
596e93:	8b 45 f8             	mov    -0x8(%ebp),%eax
596e96:	8b 08                	mov    (%eax),%ecx
596e98:	ff 51 1c             	call   *0x1c(%ecx)
596e9b:	ff 45 c4             	incl   -0x3c(%ebp)
596e9e:	4e                   	dec    %esi
596e9f:	75 d5                	jne    0x596e76
596ea1:	83 7d d8 00          	cmpl   $0x0,-0x28(%ebp)
596ea5:	0f 85 92 01 00 00    	jne    0x59703d
596eab:	8b 45 c0             	mov    -0x40(%ebp),%eax
596eae:	83 c0 20             	add    $0x20,%eax
596eb1:	e8 f6 b8 e6 ff       	call   0x4027ac
596eb6:	89 45 b4             	mov    %eax,-0x4c(%ebp)
596eb9:	8b 45 f8             	mov    -0x8(%ebp),%eax
596ebc:	8b 10                	mov    (%eax),%edx
596ebe:	ff 52 08             	call   *0x8(%edx)
596ec1:	48                   	dec    %eax
596ec2:	89 45 98             	mov    %eax,-0x68(%ebp)
596ec5:	8b 45 f8             	mov    -0x8(%ebp),%eax
596ec8:	8b 10                	mov    (%eax),%edx
596eca:	ff 52 0c             	call   *0xc(%edx)
596ecd:	48                   	dec    %eax
596ece:	89 45 9c             	mov    %eax,-0x64(%ebp)
596ed1:	8b 45 98             	mov    -0x68(%ebp),%eax
596ed4:	83 f8 00             	cmp    $0x0,%eax
596ed7:	0f 8c 53 01 00 00    	jl     0x597030
596edd:	89 45 c4             	mov    %eax,-0x3c(%ebp)
596ee0:	8b 45 18             	mov    0x18(%ebp),%eax
596ee3:	66 83 78 02 00       	cmpw   $0x0,0x2(%eax)
596ee8:	74 2d                	je     0x596f17
596eea:	8b 45 98             	mov    -0x68(%ebp),%eax
596eed:	2b 45 c4             	sub    -0x3c(%ebp),%eax
596ef0:	89 85 74 ff ff ff    	mov    %eax,-0x8c(%ebp)
596ef6:	db 85 74 ff ff ff    	fildl  -0x8c(%ebp)
596efc:	8b 45 18             	mov    0x18(%ebp),%eax
596eff:	dc 48 18             	fmull  0x18(%eax)
596f02:	e8 c5 bd e6 ff       	call   0x402ccc
596f07:	8b c8                	mov    %eax,%ecx
596f09:	8b 75 18             	mov    0x18(%ebp),%esi
596f0c:	8b 55 18             	mov    0x18(%ebp),%edx
596f0f:	8b 52 08             	mov    0x8(%edx),%edx
596f12:	8b 46 04             	mov    0x4(%esi),%eax
596f15:	ff 16                	call   *(%esi)
596f17:	8b 45 18             	mov    0x18(%ebp),%eax
596f1a:	8b 40 28             	mov    0x28(%eax),%eax
596f1d:	80 38 00             	cmpb   $0x0,(%eax)
596f20:	0f 85 0a 01 00 00    	jne    0x597030
596f26:	8b 55 b4             	mov    -0x4c(%ebp),%edx
596f29:	8b 4d c0             	mov    -0x40(%ebp),%ecx
596f2c:	8b 45 fc             	mov    -0x4(%ebp),%eax
596f2f:	8b 30                	mov    (%eax),%esi
596f31:	ff 56 08             	call   *0x8(%esi)
596f34:	8b 7d b4             	mov    -0x4c(%ebp),%edi
596f37:	8b 03                	mov    (%ebx),%eax
596f39:	80 b8 a5 03 00 00 00 	cmpb   $0x0,0x3a5(%eax)
596f40:	74 60                	je     0x596fa2
596f42:	8b 45 f8             	mov    -0x8(%ebp),%eax
596f45:	c7 40 50 10 00 00 00 	movl   $0x10,0x50(%eax)
596f4c:	8b 45 94             	mov    -0x6c(%ebp),%eax
596f4f:	2b 45 c4             	sub    -0x3c(%ebp),%eax
596f52:	99                   	cltd
596f53:	33 c2                	xor    %edx,%eax
596f55:	2b c2                	sub    %edx,%eax
596f57:	8b d0                	mov    %eax,%edx
596f59:	8b 45 f8             	mov    -0x8(%ebp),%eax
596f5c:	8b 08                	mov    (%eax),%ecx
596f5e:	ff 11                	call   *(%ecx)
596f60:	89 45 b8             	mov    %eax,-0x48(%ebp)
596f63:	8b 75 9c             	mov    -0x64(%ebp),%esi
596f66:	85 f6                	test   %esi,%esi
596f68:	0f 8c b5 00 00 00    	jl     0x597023
596f6e:	46                   	inc    %esi
596f6f:	c7 45 c8 00 00 00 00 	movl   $0x0,-0x38(%ebp)
596f76:	f6 45 c8 01          	testb  $0x1,-0x38(%ebp)
596f7a:	75 0e                	jne    0x596f8a
596f7c:	33 c0                	xor    %eax,%eax
596f7e:	8a 07                	mov    (%edi),%al
596f80:	c1 e8 04             	shr    $0x4,%eax
596f83:	8b 55 b8             	mov    -0x48(%ebp),%edx
596f86:	88 02                	mov    %al,(%edx)
596f88:	eb 0a                	jmp    0x596f94
596f8a:	8a 07                	mov    (%edi),%al
596f8c:	24 0f                	and    $0xf,%al
596f8e:	8b 55 b8             	mov    -0x48(%ebp),%edx
596f91:	88 02                	mov    %al,(%edx)
596f93:	47                   	inc    %edi
596f94:	ff 45 b8             	incl   -0x48(%ebp)
596f97:	ff 45 c8             	incl   -0x38(%ebp)
596f9a:	4e                   	dec    %esi
596f9b:	75 d9                	jne    0x596f76
596f9d:	e9 81 00 00 00       	jmp    0x597023
596fa2:	8b 45 94             	mov    -0x6c(%ebp),%eax
596fa5:	2b 45 c4             	sub    -0x3c(%ebp),%eax
596fa8:	99                   	cltd
596fa9:	33 c2                	xor    %edx,%eax
596fab:	2b c2                	sub    %edx,%eax
596fad:	8b d0                	mov    %eax,%edx
596faf:	8b 45 f8             	mov    -0x8(%ebp),%eax
596fb2:	8b 08                	mov    (%eax),%ecx
596fb4:	ff 11                	call   *(%ecx)
596fb6:	89 45 bc             	mov    %eax,-0x44(%ebp)
596fb9:	8b 75 9c             	mov    -0x64(%ebp),%esi
596fbc:	85 f6                	test   %esi,%esi
596fbe:	7c 63                	jl     0x597023
596fc0:	46                   	inc    %esi
596fc1:	c7 45 c8 00 00 00 00 	movl   $0x0,-0x38(%ebp)
596fc8:	f6 45 c8 01          	testb  $0x1,-0x38(%ebp)
596fcc:	75 25                	jne    0x596ff3
596fce:	33 c0                	xor    %eax,%eax
596fd0:	8a 07                	mov    (%edi),%al
596fd2:	c1 e8 04             	shr    $0x4,%eax
596fd5:	8d 04 40             	lea    (%eax,%eax,2),%eax
596fd8:	8b 13                	mov    (%ebx),%edx
596fda:	8b 92 a8 03 00 00    	mov    0x3a8(%edx),%edx
596fe0:	8b 4d bc             	mov    -0x44(%ebp),%ecx
596fe3:	03 d0                	add    %eax,%edx
596fe5:	66 8b 02             	mov    (%edx),%ax
596fe8:	66 89 01             	mov    %ax,(%ecx)
596feb:	8a 42 02             	mov    0x2(%edx),%al
596fee:	88 41 02             	mov    %al,0x2(%ecx)
596ff1:	eb 26                	jmp    0x597019
596ff3:	8a 07                	mov    (%edi),%al
596ff5:	24 0f                	and    $0xf,%al
596ff7:	25 ff 00 00 00       	and    $0xff,%eax
596ffc:	8d 04 40             	lea    (%eax,%eax,2),%eax
596fff:	8b 13                	mov    (%ebx),%edx
597001:	8b 92 a8 03 00 00    	mov    0x3a8(%edx),%edx
597007:	8b 4d bc             	mov    -0x44(%ebp),%ecx
59700a:	03 d0                	add    %eax,%edx
59700c:	66 8b 02             	mov    (%edx),%ax
59700f:	66 89 01             	mov    %ax,(%ecx)
597012:	8a 42 02             	mov    0x2(%edx),%al
597015:	88 41 02             	mov    %al,0x2(%ecx)
597018:	47                   	inc    %edi
597019:	83 45 bc 03          	addl   $0x3,-0x44(%ebp)
59701d:	ff 45 c8             	incl   -0x38(%ebp)
597020:	4e                   	dec    %esi
597021:	75 a5                	jne    0x596fc8
597023:	ff 4d c4             	decl   -0x3c(%ebp)
597026:	83 7d c4 ff          	cmpl   $0xffffffff,-0x3c(%ebp)
59702a:	0f 85 b0 fe ff ff    	jne    0x596ee0
597030:	8b 45 b4             	mov    -0x4c(%ebp),%eax
597033:	e8 94 b7 e6 ff       	call   0x4027cc
597038:	e9 91 06 00 00       	jmp    0x5976ce
59703d:	83 7d d8 02          	cmpl   $0x2,-0x28(%ebp)
597041:	0f 85 87 06 00 00    	jne    0x5976ce
597047:	8b 45 d4             	mov    -0x2c(%ebp),%eax
59704a:	e8 5d b7 e6 ff       	call   0x4027ac
59704f:	89 45 b4             	mov    %eax,-0x4c(%ebp)
597052:	8b 55 b4             	mov    -0x4c(%ebp),%edx
597055:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
597058:	8b 45 fc             	mov    -0x4(%ebp),%eax
59705b:	8b 30                	mov    (%eax),%esi
59705d:	ff 56 08             	call   *0x8(%esi)
597060:	8b 03                	mov    (%ebx),%eax
597062:	80 b8 a5 03 00 00 00 	cmpb   $0x0,0x3a5(%eax)
597069:	74 2b                	je     0x597096
59706b:	8b 45 f8             	mov    -0x8(%ebp),%eax
59706e:	c7 40 50 10 00 00 00 	movl   $0x10,0x50(%eax)
597075:	8b 03                	mov    (%ebx),%eax
597077:	8b 80 a8 03 00 00    	mov    0x3a8(%eax),%eax
59707d:	50                   	push   %eax
59707e:	8b 45 18             	mov    0x18(%ebp),%eax
597081:	50                   	push   %eax
597082:	8b 45 94             	mov    -0x6c(%ebp),%eax
597085:	50                   	push   %eax
597086:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
597089:	8b 55 b4             	mov    -0x4c(%ebp),%edx
59708c:	8b 45 f8             	mov    -0x8(%ebp),%eax
59708f:	e8 d8 f1 ff ff       	call   0x59626c
597094:	eb 1f                	jmp    0x5970b5
597096:	8b 03                	mov    (%ebx),%eax
597098:	8b 80 a8 03 00 00    	mov    0x3a8(%eax),%eax
59709e:	50                   	push   %eax
59709f:	8b 45 18             	mov    0x18(%ebp),%eax
5970a2:	50                   	push   %eax
5970a3:	8b 45 94             	mov    -0x6c(%ebp),%eax
5970a6:	50                   	push   %eax
5970a7:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
5970aa:	8b 55 b4             	mov    -0x4c(%ebp),%edx
5970ad:	8b 45 f8             	mov    -0x8(%ebp),%eax
5970b0:	e8 6b ef ff ff       	call   0x596020
5970b5:	8b 45 b4             	mov    -0x4c(%ebp),%eax
5970b8:	e8 0f b7 e6 ff       	call   0x4027cc
5970bd:	e9 0c 06 00 00       	jmp    0x5976ce
5970c2:	8b 03                	mov    (%ebx),%eax
5970c4:	c7 40 08 08 00 00 00 	movl   $0x8,0x8(%eax)
5970cb:	8b 03                	mov    (%ebx),%eax
5970cd:	c7 40 10 01 00 00 00 	movl   $0x1,0x10(%eax)
5970d4:	80 7d 14 00          	cmpb   $0x0,0x14(%ebp)
5970d8:	0f 85 f0 05 00 00    	jne    0x5976ce
5970de:	8b 03                	mov    (%ebx),%eax
5970e0:	80 b8 a5 03 00 00 00 	cmpb   $0x0,0x3a5(%eax)
5970e7:	74 40                	je     0x597129
5970e9:	8b 03                	mov    (%ebx),%eax
5970eb:	8b b0 ac 03 00 00    	mov    0x3ac(%eax),%esi
5970f1:	4e                   	dec    %esi
5970f2:	85 f6                	test   %esi,%esi
5970f4:	7c 33                	jl     0x597129
5970f6:	46                   	inc    %esi
5970f7:	c7 45 c4 00 00 00 00 	movl   $0x0,-0x3c(%ebp)
5970fe:	8b 45 c4             	mov    -0x3c(%ebp),%eax
597101:	8d 04 40             	lea    (%eax,%eax,2),%eax
597104:	8b 13                	mov    (%ebx),%edx
597106:	8b 92 a8 03 00 00    	mov    0x3a8(%edx),%edx
59710c:	8a 4c 02 02          	mov    0x2(%edx,%eax,1),%cl
597110:	c1 e1 10             	shl    $0x10,%ecx
597113:	66 8b 0c 02          	mov    (%edx,%eax,1),%cx
597117:	51                   	push   %ecx
597118:	8b 55 c4             	mov    -0x3c(%ebp),%edx
59711b:	8b 45 f8             	mov    -0x8(%ebp),%eax
59711e:	8b 08                	mov    (%eax),%ecx
597120:	ff 51 1c             	call   *0x1c(%ecx)
597123:	ff 45 c4             	incl   -0x3c(%ebp)
597126:	4e                   	dec    %esi
597127:	75 d5                	jne    0x5970fe
597129:	83 7d d8 01          	cmpl   $0x1,-0x28(%ebp)
59712d:	75 7b                	jne    0x5971aa
59712f:	8b 45 d4             	mov    -0x2c(%ebp),%eax
597132:	e8 75 b6 e6 ff       	call   0x4027ac
597137:	89 45 b4             	mov    %eax,-0x4c(%ebp)
59713a:	8b 55 b4             	mov    -0x4c(%ebp),%edx
59713d:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
597140:	8b 45 fc             	mov    -0x4(%ebp),%eax
597143:	8b 30                	mov    (%eax),%esi
597145:	ff 56 08             	call   *0x8(%esi)
597148:	8b 03                	mov    (%ebx),%eax
59714a:	80 b8 a5 03 00 00 00 	cmpb   $0x0,0x3a5(%eax)
597151:	74 2b                	je     0x59717e
597153:	8b 45 f8             	mov    -0x8(%ebp),%eax
597156:	c7 40 50 00 01 00 00 	movl   $0x100,0x50(%eax)
59715d:	8b 03                	mov    (%ebx),%eax
59715f:	8b 80 a8 03 00 00    	mov    0x3a8(%eax),%eax
597165:	50                   	push   %eax
597166:	8b 45 18             	mov    0x18(%ebp),%eax
597169:	50                   	push   %eax
59716a:	8b 45 94             	mov    -0x6c(%ebp),%eax
59716d:	50                   	push   %eax
59716e:	8b 4d d4             	mov    -0x2c(%ebp),%ecx