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
59905d:	85 c0                	test   %eax,%eax
59905f:	74 14                	je     0x599075
599061:	6a 00                	push   $0x0
599063:	8b d7                	mov    %edi,%edx
599065:	03 d2                	add    %edx,%edx
599067:	42                   	inc    %edx
599068:	8b 45 0c             	mov    0xc(%ebp),%eax
59906b:	8b 00                	mov    (%eax),%eax
59906d:	8b 4d d8             	mov    -0x28(%ebp),%ecx
599070:	e8 e3 9b 05 00       	call   0x5f2c58
599075:	8b d7                	mov    %edi,%edx
599077:	03 d2                	add    %edx,%edx
599079:	42                   	inc    %edx
59907a:	8b 45 b0             	mov    -0x50(%ebp),%eax
59907d:	e8 7e 6a 01 00       	call   0x5afb00
599082:	85 c0                	test   %eax,%eax
599084:	75 2a                	jne    0x5990b0
599086:	8b 45 c4             	mov    -0x3c(%ebp),%eax
599089:	8a 00                	mov    (%eax),%al
59908b:	24 0f                	and    $0xf,%al
59908d:	25 ff 00 00 00       	and    $0xff,%eax
599092:	8d 04 40             	lea    (%eax,%eax,2),%eax
599095:	8b 16                	mov    (%esi),%edx
599097:	8b 92 a8 03 00 00    	mov    0x3a8(%edx),%edx
59909d:	8b 4d c0             	mov    -0x40(%ebp),%ecx
5990a0:	03 d0                	add    %eax,%edx
5990a2:	66 8b 02             	mov    (%edx),%ax
5990a5:	66 89 01             	mov    %ax,(%ecx)
5990a8:	8a 42 02             	mov    0x2(%edx),%al
5990ab:	88 41 02             	mov    %al,0x2(%ecx)
5990ae:	eb 18                	jmp    0x5990c8
5990b0:	8b 45 c0             	mov    -0x40(%ebp),%eax
5990b3:	8b 16                	mov    (%esi),%edx
5990b5:	66 8b 8a 08 01 00 00 	mov    0x108(%edx),%cx
5990bc:	66 89 08             	mov    %cx,(%eax)
5990bf:	8a 8a 0a 01 00 00    	mov    0x10a(%edx),%cl
5990c5:	88 48 02             	mov    %cl,0x2(%eax)
5990c8:	83 45 c0 03          	addl   $0x3,-0x40(%ebp)
5990cc:	ff 45 c4             	incl   -0x3c(%ebp)
5990cf:	47                   	inc    %edi
5990d0:	4b                   	dec    %ebx
5990d1:	0f 85 03 ff ff ff    	jne    0x598fda
5990d7:	8b 45 a8             	mov    -0x58(%ebp),%eax
5990da:	01 45 b0             	add    %eax,-0x50(%ebp)
5990dd:	ff 4d d8             	decl   -0x28(%ebp)
5990e0:	83 7d d8 ff          	cmpl   $0xffffffff,-0x28(%ebp)
5990e4:	0f 85 c2 fe ff ff    	jne    0x598fac
5990ea:	e9 05 01 00 00       	jmp    0x5991f4
5990ef:	8b 45 9c             	mov    -0x64(%ebp),%eax
5990f2:	83 f8 00             	cmp    $0x0,%eax
5990f5:	0f 8c f9 00 00 00    	jl     0x5991f4
5990fb:	89 45 d8             	mov    %eax,-0x28(%ebp)
5990fe:	8b 55 d8             	mov    -0x28(%ebp),%edx
599101:	8b 45 f8             	mov    -0x8(%ebp),%eax
599104:	8b 08                	mov    (%eax),%ecx
599106:	ff 11                	call   *(%ecx)
599108:	89 45 c0             	mov    %eax,-0x40(%ebp)
59910b:	8b 45 c8             	mov    -0x38(%ebp),%eax
59910e:	89 45 c4             	mov    %eax,-0x3c(%ebp)
599111:	8b 45 9c             	mov    -0x64(%ebp),%eax
599114:	2b 45 d8             	sub    -0x28(%ebp),%eax
599117:	f7 6d d4             	imull  -0x2c(%ebp)
59911a:	01 45 c4             	add    %eax,-0x3c(%ebp)
59911d:	8b 5d e0             	mov    -0x20(%ebp),%ebx
599120:	4b                   	dec    %ebx
599121:	85 db                	test   %ebx,%ebx
599123:	0f 8c b8 00 00 00    	jl     0x5991e1
599129:	43                   	inc    %ebx
59912a:	33 ff                	xor    %edi,%edi
59912c:	8b d7                	mov    %edi,%edx
59912e:	03 d2                	add    %edx,%edx
599130:	8b 45 b0             	mov    -0x50(%ebp),%eax
599133:	e8 c8 69 01 00       	call   0x5afb00
599138:	85 c0                	test   %eax,%eax
59913a:	75 27                	jne    0x599163
59913c:	8b 45 c4             	mov    -0x3c(%ebp),%eax
59913f:	0f b6 00             	movzbl (%eax),%eax
599142:	c1 e8 04             	shr    $0x4,%eax
599145:	8d 04 40             	lea    (%eax,%eax,2),%eax
599148:	8b 16                	mov    (%esi),%edx
59914a:	8b 92 a8 03 00 00    	mov    0x3a8(%edx),%edx
599150:	8b 4d c0             	mov    -0x40(%ebp),%ecx
599153:	03 d0                	add    %eax,%edx
599155:	66 8b 02             	mov    (%edx),%ax
599158:	66 89 01             	mov    %ax,(%ecx)
59915b:	8a 42 02             	mov    0x2(%edx),%al
59915e:	88 41 02             	mov    %al,0x2(%ecx)
599161:	eb 18                	jmp    0x59917b
599163:	8b 45 c0             	mov    -0x40(%ebp),%eax
599166:	8b 16                	mov    (%esi),%edx
599168:	66 8b 8a 08 01 00 00 	mov    0x108(%edx),%cx
59916f:	66 89 08             	mov    %cx,(%eax)
599172:	8a 8a 0a 01 00 00    	mov    0x10a(%edx),%cl
599178:	88 48 02             	mov    %cl,0x2(%eax)
59917b:	83 45 c0 03          	addl   $0x3,-0x40(%ebp)
59917f:	8b d7                	mov    %edi,%edx
599181:	03 d2                	add    %edx,%edx
599183:	42                   	inc    %edx
599184:	8b 45 b0             	mov    -0x50(%ebp),%eax
599187:	e8 74 69 01 00       	call   0x5afb00
59918c:	85 c0                	test   %eax,%eax
59918e:	75 2a                	jne    0x5991ba
599190:	8b 45 c4             	mov    -0x3c(%ebp),%eax
599193:	8a 00                	mov    (%eax),%al
599195:	24 0f                	and    $0xf,%al
599197:	25 ff 00 00 00       	and    $0xff,%eax
59919c:	8d 04 40             	lea    (%eax,%eax,2),%eax
59919f:	8b 16                	mov    (%esi),%edx
5991a1:	8b 92 a8 03 00 00    	mov    0x3a8(%edx),%edx
5991a7:	8b 4d c0             	mov    -0x40(%ebp),%ecx
5991aa:	03 d0                	add    %eax,%edx
5991ac:	66 8b 02             	mov    (%edx),%ax
5991af:	66 89 01             	mov    %ax,(%ecx)
5991b2:	8a 42 02             	mov    0x2(%edx),%al
5991b5:	88 41 02             	mov    %al,0x2(%ecx)
5991b8:	eb 18                	jmp    0x5991d2
5991ba:	8b 45 c0             	mov    -0x40(%ebp),%eax
5991bd:	8b 16                	mov    (%esi),%edx
5991bf:	66 8b 8a 08 01 00 00 	mov    0x108(%edx),%cx
5991c6:	66 89 08             	mov    %cx,(%eax)
5991c9:	8a 8a 0a 01 00 00    	mov    0x10a(%edx),%cl
5991cf:	88 48 02             	mov    %cl,0x2(%eax)
5991d2:	83 45 c0 03          	addl   $0x3,-0x40(%ebp)
5991d6:	ff 45 c4             	incl   -0x3c(%ebp)
5991d9:	47                   	inc    %edi
5991da:	4b                   	dec    %ebx
5991db:	0f 85 4b ff ff ff    	jne    0x59912c
5991e1:	8b 45 a8             	mov    -0x58(%ebp),%eax
5991e4:	01 45 b0             	add    %eax,-0x50(%ebp)
5991e7:	ff 4d d8             	decl   -0x28(%ebp)
5991ea:	83 7d d8 ff          	cmpl   $0xffffffff,-0x28(%ebp)
5991ee:	0f 85 0a ff ff ff    	jne    0x5990fe
5991f4:	8b 45 c8             	mov    -0x38(%ebp),%eax
5991f7:	e8 d0 95 e6 ff       	call   0x4027cc
5991fc:	e9 bc 02 00 00       	jmp    0x5994bd
599201:	8b 45 f8             	mov    -0x8(%ebp),%eax
599204:	8b 10                	mov    (%eax),%edx
599206:	ff 52 08             	call   *0x8(%edx)
599209:	f7 6d d4             	imull  -0x2c(%ebp)
59920c:	89 45 d0             	mov    %eax,-0x30(%ebp)
59920f:	8b 45 d0             	mov    -0x30(%ebp),%eax
599212:	e8 95 95 e6 ff       	call   0x4027ac
599217:	89 45 c8             	mov    %eax,-0x38(%ebp)
59921a:	8b 55 c8             	mov    -0x38(%ebp),%edx
59921d:	8b 4d d0             	mov    -0x30(%ebp),%ecx
599220:	8b 45 fc             	mov    -0x4(%ebp),%eax
599223:	8b 18                	mov    (%eax),%ebx
599225:	ff 53 08             	call   *0x8(%ebx)
599228:	8b 45 f8             	mov    -0x8(%ebp),%eax
59922b:	8b 10                	mov    (%eax),%edx
59922d:	ff 52 08             	call   *0x8(%edx)
599230:	8b c8                	mov    %eax,%ecx
599232:	0f af 4d a8          	imul   -0x58(%ebp),%ecx
599236:	8b 55 ac             	mov    -0x54(%ebp),%edx
599239:	8b 45 fc             	mov    -0x4(%ebp),%eax
59923c:	8b 18                	mov    (%eax),%ebx
59923e:	ff 53 08             	call   *0x8(%ebx)
599241:	8b 45 f8             	mov    -0x8(%ebp),%eax
599244:	8b 10                	mov    (%eax),%edx
599246:	ff 52 08             	call   *0x8(%edx)
599249:	48                   	dec    %eax
59924a:	89 45 9c             	mov    %eax,-0x64(%ebp)
59924d:	8b 45 f8             	mov    -0x8(%ebp),%eax
599250:	8b 10                	mov    (%eax),%edx
599252:	ff 52 0c             	call   *0xc(%edx)
599255:	48                   	dec    %eax
599256:	89 45 a0             	mov    %eax,-0x60(%ebp)
599259:	8a 45 08             	mov    0x8(%ebp),%al
59925c:	34 01                	xor    $0x1,%al
59925e:	84 c0                	test   %al,%al
599260:	0f 84 ca 00 00 00    	je     0x599330
599266:	8b 45 9c             	mov    -0x64(%ebp),%eax
599269:	83 f8 00             	cmp    $0x0,%eax
59926c:	0f 8c 64 01 00 00    	jl     0x5993d6
599272:	89 45 d8             	mov    %eax,-0x28(%ebp)