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)
599275:	8b 55 d8             	mov    -0x28(%ebp),%edx
599278:	8b 45 f8             	mov    -0x8(%ebp),%eax
59927b:	8b 08                	mov    (%eax),%ecx
59927d:	ff 11                	call   *(%ecx)
59927f:	89 45 c0             	mov    %eax,-0x40(%ebp)
599282:	8b 45 c8             	mov    -0x38(%ebp),%eax
599285:	89 45 c4             	mov    %eax,-0x3c(%ebp)
599288:	8b 45 f8             	mov    -0x8(%ebp),%eax
59928b:	8b 10                	mov    (%eax),%edx
59928d:	ff 52 08             	call   *0x8(%edx)
599290:	48                   	dec    %eax
599291:	2b 45 d8             	sub    -0x28(%ebp),%eax
599294:	f7 6d d4             	imull  -0x2c(%ebp)
599297:	01 45 c4             	add    %eax,-0x3c(%ebp)
59929a:	8b 5d a0             	mov    -0x60(%ebp),%ebx
59929d:	85 db                	test   %ebx,%ebx
59929f:	7c 77                	jl     0x599318
5992a1:	43                   	inc    %ebx
5992a2:	33 ff                	xor    %edi,%edi
5992a4:	8b d7                	mov    %edi,%edx
5992a6:	8b 45 b0             	mov    -0x50(%ebp),%eax
5992a9:	e8 52 68 01 00       	call   0x5afb00
5992ae:	85 c0                	test   %eax,%eax
5992b0:	74 11                	je     0x5992c3
5992b2:	6a 00                	push   $0x0
5992b4:	8b 45 0c             	mov    0xc(%ebp),%eax
5992b7:	8b 00                	mov    (%eax),%eax
5992b9:	8b 4d d8             	mov    -0x28(%ebp),%ecx
5992bc:	8b d7                	mov    %edi,%edx
5992be:	e8 95 99 05 00       	call   0x5f2c58
5992c3:	8b d7                	mov    %edi,%edx
5992c5:	8b 45 b0             	mov    -0x50(%ebp),%eax
5992c8:	e8 33 68 01 00       	call   0x5afb00
5992cd:	85 c0                	test   %eax,%eax
5992cf:	75 24                	jne    0x5992f5
5992d1:	8b 45 c4             	mov    -0x3c(%ebp),%eax
5992d4:	0f b6 00             	movzbl (%eax),%eax
5992d7:	8d 04 40             	lea    (%eax,%eax,2),%eax
5992da:	8b 16                	mov    (%esi),%edx
5992dc:	8b 92 a8 03 00 00    	mov    0x3a8(%edx),%edx
5992e2:	8b 4d c0             	mov    -0x40(%ebp),%ecx
5992e5:	03 d0                	add    %eax,%edx
5992e7:	66 8b 02             	mov    (%edx),%ax
5992ea:	66 89 01             	mov    %ax,(%ecx)
5992ed:	8a 42 02             	mov    0x2(%edx),%al
5992f0:	88 41 02             	mov    %al,0x2(%ecx)
5992f3:	eb 18                	jmp    0x59930d
5992f5:	8b 45 c0             	mov    -0x40(%ebp),%eax
5992f8:	8b 16                	mov    (%esi),%edx
5992fa:	66 8b 8a 08 01 00 00 	mov    0x108(%edx),%cx
599301:	66 89 08             	mov    %cx,(%eax)
599304:	8a 8a 0a 01 00 00    	mov    0x10a(%edx),%cl
59930a:	88 48 02             	mov    %cl,0x2(%eax)
59930d:	ff 45 c4             	incl   -0x3c(%ebp)
599310:	83 45 c0 03          	addl   $0x3,-0x40(%ebp)
599314:	47                   	inc    %edi
599315:	4b                   	dec    %ebx
599316:	75 8c                	jne    0x5992a4
599318:	8b 45 a8             	mov    -0x58(%ebp),%eax
59931b:	01 45 b0             	add    %eax,-0x50(%ebp)
59931e:	ff 4d d8             	decl   -0x28(%ebp)
599321:	83 7d d8 ff          	cmpl   $0xffffffff,-0x28(%ebp)
599325:	0f 85 4a ff ff ff    	jne    0x599275
59932b:	e9 a6 00 00 00       	jmp    0x5993d6
599330:	8b 45 9c             	mov    -0x64(%ebp),%eax
599333:	83 f8 00             	cmp    $0x0,%eax
599336:	0f 8c 9a 00 00 00    	jl     0x5993d6
59933c:	89 45 d8             	mov    %eax,-0x28(%ebp)
59933f:	8b 55 d8             	mov    -0x28(%ebp),%edx
599342:	8b 45 f8             	mov    -0x8(%ebp),%eax
599345:	8b 08                	mov    (%eax),%ecx
599347:	ff 11                	call   *(%ecx)
599349:	89 45 c0             	mov    %eax,-0x40(%ebp)
59934c:	8b 45 c8             	mov    -0x38(%ebp),%eax
59934f:	89 45 c4             	mov    %eax,-0x3c(%ebp)
599352:	8b 45 f8             	mov    -0x8(%ebp),%eax
599355:	8b 10                	mov    (%eax),%edx
599357:	ff 52 08             	call   *0x8(%edx)
59935a:	48                   	dec    %eax
59935b:	2b 45 d8             	sub    -0x28(%ebp),%eax
59935e:	f7 6d d4             	imull  -0x2c(%ebp)
599361:	01 45 c4             	add    %eax,-0x3c(%ebp)
599364:	8b 5d a0             	mov    -0x60(%ebp),%ebx
599367:	85 db                	test   %ebx,%ebx
599369:	7c 58                	jl     0x5993c3
59936b:	43                   	inc    %ebx
59936c:	33 ff                	xor    %edi,%edi
59936e:	8b d7                	mov    %edi,%edx
599370:	8b 45 b0             	mov    -0x50(%ebp),%eax
599373:	e8 88 67 01 00       	call   0x5afb00
599378:	85 c0                	test   %eax,%eax
59937a:	75 24                	jne    0x5993a0
59937c:	8b 45 c4             	mov    -0x3c(%ebp),%eax
59937f:	0f b6 00             	movzbl (%eax),%eax
599382:	8d 04 40             	lea    (%eax,%eax,2),%eax
599385:	8b 16                	mov    (%esi),%edx
599387:	8b 92 a8 03 00 00    	mov    0x3a8(%edx),%edx
59938d:	8b 4d c0             	mov    -0x40(%ebp),%ecx
599390:	03 d0                	add    %eax,%edx
599392:	66 8b 02             	mov    (%edx),%ax
599395:	66 89 01             	mov    %ax,(%ecx)
599398:	8a 42 02             	mov    0x2(%edx),%al
59939b:	88 41 02             	mov    %al,0x2(%ecx)
59939e:	eb 18                	jmp    0x5993b8
5993a0:	8b 45 c0             	mov    -0x40(%ebp),%eax
5993a3:	8b 16                	mov    (%esi),%edx
5993a5:	66 8b 8a 08 01 00 00 	mov    0x108(%edx),%cx
5993ac:	66 89 08             	mov    %cx,(%eax)
5993af:	8a 8a 0a 01 00 00    	mov    0x10a(%edx),%cl
5993b5:	88 48 02             	mov    %cl,0x2(%eax)
5993b8:	ff 45 c4             	incl   -0x3c(%ebp)
5993bb:	83 45 c0 03          	addl   $0x3,-0x40(%ebp)
5993bf:	47                   	inc    %edi
5993c0:	4b                   	dec    %ebx
5993c1:	75 ab                	jne    0x59936e
5993c3:	8b 45 a8             	mov    -0x58(%ebp),%eax
5993c6:	01 45 b0             	add    %eax,-0x50(%ebp)
5993c9:	ff 4d d8             	decl   -0x28(%ebp)
5993cc:	83 7d d8 ff          	cmpl   $0xffffffff,-0x28(%ebp)
5993d0:	0f 85 69 ff ff ff    	jne    0x59933f
5993d6:	8b 45 c8             	mov    -0x38(%ebp),%eax
5993d9:	e8 ee 93 e6 ff       	call   0x4027cc
5993de:	e9 da 00 00 00       	jmp    0x5994bd
5993e3:	8b 45 f8             	mov    -0x8(%ebp),%eax
5993e6:	8b 10                	mov    (%eax),%edx
5993e8:	ff 52 08             	call   *0x8(%edx)
5993eb:	48                   	dec    %eax
5993ec:	83 f8 00             	cmp    $0x0,%eax
5993ef:	0f 8c c8 00 00 00    	jl     0x5994bd
5993f5:	89 45 d8             	mov    %eax,-0x28(%ebp)
5993f8:	8b 55 d8             	mov    -0x28(%ebp),%edx
5993fb:	8b 45 f8             	mov    -0x8(%ebp),%eax
5993fe:	8b 08                	mov    (%eax),%ecx
599400:	ff 11                	call   *(%ecx)
599402:	8b d0                	mov    %eax,%edx
599404:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
599407:	8b 45 fc             	mov    -0x4(%ebp),%eax
59940a:	8b 18                	mov    (%eax),%ebx
59940c:	ff 53 08             	call   *0x8(%ebx)
59940f:	ff 4d d8             	decl   -0x28(%ebp)
599412:	83 7d d8 ff          	cmpl   $0xffffffff,-0x28(%ebp)
599416:	75 e0                	jne    0x5993f8
599418:	e9 a0 00 00 00       	jmp    0x5994bd
59941d:	8b 45 f8             	mov    -0x8(%ebp),%eax
599420:	8b 10                	mov    (%eax),%edx
599422:	ff 52 0c             	call   *0xc(%edx)
599425:	c1 e0 02             	shl    $0x2,%eax
599428:	e8 7f 93 e6 ff       	call   0x4027ac
59942d:	89 45 98             	mov    %eax,-0x68(%ebp)
599430:	8b 45 f8             	mov    -0x8(%ebp),%eax
599433:	8b 10                	mov    (%eax),%edx
599435:	ff 52 08             	call   *0x8(%edx)
599438:	48                   	dec    %eax
599439:	83 f8 00             	cmp    $0x0,%eax
59943c:	7c 77                	jl     0x5994b5
59943e:	89 45 d8             	mov    %eax,-0x28(%ebp)
599441:	8b 45 f8             	mov    -0x8(%ebp),%eax
599444:	8b 10                	mov    (%eax),%edx
599446:	ff 52 0c             	call   *0xc(%edx)
599449:	8b c8                	mov    %eax,%ecx
59944b:	c1 e1 02             	shl    $0x2,%ecx
59944e:	8b 55 98             	mov    -0x68(%ebp),%edx
599451:	8b 45 fc             	mov    -0x4(%ebp),%eax
599454:	8b 18                	mov    (%eax),%ebx
599456:	ff 53 08             	call   *0x8(%ebx)
599459:	8b 55 d8             	mov    -0x28(%ebp),%edx
59945c:	8b 45 f8             	mov    -0x8(%ebp),%eax
59945f:	8b 08                	mov    (%eax),%ecx
599461:	ff 11                	call   *(%ecx)
599463:	8b f8                	mov    %eax,%edi
599465:	8b 45 0c             	mov    0xc(%ebp),%eax
599468:	8b 00                	mov    (%eax),%eax
59946a:	8b 55 d8             	mov    -0x28(%ebp),%edx
59946d:	e8 a2 b2 05 00       	call   0x5f4714
599472:	89 45 b0             	mov    %eax,-0x50(%ebp)