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
597171:	8b 55 b4             	mov    -0x4c(%ebp),%edx
597174:	8b 45 f8             	mov    -0x8(%ebp),%eax
597177:	e8 88 f4 ff ff       	call   0x596604
59717c:	eb 1f                	jmp    0x59719d
59717e:	8b 03                	mov    (%ebx),%eax
597180:	8b 80 a8 03 00 00    	mov    0x3a8(%eax),%eax
597186:	50                   	push   %eax
597187:	8b 45 18             	mov    0x18(%ebp),%eax
59718a:	50                   	push   %eax
59718b:	8b 45 94             	mov    -0x6c(%ebp),%eax
59718e:	50                   	push   %eax
59718f:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
597192:	8b 55 b4             	mov    -0x4c(%ebp),%edx
597195:	8b 45 f8             	mov    -0x8(%ebp),%eax
597198:	e8 a7 f2 ff ff       	call   0x596444
59719d:	8b 45 b4             	mov    -0x4c(%ebp),%eax
5971a0:	e8 27 b6 e6 ff       	call   0x4027cc
5971a5:	e9 24 05 00 00       	jmp    0x5976ce
5971aa:	83 7d d8 00          	cmpl   $0x0,-0x28(%ebp)
5971ae:	0f 85 1a 05 00 00    	jne    0x5976ce
5971b4:	8b 45 f8             	mov    -0x8(%ebp),%eax
5971b7:	8b 10                	mov    (%eax),%edx
5971b9:	ff 52 08             	call   *0x8(%edx)
5971bc:	f7 6d c0             	imull  -0x40(%ebp)
5971bf:	e8 e8 b5 e6 ff       	call   0x4027ac
5971c4:	89 45 b4             	mov    %eax,-0x4c(%ebp)
5971c7:	8b 45 f8             	mov    -0x8(%ebp),%eax
5971ca:	8b 10                	mov    (%eax),%edx
5971cc:	ff 52 08             	call   *0x8(%edx)
5971cf:	8b c8                	mov    %eax,%ecx
5971d1:	0f af 4d c0          	imul   -0x40(%ebp),%ecx
5971d5:	8b 55 b4             	mov    -0x4c(%ebp),%edx
5971d8:	8b 45 fc             	mov    -0x4(%ebp),%eax
5971db:	8b 30                	mov    (%eax),%esi
5971dd:	ff 56 08             	call   *0x8(%esi)
5971e0:	8b 45 f8             	mov    -0x8(%ebp),%eax
5971e3:	8b 10                	mov    (%eax),%edx
5971e5:	ff 52 08             	call   *0x8(%edx)
5971e8:	48                   	dec    %eax
5971e9:	89 45 98             	mov    %eax,-0x68(%ebp)
5971ec:	8b 45 f8             	mov    -0x8(%ebp),%eax
5971ef:	8b 10                	mov    (%eax),%edx
5971f1:	ff 52 0c             	call   *0xc(%edx)
5971f4:	48                   	dec    %eax
5971f5:	89 45 9c             	mov    %eax,-0x64(%ebp)
5971f8:	8b 45 98             	mov    -0x68(%ebp),%eax
5971fb:	83 f8 00             	cmp    $0x0,%eax
5971fe:	0f 8c e9 00 00 00    	jl     0x5972ed
597204:	89 45 c4             	mov    %eax,-0x3c(%ebp)
597207:	8b 45 18             	mov    0x18(%ebp),%eax
59720a:	66 83 78 02 00       	cmpw   $0x0,0x2(%eax)
59720f:	74 2d                	je     0x59723e
597211:	8b 45 98             	mov    -0x68(%ebp),%eax
597214:	2b 45 c4             	sub    -0x3c(%ebp),%eax
597217:	89 85 74 ff ff ff    	mov    %eax,-0x8c(%ebp)
59721d:	db 85 74 ff ff ff    	fildl  -0x8c(%ebp)
597223:	8b 45 18             	mov    0x18(%ebp),%eax
597226:	dc 48 18             	fmull  0x18(%eax)
597229:	e8 9e ba e6 ff       	call   0x402ccc
59722e:	8b c8                	mov    %eax,%ecx
597230:	8b 75 18             	mov    0x18(%ebp),%esi
597233:	8b 55 18             	mov    0x18(%ebp),%edx
597236:	8b 52 08             	mov    0x8(%edx),%edx
597239:	8b 46 04             	mov    0x4(%esi),%eax
59723c:	ff 16                	call   *(%esi)
59723e:	8b 45 18             	mov    0x18(%ebp),%eax
597241:	8b 40 28             	mov    0x28(%eax),%eax
597244:	80 38 00             	cmpb   $0x0,(%eax)
597247:	0f 85 a0 00 00 00    	jne    0x5972ed
59724d:	8b 7d b4             	mov    -0x4c(%ebp),%edi
597250:	8b 45 98             	mov    -0x68(%ebp),%eax
597253:	2b 45 c4             	sub    -0x3c(%ebp),%eax
597256:	f7 6d c0             	imull  -0x40(%ebp)
597259:	03 f8                	add    %eax,%edi
59725b:	8b 03                	mov    (%ebx),%eax
59725d:	80 b8 a5 03 00 00 00 	cmpb   $0x0,0x3a5(%eax)
597264:	74 33                	je     0x597299
597266:	8b 45 f8             	mov    -0x8(%ebp),%eax
597269:	c7 40 50 00 01 00 00 	movl   $0x100,0x50(%eax)
597270:	8b 45 94             	mov    -0x6c(%ebp),%eax
597273:	2b 45 c4             	sub    -0x3c(%ebp),%eax
597276:	99                   	cltd
597277:	33 c2                	xor    %edx,%eax
597279:	2b c2                	sub    %edx,%eax
59727b:	8b d0                	mov    %eax,%edx
59727d:	8b 45 f8             	mov    -0x8(%ebp),%eax
597280:	8b 08                	mov    (%eax),%ecx
597282:	ff 11                	call   *(%ecx)
597284:	50                   	push   %eax
597285:	8b 45 f8             	mov    -0x8(%ebp),%eax
597288:	8b 10                	mov    (%eax),%edx
59728a:	ff 52 0c             	call   *0xc(%edx)
59728d:	8b c8                	mov    %eax,%ecx
59728f:	8b d7                	mov    %edi,%edx
597291:	58                   	pop    %eax
597292:	e8 29 0c e7 ff       	call   0x407ec0
597297:	eb 47                	jmp    0x5972e0
597299:	8b 45 94             	mov    -0x6c(%ebp),%eax
59729c:	2b 45 c4             	sub    -0x3c(%ebp),%eax
59729f:	99                   	cltd
5972a0:	33 c2                	xor    %edx,%eax
5972a2:	2b c2                	sub    %edx,%eax
5972a4:	8b d0                	mov    %eax,%edx
5972a6:	8b 45 f8             	mov    -0x8(%ebp),%eax
5972a9:	8b 08                	mov    (%eax),%ecx
5972ab:	ff 11                	call   *(%ecx)
5972ad:	89 45 bc             	mov    %eax,-0x44(%ebp)
5972b0:	8b 75 9c             	mov    -0x64(%ebp),%esi
5972b3:	85 f6                	test   %esi,%esi
5972b5:	7c 29                	jl     0x5972e0
5972b7:	46                   	inc    %esi
5972b8:	33 c0                	xor    %eax,%eax
5972ba:	8a 07                	mov    (%edi),%al
5972bc:	8d 04 40             	lea    (%eax,%eax,2),%eax
5972bf:	8b 13                	mov    (%ebx),%edx
5972c1:	8b 92 a8 03 00 00    	mov    0x3a8(%edx),%edx
5972c7:	8b 4d bc             	mov    -0x44(%ebp),%ecx
5972ca:	03 d0                	add    %eax,%edx
5972cc:	66 8b 02             	mov    (%edx),%ax
5972cf:	66 89 01             	mov    %ax,(%ecx)
5972d2:	8a 42 02             	mov    0x2(%edx),%al
5972d5:	88 41 02             	mov    %al,0x2(%ecx)
5972d8:	47                   	inc    %edi
5972d9:	83 45 bc 03          	addl   $0x3,-0x44(%ebp)
5972dd:	4e                   	dec    %esi
5972de:	75 d8                	jne    0x5972b8
5972e0:	ff 4d c4             	decl   -0x3c(%ebp)
5972e3:	83 7d c4 ff          	cmpl   $0xffffffff,-0x3c(%ebp)
5972e7:	0f 85 1a ff ff ff    	jne    0x597207
5972ed:	8b 45 b4             	mov    -0x4c(%ebp),%eax
5972f0:	e8 d7 b4 e6 ff       	call   0x4027cc
5972f5:	e9 d4 03 00 00       	jmp    0x5976ce
5972fa:	8b 03                	mov    (%ebx),%eax
5972fc:	c7 40 08 05 00 00 00 	movl   $0x5,0x8(%eax)
597303:	8b 03                	mov    (%ebx),%eax
597305:	c7 40 10 03 00 00 00 	movl   $0x3,0x10(%eax)
59730c:	80 7d 14 00          	cmpb   $0x0,0x14(%ebp)
597310:	0f 85 b8 03 00 00    	jne    0x5976ce
597316:	8b 45 c0             	mov    -0x40(%ebp),%eax
597319:	e8 8e b4 e6 ff       	call   0x4027ac
59731e:	89 45 b4             	mov    %eax,-0x4c(%ebp)
597321:	83 7d d8 00          	cmpl   $0x0,-0x28(%ebp)
597325:	75 1b                	jne    0x597342
597327:	c7 85 78 ff ff ff 00 	movl   $0x7c00,-0x88(%ebp)
59732e:	7c 00 00
597331:	c7 85 7c ff ff ff e0 	movl   $0x3e0,-0x84(%ebp)
597338:	03 00 00
59733b:	c7 45 80 1f 00 00 00 	movl   $0x1f,-0x80(%ebp)
597342:	8b 85 78 ff ff ff    	mov    -0x88(%ebp),%eax
597348:	e8 33 97 05 00       	call   0x5f0a80
59734d:	89 45 ac             	mov    %eax,-0x54(%ebp)
597350:	8b 85 7c ff ff ff    	mov    -0x84(%ebp),%eax
597356:	e8 25 97 05 00       	call   0x5f0a80
59735b:	89 45 b0             	mov    %eax,-0x50(%ebp)
59735e:	8b 45 80             	mov    -0x80(%ebp),%eax
597361:	e8 1a 97 05 00       	call   0x5f0a80
597366:	89 45 a8             	mov    %eax,-0x58(%ebp)
597369:	8b 5d b0             	mov    -0x50(%ebp),%ebx
59736c:	03 5d a8             	add    -0x58(%ebp),%ebx
59736f:	b8 08 00 00 00       	mov    $0x8,%eax
597374:	2b 45 ac             	sub    -0x54(%ebp),%eax
597377:	2b d8                	sub    %eax,%ebx
597379:	b8 08 00 00 00       	mov    $0x8,%eax
59737e:	2b 45 b0             	sub    -0x50(%ebp),%eax
597381:	8b 55 a8             	mov    -0x58(%ebp),%edx
597384:	2b d0                	sub    %eax,%edx
597386:	89 55 a4             	mov    %edx,-0x5c(%ebp)
597389:	b8 08 00 00 00       	mov    $0x8,%eax
59738e:	2b 45 a8             	sub    -0x58(%ebp),%eax
597391:	89 45 a0             	mov    %eax,-0x60(%ebp)
597394:	8b 45 f8             	mov    -0x8(%ebp),%eax
597397:	8b 10                	mov    (%eax),%edx
597399:	ff 52 08             	call   *0x8(%edx)
59739c:	48                   	dec    %eax
59739d:	89 45 98             	mov    %eax,-0x68(%ebp)