598c59:	89 90 ac 03 00 00    	mov    %edx,0x3ac(%eax)
598c5f:	8b 45 bc             	mov    -0x44(%ebp),%eax
598c62:	8d 04 40             	lea    (%eax,%eax,2),%eax
598c65:	e8 4a 04 e7 ff       	call   0x4090b4
598c6a:	8b 16                	mov    (%esi),%edx
598c6c:	89 82 a8 03 00 00    	mov    %eax,0x3a8(%edx)
598c72:	8b 5d bc             	mov    -0x44(%ebp),%ebx
598c75:	4b                   	dec    %ebx
598c76:	85 db                	test   %ebx,%ebx
598c78:	7c 4d                	jl     0x598cc7
598c7a:	43                   	inc    %ebx
598c7b:	c7 45 dc 00 00 00 00 	movl   $0x0,-0x24(%ebp)
598c82:	8d 85 62 fb ff ff    	lea    -0x49e(%ebp),%eax
598c88:	8b 55 dc             	mov    -0x24(%ebp),%edx
598c8b:	8d 14 52             	lea    (%edx,%edx,2),%edx
598c8e:	8b 0e                	mov    (%esi),%ecx
598c90:	8b 89 a8 03 00 00    	mov    0x3a8(%ecx),%ecx
598c96:	8d 7c 11 02          	lea    0x2(%ecx,%edx,1),%edi
598c9a:	8a 08                	mov    (%eax),%cl
598c9c:	88 0f                	mov    %cl,(%edi)
598c9e:	8b 0e                	mov    (%esi),%ecx
598ca0:	8b 89 a8 03 00 00    	mov    0x3a8(%ecx),%ecx
598ca6:	8d 7c 11 01          	lea    0x1(%ecx,%edx,1),%edi
598caa:	8a 48 ff             	mov    -0x1(%eax),%cl
598cad:	88 0f                	mov    %cl,(%edi)
598caf:	8b 0e                	mov    (%esi),%ecx
598cb1:	8b 89 a8 03 00 00    	mov    0x3a8(%ecx),%ecx
598cb7:	03 ca                	add    %edx,%ecx
598cb9:	8a 50 fe             	mov    -0x2(%eax),%dl
598cbc:	88 11                	mov    %dl,(%ecx)
598cbe:	ff 45 dc             	incl   -0x24(%ebp)
598cc1:	83 c0 04             	add    $0x4,%eax
598cc4:	4b                   	dec    %ebx
598cc5:	75 c1                	jne    0x598c88
598cc7:	8b 06                	mov    (%esi),%eax
598cc9:	8b 55 b4             	mov    -0x4c(%ebp),%edx
598ccc:	89 50 14             	mov    %edx,0x14(%eax)
598ccf:	8b 06                	mov    (%esi),%eax
598cd1:	8b 55 b8             	mov    -0x48(%ebp),%edx
598cd4:	89 50 18             	mov    %edx,0x18(%eax)
598cd7:	80 7d 14 00          	cmpb   $0x0,0x14(%ebp)
598cdb:	0f 85 10 08 00 00    	jne    0x5994f1
598ce1:	83 7d bc 02          	cmpl   $0x2,-0x44(%ebp)
598ce5:	75 12                	jne    0x598cf9
598ce7:	6a 01                	push   $0x1
598ce9:	8b 4d b8             	mov    -0x48(%ebp),%ecx
598cec:	8b 55 b4             	mov    -0x4c(%ebp),%edx
598cef:	8b 45 f8             	mov    -0x8(%ebp),%eax
598cf2:	8b 18                	mov    (%eax),%ebx
598cf4:	ff 53 24             	call   *0x24(%ebx)
598cf7:	eb 10                	jmp    0x598d09
598cf9:	6a 05                	push   $0x5
598cfb:	8b 4d b8             	mov    -0x48(%ebp),%ecx
598cfe:	8b 55 b4             	mov    -0x4c(%ebp),%edx
598d01:	8b 45 f8             	mov    -0x8(%ebp),%eax
598d04:	8b 18                	mov    (%eax),%ebx
598d06:	ff 53 24             	call   *0x24(%ebx)
598d09:	8a 45 08             	mov    0x8(%ebp),%al
598d0c:	34 01                	xor    $0x1,%al
598d0e:	84 c0                	test   %al,%al
598d10:	74 43                	je     0x598d55
598d12:	8b 45 0c             	mov    0xc(%ebp),%eax
598d15:	83 38 00             	cmpl   $0x0,(%eax)
598d18:	75 11                	jne    0x598d2b
598d1a:	b2 01                	mov    $0x1,%dl
598d1c:	a1 a4 fd 5e 00       	mov    0x5efda4,%eax
598d21:	e8 4e 9e 05 00       	call   0x5f2b74
598d26:	8b 55 0c             	mov    0xc(%ebp),%edx
598d29:	89 02                	mov    %eax,(%edx)
598d2b:	6a 08                	push   $0x8
598d2d:	8b 45 0c             	mov    0xc(%ebp),%eax
598d30:	8b 00                	mov    (%eax),%eax
598d32:	8b 4d b8             	mov    -0x48(%ebp),%ecx
598d35:	8b 55 b4             	mov    -0x4c(%ebp),%edx
598d38:	e8 03 a2 05 00       	call   0x5f2f40
598d3d:	8b 45 0c             	mov    0xc(%ebp),%eax
598d40:	8b 00                	mov    (%eax),%eax
598d42:	ba ff 00 00 00       	mov    $0xff,%edx
598d47:	e8 d8 b9 05 00       	call   0x5f4724
598d4c:	8b 45 0c             	mov    0xc(%ebp),%eax
598d4f:	8b 00                	mov    (%eax),%eax
598d51:	c6 40 68 00          	movb   $0x0,0x68(%eax)
598d55:	8b 45 f8             	mov    -0x8(%ebp),%eax
598d58:	8b 10                	mov    (%eax),%edx
598d5a:	ff 52 08             	call   *0x8(%edx)
598d5d:	f7 6d a8             	imull  -0x58(%ebp)
598d60:	e8 47 9a e6 ff       	call   0x4027ac
598d65:	89 45 ac             	mov    %eax,-0x54(%ebp)
598d68:	8b 45 ac             	mov    -0x54(%ebp),%eax
598d6b:	89 45 b0             	mov    %eax,-0x50(%ebp)
598d6e:	8b 45 cc             	mov    -0x34(%ebp),%eax
598d71:	83 f8 08             	cmp    $0x8,%eax
598d74:	7f 17                	jg     0x598d8d
598d76:	0f 84 85 04 00 00    	je     0x599201
598d7c:	48                   	dec    %eax
598d7d:	74 25                	je     0x598da4
598d7f:	83 e8 03             	sub    $0x3,%eax
598d82:	0f 84 92 01 00 00    	je     0x598f1a
598d88:	e9 30 07 00 00       	jmp    0x5994bd
598d8d:	83 e8 18             	sub    $0x18,%eax
598d90:	0f 84 4d 06 00 00    	je     0x5993e3
598d96:	83 e8 08             	sub    $0x8,%eax
598d99:	0f 84 7e 06 00 00    	je     0x59941d
598d9f:	e9 19 07 00 00       	jmp    0x5994bd
598da4:	8b 45 f8             	mov    -0x8(%ebp),%eax
598da7:	8b 10                	mov    (%eax),%edx
598da9:	ff 52 08             	call   *0x8(%edx)
598dac:	48                   	dec    %eax
598dad:	89 45 9c             	mov    %eax,-0x64(%ebp)
598db0:	8b 45 9c             	mov    -0x64(%ebp),%eax
598db3:	83 f8 00             	cmp    $0x0,%eax
598db6:	7c 23                	jl     0x598ddb
598db8:	89 45 d8             	mov    %eax,-0x28(%ebp)
598dbb:	8b 55 d8             	mov    -0x28(%ebp),%edx
598dbe:	8b 45 f8             	mov    -0x8(%ebp),%eax
598dc1:	8b 08                	mov    (%eax),%ecx
598dc3:	ff 11                	call   *(%ecx)
598dc5:	8b d0                	mov    %eax,%edx
598dc7:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
598dca:	8b 45 fc             	mov    -0x4(%ebp),%eax
598dcd:	8b 18                	mov    (%eax),%ebx
598dcf:	ff 53 08             	call   *0x8(%ebx)
598dd2:	ff 4d d8             	decl   -0x28(%ebp)
598dd5:	83 7d d8 ff          	cmpl   $0xffffffff,-0x28(%ebp)
598dd9:	75 e0                	jne    0x598dbb
598ddb:	8b 45 f8             	mov    -0x8(%ebp),%eax
598dde:	8b 10                	mov    (%eax),%edx
598de0:	ff 52 08             	call   *0x8(%edx)
598de3:	8b c8                	mov    %eax,%ecx
598de5:	0f af 4d a8          	imul   -0x58(%ebp),%ecx
598de9:	8b 55 ac             	mov    -0x54(%ebp),%edx
598dec:	8b 45 fc             	mov    -0x4(%ebp),%eax
598def:	8b 18                	mov    (%eax),%ebx
598df1:	ff 53 08             	call   *0x8(%ebx)
598df4:	80 7d 08 00          	cmpb   $0x0,0x8(%ebp)
598df8:	75 53                	jne    0x598e4d
598dfa:	8b 45 f8             	mov    -0x8(%ebp),%eax
598dfd:	8b 10                	mov    (%eax),%edx
598dff:	ff 52 0c             	call   *0xc(%edx)
598e02:	48                   	dec    %eax
598e03:	89 45 a0             	mov    %eax,-0x60(%ebp)
598e06:	8b 45 9c             	mov    -0x64(%ebp),%eax
598e09:	83 f8 00             	cmp    $0x0,%eax
598e0c:	7c 3f                	jl     0x598e4d
598e0e:	89 45 d8             	mov    %eax,-0x28(%ebp)
598e11:	8b 5d a0             	mov    -0x60(%ebp),%ebx
598e14:	85 db                	test   %ebx,%ebx
598e16:	7c 26                	jl     0x598e3e
598e18:	43                   	inc    %ebx
598e19:	33 ff                	xor    %edi,%edi
598e1b:	8b d7                	mov    %edi,%edx
598e1d:	8b 45 b0             	mov    -0x50(%ebp),%eax
598e20:	e8 db 6c 01 00       	call   0x5afb00
598e25:	85 c0                	test   %eax,%eax
598e27:	74 11                	je     0x598e3a
598e29:	6a 00                	push   $0x0
598e2b:	8b 45 0c             	mov    0xc(%ebp),%eax
598e2e:	8b 00                	mov    (%eax),%eax
598e30:	8b 4d d8             	mov    -0x28(%ebp),%ecx
598e33:	8b d7                	mov    %edi,%edx
598e35:	e8 1e 9e 05 00       	call   0x5f2c58
598e3a:	47                   	inc    %edi
598e3b:	4b                   	dec    %ebx
598e3c:	75 dd                	jne    0x598e1b
598e3e:	8b 45 a8             	mov    -0x58(%ebp),%eax
598e41:	01 45 b0             	add    %eax,-0x50(%ebp)
598e44:	ff 4d d8             	decl   -0x28(%ebp)
598e47:	83 7d d8 ff          	cmpl   $0xffffffff,-0x28(%ebp)
598e4b:	75 c4                	jne    0x598e11
598e4d:	8b 45 ac             	mov    -0x54(%ebp),%eax
598e50:	89 45 b0             	mov    %eax,-0x50(%ebp)
598e53:	8b 06                	mov    (%esi),%eax
598e55:	8a 90 0a 01 00 00    	mov    0x10a(%eax),%dl
598e5b:	c1 e2 10             	shl    $0x10,%edx
598e5e:	66 8b 90 08 01 00 00 	mov    0x108(%eax),%dx
598e65:	52                   	push   %edx
598e66:	8d 85 5c fb ff ff    	lea    -0x4a4(%ebp),%eax
598e6c:	50                   	push   %eax
598e6d:	b1 ff                	mov    $0xff,%cl
598e6f:	b2 ff                	mov    $0xff,%dl
598e71:	b0 ff                	mov    $0xff,%al
598e73:	e8 98 04 01 00       	call   0x5a9310
598e78:	8a 85 5e fb ff ff    	mov    -0x4a2(%ebp),%al
598e7e:	c1 e0 10             	shl    $0x10,%eax
598e81:	66 8b 85 5c fb ff ff 	mov    -0x4a4(%ebp),%ax
598e88:	50                   	push   %eax
598e89:	e8 c6 05 01 00       	call   0x5a9454
598e8e:	88 45 a6             	mov    %al,-0x5a(%ebp)
598e91:	8b 45 f8             	mov    -0x8(%ebp),%eax
598e94:	8b 10                	mov    (%eax),%edx
598e96:	ff 52 0c             	call   *0xc(%edx)
598e99:	48                   	dec    %eax
598e9a:	89 45 a0             	mov    %eax,-0x60(%ebp)
598e9d:	8b 45 9c             	mov    -0x64(%ebp),%eax
598ea0:	83 f8 00             	cmp    $0x0,%eax
598ea3:	0f 8c 14 06 00 00    	jl     0x5994bd
598ea9:	89 45 d8             	mov    %eax,-0x28(%ebp)
598eac:	8b 55 d8             	mov    -0x28(%ebp),%edx
598eaf:	8b 45 f8             	mov    -0x8(%ebp),%eax
598eb2:	8b 08                	mov    (%eax),%ecx
598eb4:	ff 11                	call   *(%ecx)
598eb6:	8b f0                	mov    %eax,%esi
598eb8:	8b 5d a0             	mov    -0x60(%ebp),%ebx
598ebb:	85 db                	test   %ebx,%ebx
598ebd:	7c 47                	jl     0x598f06
598ebf:	43                   	inc    %ebx
598ec0:	33 ff                	xor    %edi,%edi
598ec2:	8b d7                	mov    %edi,%edx
598ec4:	8b 45 b0             	mov    -0x50(%ebp),%eax
598ec7:	e8 34 6c 01 00       	call   0x5afb00
598ecc:	85 c0                	test   %eax,%eax
598ece:	74 32                	je     0x598f02
598ed0:	8b d7                	mov    %edi,%edx
598ed2:	8b c6                	mov    %esi,%eax
598ed4:	e8 27 6c 01 00       	call   0x5afb00
598ed9:	85 c0                	test   %eax,%eax
598edb:	0f 95 45 a7          	setne  -0x59(%ebp)
598edf:	8a 45 a7             	mov    -0x59(%ebp),%al
598ee2:	32 45 a6             	xor    -0x5a(%ebp),%al
598ee5:	74 10                	je     0x598ef7
598ee7:	b9 01 00 00 00       	mov    $0x1,%ecx
598eec:	8b d7                	mov    %edi,%edx
598eee:	8b c6                	mov    %esi,%eax
598ef0:	e8 27 6c 01 00       	call   0x5afb1c
598ef5:	eb 0b                	jmp    0x598f02
598ef7:	33 c9                	xor    %ecx,%ecx
598ef9:	8b d7                	mov    %edi,%edx
598efb:	8b c6                	mov    %esi,%eax
598efd:	e8 1a 6c 01 00       	call   0x5afb1c
598f02:	47                   	inc    %edi
598f03:	4b                   	dec    %ebx
598f04:	75 bc                	jne    0x598ec2
598f06:	8b 45 a8             	mov    -0x58(%ebp),%eax
598f09:	01 45 b0             	add    %eax,-0x50(%ebp)
598f0c:	ff 4d d8             	decl   -0x28(%ebp)
598f0f:	83 7d d8 ff          	cmpl   $0xffffffff,-0x28(%ebp)
598f13:	75 97                	jne    0x598eac
598f15:	e9 a3 05 00 00       	jmp    0x5994bd
598f1a:	8b 45 f8             	mov    -0x8(%ebp),%eax
598f1d:	8b 10                	mov    (%eax),%edx
598f1f:	ff 52 0c             	call   *0xc(%edx)
598f22:	d1 e8                	shr    $1,%eax
598f24:	99                   	cltd
598f25:	89 45 e0             	mov    %eax,-0x20(%ebp)
598f28:	89 55 e4             	mov    %edx,-0x1c(%ebp)
598f2b:	8b 45 f8             	mov    -0x8(%ebp),%eax
598f2e:	8b 10                	mov    (%eax),%edx
598f30:	ff 52 0c             	call   *0xc(%edx)
598f33:	a8 01                	test   $0x1,%al
598f35:	74 08                	je     0x598f3f
598f37:	83 45 e0 01          	addl   $0x1,-0x20(%ebp)
598f3b:	83 55 e4 00          	adcl   $0x0,-0x1c(%ebp)
598f3f:	8b 45 f8             	mov    -0x8(%ebp),%eax
598f42:	8b 10                	mov    (%eax),%edx
598f44:	ff 52 08             	call   *0x8(%edx)
598f47:	f7 6d d4             	imull  -0x2c(%ebp)
598f4a:	e8 5d 98 e6 ff       	call   0x4027ac
598f4f:	89 45 c8             	mov    %eax,-0x38(%ebp)
598f52:	8b 45 f8             	mov    -0x8(%ebp),%eax
598f55:	8b 10                	mov    (%eax),%edx
598f57:	ff 52 08             	call   *0x8(%edx)
598f5a:	8b c8                	mov    %eax,%ecx
598f5c:	0f af 4d d4          	imul   -0x2c(%ebp),%ecx
598f60:	8b 55 c8             	mov    -0x38(%ebp),%edx
598f63:	8b 45 fc             	mov    -0x4(%ebp),%eax
598f66:	8b 18                	mov    (%eax),%ebx
598f68:	ff 53 08             	call   *0x8(%ebx)
598f6b:	8b 45 f8             	mov    -0x8(%ebp),%eax
598f6e:	8b 10                	mov    (%eax),%edx
598f70:	ff 52 08             	call   *0x8(%edx)
598f73:	8b c8                	mov    %eax,%ecx
598f75:	0f af 4d a8          	imul   -0x58(%ebp),%ecx
598f79:	8b 55 ac             	mov    -0x54(%ebp),%edx
598f7c:	8b 45 fc             	mov    -0x4(%ebp),%eax
598f7f:	8b 18                	mov    (%eax),%ebx
598f81:	ff 53 08             	call   *0x8(%ebx)
598f84:	8b 45 f8             	mov    -0x8(%ebp),%eax
598f87:	8b 10                	mov    (%eax),%edx
598f89:	ff 52 08             	call   *0x8(%edx)
598f8c:	48                   	dec    %eax
598f8d:	89 45 9c             	mov    %eax,-0x64(%ebp)
598f90:	8a 45 08             	mov    0x8(%ebp),%al
598f93:	34 01                	xor    $0x1,%al
598f95:	84 c0                	test   %al,%al
598f97:	0f 84 52 01 00 00    	je     0x5990ef
598f9d:	8b 45 9c             	mov    -0x64(%ebp),%eax
598fa0:	83 f8 00             	cmp    $0x0,%eax
598fa3:	0f 8c 4b 02 00 00    	jl     0x5991f4
598fa9:	89 45 d8             	mov    %eax,-0x28(%ebp)
598fac:	8b 55 d8             	mov    -0x28(%ebp),%edx
598faf:	8b 45 f8             	mov    -0x8(%ebp),%eax
598fb2:	8b 08                	mov    (%eax),%ecx
598fb4:	ff 11                	call   *(%ecx)
598fb6:	89 45 c0             	mov    %eax,-0x40(%ebp)
598fb9:	8b 45 c8             	mov    -0x38(%ebp),%eax
598fbc:	89 45 c4             	mov    %eax,-0x3c(%ebp)
598fbf:	8b 45 9c             	mov    -0x64(%ebp),%eax
598fc2:	2b 45 d8             	sub    -0x28(%ebp),%eax
598fc5:	f7 6d d4             	imull  -0x2c(%ebp)
598fc8:	01 45 c4             	add    %eax,-0x3c(%ebp)
598fcb:	8b 5d e0             	mov    -0x20(%ebp),%ebx
598fce:	4b                   	dec    %ebx
598fcf:	85 db                	test   %ebx,%ebx
598fd1:	0f 8c 00 01 00 00    	jl     0x5990d7
598fd7:	43                   	inc    %ebx
598fd8:	33 ff                	xor    %edi,%edi
598fda:	8b d7                	mov    %edi,%edx
598fdc:	03 d2                	add    %edx,%edx
598fde:	8b 45 b0             	mov    -0x50(%ebp),%eax
598fe1:	e8 1a 6b 01 00       	call   0x5afb00
598fe6:	85 c0                	test   %eax,%eax
598fe8:	74 13                	je     0x598ffd
598fea:	6a 00                	push   $0x0
598fec:	8b d7                	mov    %edi,%edx
598fee:	03 d2                	add    %edx,%edx
598ff0:	8b 45 0c             	mov    0xc(%ebp),%eax
598ff3:	8b 00                	mov    (%eax),%eax
598ff5:	8b 4d d8             	mov    -0x28(%ebp),%ecx
598ff8:	e8 5b 9c 05 00       	call   0x5f2c58
598ffd:	8b d7                	mov    %edi,%edx
598fff:	03 d2                	add    %edx,%edx
599001:	8b 45 b0             	mov    -0x50(%ebp),%eax
599004:	e8 f7 6a 01 00       	call   0x5afb00
599009:	85 c0                	test   %eax,%eax
59900b:	75 27                	jne    0x599034
59900d:	8b 45 c4             	mov    -0x3c(%ebp),%eax
599010:	0f b6 00             	movzbl (%eax),%eax
599013:	c1 e8 04             	shr    $0x4,%eax
599016:	8d 04 40             	lea    (%eax,%eax,2),%eax
599019:	8b 16                	mov    (%esi),%edx
59901b:	8b 92 a8 03 00 00    	mov    0x3a8(%edx),%edx
599021:	8b 4d c0             	mov    -0x40(%ebp),%ecx
599024:	03 d0                	add    %eax,%edx
599026:	66 8b 02             	mov    (%edx),%ax
599029:	66 89 01             	mov    %ax,(%ecx)
59902c:	8a 42 02             	mov    0x2(%edx),%al
59902f:	88 41 02             	mov    %al,0x2(%ecx)
599032:	eb 18                	jmp    0x59904c
599034:	8b 45 c0             	mov    -0x40(%ebp),%eax
599037:	8b 16                	mov    (%esi),%edx
599039:	66 8b 8a 08 01 00 00 	mov    0x108(%edx),%cx
599040:	66 89 08             	mov    %cx,(%eax)
599043:	8a 8a 0a 01 00 00    	mov    0x10a(%edx),%cl
599049:	88 48 02             	mov    %cl,0x2(%eax)
59904c:	83 45 c0 03          	addl   $0x3,-0x40(%ebp)
599050:	8b d7                	mov    %edi,%edx
599052:	03 d2                	add    %edx,%edx
599054:	42                   	inc    %edx
599055:	8b 45 b0             	mov    -0x50(%ebp),%eax
599058:	e8 a3 6a 01 00       	call   0x5afb00