502179:	83 c5 04             	add    $0x4,%ebp
50217c:	0f af e8             	imul   %eax,%ebp
50217f:	01 6c 24 24          	add    %ebp,0x24(%esp)
502183:	42                   	inc    %edx
502184:	3b f2                	cmp    %edx,%esi
502186:	7d bd                	jge    0x502145
502188:	43                   	inc    %ebx
502189:	3b 5c 24 10          	cmp    0x10(%esp),%ebx
50218d:	7e 99                	jle    0x502128
50218f:	41                   	inc    %ecx
502190:	83 44 24 2c 04       	addl   $0x4,0x2c(%esp)
502195:	3b 4c 24 08          	cmp    0x8(%esp),%ecx
502199:	0f 8e 75 ff ff ff    	jle    0x502114
50219f:	8b 4c 24 18          	mov    0x18(%esp),%ecx
5021a3:	d1 f9                	sar    $1,%ecx
5021a5:	8b c1                	mov    %ecx,%eax
5021a7:	03 44 24 1c          	add    0x1c(%esp),%eax
5021ab:	99                   	cltd
5021ac:	f7 7c 24 18          	idivl  0x18(%esp)
5021b0:	8b 14 24             	mov    (%esp),%edx
5021b3:	8b 9a 84 00 00 00    	mov    0x84(%edx),%ebx
5021b9:	8b 13                	mov    (%ebx),%edx
5021bb:	8b 74 24 04          	mov    0x4(%esp),%esi
5021bf:	88 04 32             	mov    %al,(%edx,%esi,1)
5021c2:	8b c1                	mov    %ecx,%eax
5021c4:	03 44 24 20          	add    0x20(%esp),%eax
5021c8:	99                   	cltd
5021c9:	f7 7c 24 18          	idivl  0x18(%esp)
5021cd:	8b 53 04             	mov    0x4(%ebx),%edx
5021d0:	8b 74 24 04          	mov    0x4(%esp),%esi
5021d4:	88 04 32             	mov    %al,(%edx,%esi,1)
5021d7:	8b c1                	mov    %ecx,%eax
5021d9:	03 44 24 24          	add    0x24(%esp),%eax
5021dd:	99                   	cltd
5021de:	f7 7c 24 18          	idivl  0x18(%esp)
5021e2:	8b 4b 08             	mov    0x8(%ebx),%ecx
5021e5:	8b 54 24 04          	mov    0x4(%esp),%edx
5021e9:	88 04 11             	mov    %al,(%ecx,%edx,1)
5021ec:	83 c4 30             	add    $0x30,%esp
5021ef:	5d                   	pop    %ebp
5021f0:	5f                   	pop    %edi
5021f1:	5e                   	pop    %esi
5021f2:	5b                   	pop    %ebx
5021f3:	c3                   	ret
5021f4:	53                   	push   %ebx
5021f5:	56                   	push   %esi
5021f6:	57                   	push   %edi
5021f7:	8b f8                	mov    %eax,%edi
5021f9:	8b c7                	mov    %edi,%eax
5021fb:	8b da                	mov    %edx,%ebx
5021fd:	55                   	push   %ebp
5021fe:	8b cb                	mov    %ebx,%ecx
502200:	8b 70 04             	mov    0x4(%eax),%esi
502203:	ba 01 00 00 00       	mov    $0x1,%edx
502208:	c1 e1 05             	shl    $0x5,%ecx
50220b:	ff 16                	call   *(%esi)
50220d:	8b f0                	mov    %eax,%esi
50220f:	33 c0                	xor    %eax,%eax
502211:	33 d2                	xor    %edx,%edx
502213:	33 c9                	xor    %ecx,%ecx
502215:	89 06                	mov    %eax,(%esi)
502217:	8b c7                	mov    %edi,%eax
502219:	c7 46 04 1f 00 00 00 	movl   $0x1f,0x4(%esi)
502220:	89 56 08             	mov    %edx,0x8(%esi)
502223:	8b d6                	mov    %esi,%edx
502225:	c7 46 0c 3f 00 00 00 	movl   $0x3f,0xc(%esi)
50222c:	89 4e 10             	mov    %ecx,0x10(%esi)
50222f:	bd 01 00 00 00       	mov    $0x1,%ebp
502234:	c7 46 14 1f 00 00 00 	movl   $0x1f,0x14(%esi)
50223b:	e8 84 f9 ff ff       	call   0x501bc4
502240:	53                   	push   %ebx
502241:	8b cd                	mov    %ebp,%ecx
502243:	8b d6                	mov    %esi,%edx
502245:	8b c7                	mov    %edi,%eax
502247:	e8 48 fd ff ff       	call   0x501f94
50224c:	8b e8                	mov    %eax,%ebp
50224e:	33 db                	xor    %ebx,%ebx
502250:	3b eb                	cmp    %ebx,%ebp
502252:	7e 15                	jle    0x502269
502254:	8b d3                	mov    %ebx,%edx
502256:	8b cb                	mov    %ebx,%ecx
502258:	c1 e2 05             	shl    $0x5,%edx
50225b:	8b c7                	mov    %edi,%eax
50225d:	03 d6                	add    %esi,%edx
50225f:	e8 4c fe ff ff       	call   0x5020b0
502264:	43                   	inc    %ebx
502265:	3b eb                	cmp    %ebx,%ebp
502267:	7f eb                	jg     0x502254
502269:	89 af 80 00 00 00    	mov    %ebp,0x80(%edi)
50226f:	ba 01 00 00 00       	mov    $0x1,%edx
502274:	8b 07                	mov    (%edi),%eax
502276:	c7 40 14 5f 00 00 00 	movl   $0x5f,0x14(%eax)
50227d:	89 68 18             	mov    %ebp,0x18(%eax)
502280:	8b c7                	mov    %edi,%eax
502282:	8b 08                	mov    (%eax),%ecx
502284:	ff 51 04             	call   *0x4(%ecx)
502287:	5d                   	pop    %ebp
502288:	5f                   	pop    %edi
502289:	5e                   	pop    %esi
50228a:	5b                   	pop    %ebx
50228b:	c3                   	ret
50228c:	55                   	push   %ebp
50228d:	8b ec                	mov    %esp,%ebp
50228f:	81 c4 c4 fb ff ff    	add    $0xfffffbc4,%esp
502295:	53                   	push   %ebx
502296:	56                   	push   %esi
502297:	89 4d f8             	mov    %ecx,-0x8(%ebp)
50229a:	89 55 fc             	mov    %edx,-0x4(%ebp)
50229d:	8b 90 80 00 00 00    	mov    0x80(%eax),%edx
5022a3:	89 55 f4             	mov    %edx,-0xc(%ebp)
5022a6:	8b 4d fc             	mov    -0x4(%ebp),%ecx
5022a9:	83 c1 18             	add    $0x18,%ecx
5022ac:	89 4d f0             	mov    %ecx,-0x10(%ebp)
5022af:	8b 55 fc             	mov    -0x4(%ebp),%edx
5022b2:	03 55 f0             	add    -0x10(%ebp),%edx
5022b5:	d1 fa                	sar    $1,%edx
5022b7:	89 55 e4             	mov    %edx,-0x1c(%ebp)
5022ba:	8b 4d f8             	mov    -0x8(%ebp),%ecx
5022bd:	83 c1 1c             	add    $0x1c,%ecx
5022c0:	89 4d ec             	mov    %ecx,-0x14(%ebp)
5022c3:	8b 55 f8             	mov    -0x8(%ebp),%edx
5022c6:	03 55 ec             	add    -0x14(%ebp),%edx
5022c9:	d1 fa                	sar    $1,%edx
5022cb:	89 55 e0             	mov    %edx,-0x20(%ebp)
5022ce:	8b 4d 0c             	mov    0xc(%ebp),%ecx
5022d1:	83 c1 18             	add    $0x18,%ecx
5022d4:	89 4d e8             	mov    %ecx,-0x18(%ebp)
5022d7:	33 c9                	xor    %ecx,%ecx
5022d9:	8b 55 0c             	mov    0xc(%ebp),%edx
5022dc:	03 55 e8             	add    -0x18(%ebp),%edx
5022df:	d1 fa                	sar    $1,%edx
5022e1:	89 55 dc             	mov    %edx,-0x24(%ebp)
5022e4:	8d 95 c4 fb ff ff    	lea    -0x43c(%ebp),%edx
5022ea:	c7 45 d4 ff ff ff 7f 	movl   $0x7fffffff,-0x2c(%ebp)
5022f1:	89 4d d8             	mov    %ecx,-0x28(%ebp)
5022f4:	89 55 c4             	mov    %edx,-0x3c(%ebp)
5022f7:	8b 88 84 00 00 00    	mov    0x84(%eax),%ecx
5022fd:	8b 51 08             	mov    0x8(%ecx),%edx
502300:	8b ca                	mov    %edx,%ecx
502302:	89 4d c8             	mov    %ecx,-0x38(%ebp)
502305:	8b 90 84 00 00 00    	mov    0x84(%eax),%edx
50230b:	8b 4a 04             	mov    0x4(%edx),%ecx
50230e:	8b d1                	mov    %ecx,%edx
502310:	89 55 cc             	mov    %edx,-0x34(%ebp)
502313:	8b 80 84 00 00 00    	mov    0x84(%eax),%eax
502319:	8b 08                	mov    (%eax),%ecx
50231b:	8b c1                	mov    %ecx,%eax
50231d:	89 45 d0             	mov    %eax,-0x30(%ebp)
502320:	8b 55 d8             	mov    -0x28(%ebp),%edx
502323:	3b 55 f4             	cmp    -0xc(%ebp),%edx
502326:	0f 8d 61 01 00 00    	jge    0x50248d
50232c:	8b 4d d0             	mov    -0x30(%ebp),%ecx
50232f:	33 db                	xor    %ebx,%ebx
502331:	8a 19                	mov    (%ecx),%bl
502333:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
502336:	7d 16                	jge    0x50234e
502338:	8b c3                	mov    %ebx,%eax
50233a:	2b 45 fc             	sub    -0x4(%ebp),%eax
50233d:	8b d0                	mov    %eax,%edx
50233f:	0f af d0             	imul   %eax,%edx
502342:	8b c3                	mov    %ebx,%eax
502344:	2b 45 f0             	sub    -0x10(%ebp),%eax
502347:	8b c8                	mov    %eax,%ecx
502349:	0f af c8             	imul   %eax,%ecx
50234c:	eb 38                	jmp    0x502386
50234e:	3b 5d f0             	cmp    -0x10(%ebp),%ebx
502351:	7e 16                	jle    0x502369
502353:	8b c3                	mov    %ebx,%eax
502355:	2b 45 f0             	sub    -0x10(%ebp),%eax
502358:	8b d0                	mov    %eax,%edx
50235a:	0f af d0             	imul   %eax,%edx
50235d:	8b c3                	mov    %ebx,%eax
50235f:	2b 45 fc             	sub    -0x4(%ebp),%eax
502362:	8b c8                	mov    %eax,%ecx
502364:	0f af c8             	imul   %eax,%ecx
502367:	eb 1d                	jmp    0x502386
502369:	33 d2                	xor    %edx,%edx
50236b:	3b 5d e4             	cmp    -0x1c(%ebp),%ebx
50236e:	7f 0c                	jg     0x50237c
502370:	8b c3                	mov    %ebx,%eax
502372:	2b 45 f0             	sub    -0x10(%ebp),%eax
502375:	8b c8                	mov    %eax,%ecx
502377:	0f af c8             	imul   %eax,%ecx
50237a:	eb 0a                	jmp    0x502386
50237c:	8b c3                	mov    %ebx,%eax
50237e:	2b 45 fc             	sub    -0x4(%ebp),%eax
502381:	8b c8                	mov    %eax,%ecx
502383:	0f af c8             	imul   %eax,%ecx
502386:	8b 45 cc             	mov    -0x34(%ebp),%eax
502389:	33 db                	xor    %ebx,%ebx
50238b:	8a 18                	mov    (%eax),%bl
50238d:	3b 5d f8             	cmp    -0x8(%ebp),%ebx
502390:	7d 1e                	jge    0x5023b0
502392:	8b c3                	mov    %ebx,%eax
502394:	2b 45 f8             	sub    -0x8(%ebp),%eax
502397:	2b 5d ec             	sub    -0x14(%ebp),%ebx
50239a:	8d 04 40             	lea    (%eax,%eax,2),%eax
50239d:	8b f0                	mov    %eax,%esi
50239f:	0f af f0             	imul   %eax,%esi
5023a2:	8d 04 5b             	lea    (%ebx,%ebx,2),%eax
5023a5:	03 d6                	add    %esi,%edx
5023a7:	8b d8                	mov    %eax,%ebx
5023a9:	0f af d8             	imul   %eax,%ebx
5023ac:	03 cb                	add    %ebx,%ecx
5023ae:	eb 44                	jmp    0x5023f4
5023b0:	3b 5d ec             	cmp    -0x14(%ebp),%ebx
5023b3:	7e 1e                	jle    0x5023d3
5023b5:	8b c3                	mov    %ebx,%eax
5023b7:	2b 45 ec             	sub    -0x14(%ebp),%eax
5023ba:	2b 5d f8             	sub    -0x8(%ebp),%ebx
5023bd:	8d 04 40             	lea    (%eax,%eax,2),%eax
5023c0:	8b f0                	mov    %eax,%esi
5023c2:	0f af f0             	imul   %eax,%esi
5023c5:	8d 04 5b             	lea    (%ebx,%ebx,2),%eax
5023c8:	03 d6                	add    %esi,%edx
5023ca:	8b d8                	mov    %eax,%ebx
5023cc:	0f af d8             	imul   %eax,%ebx
5023cf:	03 cb                	add    %ebx,%ecx
5023d1:	eb 21                	jmp    0x5023f4
5023d3:	3b 5d e0             	cmp    -0x20(%ebp),%ebx
5023d6:	7f 0f                	jg     0x5023e7
5023d8:	2b 5d ec             	sub    -0x14(%ebp),%ebx
5023db:	8d 04 5b             	lea    (%ebx,%ebx,2),%eax
5023de:	8b d8                	mov    %eax,%ebx
5023e0:	0f af d8             	imul   %eax,%ebx
5023e3:	03 cb                	add    %ebx,%ecx
5023e5:	eb 0d                	jmp    0x5023f4
5023e7:	2b 5d f8             	sub    -0x8(%ebp),%ebx
5023ea:	8d 04 5b             	lea    (%ebx,%ebx,2),%eax
5023ed:	8b d8                	mov    %eax,%ebx
5023ef:	0f af d8             	imul   %eax,%ebx
5023f2:	03 cb                	add    %ebx,%ecx
5023f4:	8b 45 c8             	mov    -0x38(%ebp),%eax
5023f7:	33 db                	xor    %ebx,%ebx
5023f9:	8a 18                	mov    (%eax),%bl
5023fb:	3b 5d 0c             	cmp    0xc(%ebp),%ebx
5023fe:	7d 1e                	jge    0x50241e
502400:	8b c3                	mov    %ebx,%eax
502402:	2b 45 0c             	sub    0xc(%ebp),%eax
502405:	03 c0                	add    %eax,%eax
502407:	8b f0                	mov    %eax,%esi
502409:	0f af f0             	imul   %eax,%esi
50240c:	03 d6                	add    %esi,%edx
50240e:	8b c3                	mov    %ebx,%eax
502410:	2b 45 e8             	sub    -0x18(%ebp),%eax
502413:	03 c0                	add    %eax,%eax
502415:	8b d8                	mov    %eax,%ebx
502417:	0f af d8             	imul   %eax,%ebx
50241a:	03 cb                	add    %ebx,%ecx
50241c:	eb 46                	jmp    0x502464
50241e:	3b 5d e8             	cmp    -0x18(%ebp),%ebx
502421:	7e 1e                	jle    0x502441
502423:	8b c3                	mov    %ebx,%eax
502425:	2b 45 e8             	sub    -0x18(%ebp),%eax
502428:	03 c0                	add    %eax,%eax
50242a:	8b f0                	mov    %eax,%esi
50242c:	0f af f0             	imul   %eax,%esi
50242f:	03 d6                	add    %esi,%edx
502431:	8b c3                	mov    %ebx,%eax
502433:	2b 45 0c             	sub    0xc(%ebp),%eax
502436:	03 c0                	add    %eax,%eax
502438:	8b d8                	mov    %eax,%ebx
50243a:	0f af d8             	imul   %eax,%ebx
50243d:	03 cb                	add    %ebx,%ecx
50243f:	eb 23                	jmp    0x502464
502441:	3b 5d dc             	cmp    -0x24(%ebp),%ebx
502444:	7f 10                	jg     0x502456
502446:	8b c3                	mov    %ebx,%eax
502448:	2b 45 e8             	sub    -0x18(%ebp),%eax
50244b:	03 c0                	add    %eax,%eax
50244d:	8b d8                	mov    %eax,%ebx
50244f:	0f af d8             	imul   %eax,%ebx
502452:	03 cb                	add    %ebx,%ecx
502454:	eb 0e                	jmp    0x502464
502456:	8b c3                	mov    %ebx,%eax
502458:	2b 45 0c             	sub    0xc(%ebp),%eax
50245b:	03 c0                	add    %eax,%eax
50245d:	8b d8                	mov    %eax,%ebx
50245f:	0f af d8             	imul   %eax,%ebx
502462:	03 cb                	add    %ebx,%ecx
502464:	8b 45 c4             	mov    -0x3c(%ebp),%eax
502467:	89 10                	mov    %edx,(%eax)
502469:	3b 4d d4             	cmp    -0x2c(%ebp),%ecx
50246c:	7d 03                	jge    0x502471
50246e:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
502471:	ff 45 d8             	incl   -0x28(%ebp)
502474:	83 45 c4 04          	addl   $0x4,-0x3c(%ebp)
502478:	ff 45 c8             	incl   -0x38(%ebp)
50247b:	ff 45 cc             	incl   -0x34(%ebp)
50247e:	ff 45 d0             	incl   -0x30(%ebp)
502481:	8b 55 d8             	mov    -0x28(%ebp),%edx
502484:	3b 55 f4             	cmp    -0xc(%ebp),%edx
502487:	0f 8c 9f fe ff ff    	jl     0x50232c
50248d:	33 c0                	xor    %eax,%eax
50248f:	33 c9                	xor    %ecx,%ecx
502491:	89 45 d8             	mov    %eax,-0x28(%ebp)
502494:	8d 85 c4 fb ff ff    	lea    -0x43c(%ebp),%eax
50249a:	8b 5d d8             	mov    -0x28(%ebp),%ebx
50249d:	8b 55 08             	mov    0x8(%ebp),%edx
5024a0:	3b 5d f4             	cmp    -0xc(%ebp),%ebx
5024a3:	7d 1c                	jge    0x5024c1
5024a5:	8b 18                	mov    (%eax),%ebx
5024a7:	3b 5d d4             	cmp    -0x2c(%ebp),%ebx
5024aa:	7f 07                	jg     0x5024b3
5024ac:	8a 5d d8             	mov    -0x28(%ebp),%bl
5024af:	41                   	inc    %ecx
5024b0:	88 1a                	mov    %bl,(%edx)
5024b2:	42                   	inc    %edx
5024b3:	ff 45 d8             	incl   -0x28(%ebp)
5024b6:	83 c0 04             	add    $0x4,%eax
5024b9:	8b 5d d8             	mov    -0x28(%ebp),%ebx
5024bc:	3b 5d f4             	cmp    -0xc(%ebp),%ebx
5024bf:	7c e4                	jl     0x5024a5
5024c1:	8b c1                	mov    %ecx,%eax
5024c3:	5e                   	pop    %esi
5024c4:	5b                   	pop    %ebx
5024c5:	8b e5                	mov    %ebp,%esp
5024c7:	5d                   	pop    %ebp
5024c8:	c2 08 00             	ret    $0x8
5024cb:	90                   	nop
5024cc:	55                   	push   %ebp
5024cd:	8b ec                	mov    %esp,%ebp
5024cf:	81 c4 c4 fd ff ff    	add    $0xfffffdc4,%esp
5024d5:	53                   	push   %ebx
5024d6:	56                   	push   %esi
5024d7:	57                   	push   %edi
5024d8:	89 4d f4             	mov    %ecx,-0xc(%ebp)
5024db:	89 55 f8             	mov    %edx,-0x8(%ebp)
5024de:	89 45 fc             	mov    %eax,-0x4(%ebp)
5024e1:	c7 45 e8 7f 00 00 00 	movl   $0x7f,-0x18(%ebp)
5024e8:	8d 8d c4 fd ff ff    	lea    -0x23c(%ebp),%ecx
5024ee:	c7 01 ff ff ff 7f    	movl   $0x7fffffff,(%ecx)
5024f4:	83 c1 04             	add    $0x4,%ecx
5024f7:	ff 4d e8             	decl   -0x18(%ebp)
5024fa:	83 7d e8 00          	cmpl   $0x0,-0x18(%ebp)
5024fe:	7d ee                	jge    0x5024ee
502500:	33 c0                	xor    %eax,%eax
502502:	89 45 e8             	mov    %eax,-0x18(%ebp)
502505:	8b 55 0c             	mov    0xc(%ebp),%edx
502508:	8b c2                	mov    %edx,%eax
50250a:	89 45 c4             	mov    %eax,-0x3c(%ebp)
50250d:	8b 55 e8             	mov    -0x18(%ebp),%edx
502510:	3b 55 10             	cmp    0x10(%ebp),%edx
502513:	0f 8d 22 01 00 00    	jge    0x50263b
502519:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
50251c:	33 c0                	xor    %eax,%eax
50251e:	8a 01                	mov    (%ecx),%al
502520:	89 45 e4             	mov    %eax,-0x1c(%ebp)
502523:	8b 55 fc             	mov    -0x4(%ebp),%edx
502526:	8b 4d e4             	mov    -0x1c(%ebp),%ecx