506149:	4f                   	dec    %edi
50614a:	33 c0                	xor    %eax,%eax
50614c:	8a 06                	mov    (%esi),%al
50614e:	03 e8                	add    %eax,%ebp
506150:	46                   	inc    %esi
506151:	85 ff                	test   %edi,%edi
506153:	75 21                	jne    0x506176
506155:	8b 74 24 0c          	mov    0xc(%esp),%esi
506159:	8b c3                	mov    %ebx,%eax
50615b:	ff 56 0c             	call   *0xc(%esi)
50615e:	85 c0                	test   %eax,%eax
506160:	75 07                	jne    0x506169
506162:	33 c0                	xor    %eax,%eax
506164:	e9 cc 02 00 00       	jmp    0x506435
506169:	8b 54 24 0c          	mov    0xc(%esp),%edx
50616d:	8b 44 24 0c          	mov    0xc(%esp),%eax
506171:	8b 78 04             	mov    0x4(%eax),%edi
506174:	8b 32                	mov    (%edx),%esi
506176:	4f                   	dec    %edi
506177:	33 c0                	xor    %eax,%eax
506179:	8a 06                	mov    (%esi),%al
50617b:	89 83 d0 00 00 00    	mov    %eax,0xd0(%ebx)
506181:	46                   	inc    %esi
506182:	85 ff                	test   %edi,%edi
506184:	75 21                	jne    0x5061a7
506186:	8b 74 24 0c          	mov    0xc(%esp),%esi
50618a:	8b c3                	mov    %ebx,%eax
50618c:	ff 56 0c             	call   *0xc(%esi)
50618f:	85 c0                	test   %eax,%eax
506191:	75 07                	jne    0x50619a
506193:	33 c0                	xor    %eax,%eax
506195:	e9 9b 02 00 00       	jmp    0x506435
50619a:	8b 54 24 0c          	mov    0xc(%esp),%edx
50619e:	8b 44 24 0c          	mov    0xc(%esp),%eax
5061a2:	8b 78 04             	mov    0x4(%eax),%edi
5061a5:	8b 32                	mov    (%edx),%esi
5061a7:	33 c0                	xor    %eax,%eax
5061a9:	4f                   	dec    %edi
5061aa:	8a 06                	mov    (%esi),%al
5061ac:	46                   	inc    %esi
5061ad:	c1 e0 08             	shl    $0x8,%eax
5061b0:	85 ff                	test   %edi,%edi
5061b2:	89 43 1c             	mov    %eax,0x1c(%ebx)
5061b5:	75 21                	jne    0x5061d8
5061b7:	8b 74 24 0c          	mov    0xc(%esp),%esi
5061bb:	8b c3                	mov    %ebx,%eax
5061bd:	ff 56 0c             	call   *0xc(%esi)
5061c0:	85 c0                	test   %eax,%eax
5061c2:	75 07                	jne    0x5061cb
5061c4:	33 c0                	xor    %eax,%eax
5061c6:	e9 6a 02 00 00       	jmp    0x506435
5061cb:	8b 54 24 0c          	mov    0xc(%esp),%edx
5061cf:	8b 44 24 0c          	mov    0xc(%esp),%eax
5061d3:	8b 78 04             	mov    0x4(%eax),%edi
5061d6:	8b 32                	mov    (%edx),%esi
5061d8:	4f                   	dec    %edi
5061d9:	33 c0                	xor    %eax,%eax
5061db:	8a 06                	mov    (%esi),%al
5061dd:	01 43 1c             	add    %eax,0x1c(%ebx)
5061e0:	46                   	inc    %esi
5061e1:	85 ff                	test   %edi,%edi
5061e3:	75 21                	jne    0x506206
5061e5:	8b 74 24 0c          	mov    0xc(%esp),%esi
5061e9:	8b c3                	mov    %ebx,%eax
5061eb:	ff 56 0c             	call   *0xc(%esi)
5061ee:	85 c0                	test   %eax,%eax
5061f0:	75 07                	jne    0x5061f9
5061f2:	33 c0                	xor    %eax,%eax
5061f4:	e9 3c 02 00 00       	jmp    0x506435
5061f9:	8b 54 24 0c          	mov    0xc(%esp),%edx
5061fd:	8b 44 24 0c          	mov    0xc(%esp),%eax
506201:	8b 78 04             	mov    0x4(%eax),%edi
506204:	8b 32                	mov    (%edx),%esi
506206:	33 c0                	xor    %eax,%eax
506208:	4f                   	dec    %edi
506209:	8a 06                	mov    (%esi),%al
50620b:	46                   	inc    %esi
50620c:	c1 e0 08             	shl    $0x8,%eax
50620f:	85 ff                	test   %edi,%edi
506211:	89 43 18             	mov    %eax,0x18(%ebx)
506214:	75 21                	jne    0x506237
506216:	8b 74 24 0c          	mov    0xc(%esp),%esi
50621a:	8b c3                	mov    %ebx,%eax
50621c:	ff 56 0c             	call   *0xc(%esi)
50621f:	85 c0                	test   %eax,%eax
506221:	75 07                	jne    0x50622a
506223:	33 c0                	xor    %eax,%eax
506225:	e9 0b 02 00 00       	jmp    0x506435
50622a:	8b 54 24 0c          	mov    0xc(%esp),%edx
50622e:	8b 44 24 0c          	mov    0xc(%esp),%eax
506232:	8b 78 04             	mov    0x4(%eax),%edi
506235:	8b 32                	mov    (%edx),%esi
506237:	4f                   	dec    %edi
506238:	33 c0                	xor    %eax,%eax
50623a:	8a 06                	mov    (%esi),%al
50623c:	01 43 18             	add    %eax,0x18(%ebx)
50623f:	46                   	inc    %esi
506240:	85 ff                	test   %edi,%edi
506242:	75 21                	jne    0x506265
506244:	8b 74 24 0c          	mov    0xc(%esp),%esi
506248:	8b c3                	mov    %ebx,%eax
50624a:	ff 56 0c             	call   *0xc(%esi)
50624d:	85 c0                	test   %eax,%eax
50624f:	75 07                	jne    0x506258
506251:	33 c0                	xor    %eax,%eax
506253:	e9 dd 01 00 00       	jmp    0x506435
506258:	8b 54 24 0c          	mov    0xc(%esp),%edx
50625c:	8b 44 24 0c          	mov    0xc(%esp),%eax
506260:	8b 78 04             	mov    0x4(%eax),%edi
506263:	8b 32                	mov    (%edx),%esi
506265:	33 c0                	xor    %eax,%eax
506267:	4f                   	dec    %edi
506268:	8a 06                	mov    (%esi),%al
50626a:	46                   	inc    %esi
50626b:	83 ed 08             	sub    $0x8,%ebp
50626e:	89 43 20             	mov    %eax,0x20(%ebx)
506271:	8b 03                	mov    (%ebx),%eax
506273:	83 c0 18             	add    $0x18,%eax
506276:	8b 93 98 01 00 00    	mov    0x198(%ebx),%edx
50627c:	89 10                	mov    %edx,(%eax)
50627e:	8b 4b 18             	mov    0x18(%ebx),%ecx
506281:	89 48 04             	mov    %ecx,0x4(%eax)
506284:	8b 53 1c             	mov    0x1c(%ebx),%edx
506287:	89 50 08             	mov    %edx,0x8(%eax)
50628a:	8b 4b 20             	mov    0x20(%ebx),%ecx
50628d:	89 48 0c             	mov    %ecx,0xc(%eax)
506290:	8b 03                	mov    (%ebx),%eax
506292:	c7 40 14 63 00 00 00 	movl   $0x63,0x14(%eax)
506299:	ba 01 00 00 00       	mov    $0x1,%edx
50629e:	8b c3                	mov    %ebx,%eax
5062a0:	8b 08                	mov    (%eax),%ecx
5062a2:	ff 51 04             	call   *0x4(%ecx)
5062a5:	8b 83 b0 01 00 00    	mov    0x1b0(%ebx),%eax
5062ab:	83 78 54 00          	cmpl   $0x0,0x54(%eax)
5062af:	74 0f                	je     0x5062c0
5062b1:	8b 13                	mov    (%ebx),%edx
5062b3:	8b c3                	mov    %ebx,%eax
5062b5:	c7 42 14 39 00 00 00 	movl   $0x39,0x14(%edx)
5062bc:	8b 10                	mov    (%eax),%edx
5062be:	ff 12                	call   *(%edx)
5062c0:	83 7b 1c 00          	cmpl   $0x0,0x1c(%ebx)
5062c4:	76 0c                	jbe    0x5062d2
5062c6:	83 7b 18 00          	cmpl   $0x0,0x18(%ebx)
5062ca:	76 06                	jbe    0x5062d2
5062cc:	83 7b 20 00          	cmpl   $0x0,0x20(%ebx)
5062d0:	7f 0f                	jg     0x5062e1
5062d2:	8b 0b                	mov    (%ebx),%ecx
5062d4:	8b c3                	mov    %ebx,%eax
5062d6:	c7 41 14 1f 00 00 00 	movl   $0x1f,0x14(%ecx)
5062dd:	8b 10                	mov    (%eax),%edx
5062df:	ff 12                	call   *(%edx)
5062e1:	8b 4b 20             	mov    0x20(%ebx),%ecx
5062e4:	8d 0c 49             	lea    (%ecx,%ecx,2),%ecx
5062e7:	3b e9                	cmp    %ecx,%ebp
5062e9:	74 0f                	je     0x5062fa
5062eb:	8b 03                	mov    (%ebx),%eax
5062ed:	c7 40 14 09 00 00 00 	movl   $0x9,0x14(%eax)
5062f4:	8b c3                	mov    %ebx,%eax
5062f6:	8b 10                	mov    (%eax),%edx
5062f8:	ff 12                	call   *(%edx)
5062fa:	83 bb d4 00 00 00 00 	cmpl   $0x0,0xd4(%ebx)
506301:	75 21                	jne    0x506324
506303:	8b 4b 20             	mov    0x20(%ebx),%ecx
506306:	ba 01 00 00 00       	mov    $0x1,%edx
50630b:	8b c1                	mov    %ecx,%eax
50630d:	8d 0c 88             	lea    (%eax,%ecx,4),%ecx
506310:	8d 0c 88             	lea    (%eax,%ecx,4),%ecx
506313:	8b c3                	mov    %ebx,%eax
506315:	c1 e1 02             	shl    $0x2,%ecx
506318:	8b 68 04             	mov    0x4(%eax),%ebp
50631b:	ff 55 00             	call   *0x0(%ebp)
50631e:	89 83 d4 00 00 00    	mov    %eax,0xd4(%ebx)
506324:	33 c0                	xor    %eax,%eax
506326:	89 44 24 08          	mov    %eax,0x8(%esp)
50632a:	8b ab d4 00 00 00    	mov    0xd4(%ebx),%ebp
506330:	e9 d4 00 00 00       	jmp    0x506409
506335:	8b 44 24 08          	mov    0x8(%esp),%eax
506339:	85 ff                	test   %edi,%edi
50633b:	89 45 04             	mov    %eax,0x4(%ebp)
50633e:	75 21                	jne    0x506361
506340:	8b 74 24 0c          	mov    0xc(%esp),%esi
506344:	8b c3                	mov    %ebx,%eax
506346:	ff 56 0c             	call   *0xc(%esi)
506349:	85 c0                	test   %eax,%eax
50634b:	75 07                	jne    0x506354
50634d:	33 c0                	xor    %eax,%eax
50634f:	e9 e1 00 00 00       	jmp    0x506435
506354:	8b 54 24 0c          	mov    0xc(%esp),%edx
506358:	8b 44 24 0c          	mov    0xc(%esp),%eax
50635c:	8b 78 04             	mov    0x4(%eax),%edi
50635f:	8b 32                	mov    (%edx),%esi
506361:	4f                   	dec    %edi
506362:	33 c0                	xor    %eax,%eax
506364:	8a 06                	mov    (%esi),%al
506366:	89 45 00             	mov    %eax,0x0(%ebp)
506369:	46                   	inc    %esi
50636a:	85 ff                	test   %edi,%edi
50636c:	75 21                	jne    0x50638f
50636e:	8b 74 24 0c          	mov    0xc(%esp),%esi
506372:	8b c3                	mov    %ebx,%eax
506374:	ff 56 0c             	call   *0xc(%esi)
506377:	85 c0                	test   %eax,%eax
506379:	75 07                	jne    0x506382
50637b:	33 c0                	xor    %eax,%eax
50637d:	e9 b3 00 00 00       	jmp    0x506435
506382:	8b 54 24 0c          	mov    0xc(%esp),%edx
506386:	8b 44 24 0c          	mov    0xc(%esp),%eax
50638a:	8b 78 04             	mov    0x4(%eax),%edi
50638d:	8b 32                	mov    (%edx),%esi
50638f:	33 c0                	xor    %eax,%eax
506391:	4f                   	dec    %edi
506392:	8a 06                	mov    (%esi),%al
506394:	46                   	inc    %esi
506395:	8b d0                	mov    %eax,%edx
506397:	83 e0 0f             	and    $0xf,%eax
50639a:	c1 fa 04             	sar    $0x4,%edx
50639d:	83 e2 0f             	and    $0xf,%edx
5063a0:	85 ff                	test   %edi,%edi
5063a2:	89 55 08             	mov    %edx,0x8(%ebp)
5063a5:	89 45 0c             	mov    %eax,0xc(%ebp)
5063a8:	75 1e                	jne    0x5063c8
5063aa:	8b 74 24 0c          	mov    0xc(%esp),%esi
5063ae:	8b c3                	mov    %ebx,%eax
5063b0:	ff 56 0c             	call   *0xc(%esi)
5063b3:	85 c0                	test   %eax,%eax
5063b5:	75 04                	jne    0x5063bb
5063b7:	33 c0                	xor    %eax,%eax
5063b9:	eb 7a                	jmp    0x506435
5063bb:	8b 54 24 0c          	mov    0xc(%esp),%edx
5063bf:	8b 44 24 0c          	mov    0xc(%esp),%eax
5063c3:	8b 78 04             	mov    0x4(%eax),%edi
5063c6:	8b 32                	mov    (%edx),%esi
5063c8:	33 c0                	xor    %eax,%eax
5063ca:	4f                   	dec    %edi
5063cb:	8a 06                	mov    (%esi),%al
5063cd:	46                   	inc    %esi
5063ce:	89 45 10             	mov    %eax,0x10(%ebp)
5063d1:	8b 03                	mov    (%ebx),%eax
5063d3:	83 c0 18             	add    $0x18,%eax
5063d6:	8b 55 00             	mov    0x0(%ebp),%edx
5063d9:	89 10                	mov    %edx,(%eax)
5063db:	8b 4d 08             	mov    0x8(%ebp),%ecx
5063de:	89 48 04             	mov    %ecx,0x4(%eax)
5063e1:	8b 55 0c             	mov    0xc(%ebp),%edx
5063e4:	89 50 08             	mov    %edx,0x8(%eax)
5063e7:	8b 4d 10             	mov    0x10(%ebp),%ecx
5063ea:	89 48 0c             	mov    %ecx,0xc(%eax)
5063ed:	8b 03                	mov    (%ebx),%eax
5063ef:	c7 40 14 64 00 00 00 	movl   $0x64,0x14(%eax)
5063f6:	ba 01 00 00 00       	mov    $0x1,%edx
5063fb:	8b c3                	mov    %ebx,%eax
5063fd:	8b 08                	mov    (%eax),%ecx
5063ff:	ff 51 04             	call   *0x4(%ecx)
506402:	ff 44 24 08          	incl   0x8(%esp)
506406:	83 c5 54             	add    $0x54,%ebp
506409:	8b 44 24 08          	mov    0x8(%esp),%eax
50640d:	3b 43 20             	cmp    0x20(%ebx),%eax
506410:	0f 8c 1f ff ff ff    	jl     0x506335
506416:	8b 93 b0 01 00 00    	mov    0x1b0(%ebx),%edx
50641c:	c7 42 54 01 00 00 00 	movl   $0x1,0x54(%edx)
506423:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
506427:	89 31                	mov    %esi,(%ecx)
506429:	8b 44 24 0c          	mov    0xc(%esp),%eax
50642d:	89 78 04             	mov    %edi,0x4(%eax)
506430:	b8 01 00 00 00       	mov    $0x1,%eax
506435:	83 c4 10             	add    $0x10,%esp
506438:	5d                   	pop    %ebp
506439:	5f                   	pop    %edi
50643a:	5e                   	pop    %esi
50643b:	5b                   	pop    %ebx
50643c:	c3                   	ret
50643d:	90                   	nop
50643e:	90                   	nop
50643f:	90                   	nop
506440:	53                   	push   %ebx
506441:	56                   	push   %esi
506442:	57                   	push   %edi
506443:	55                   	push   %ebp
506444:	8b d8                	mov    %eax,%ebx
506446:	83 c4 e8             	add    $0xffffffe8,%esp
506449:	8b 43 14             	mov    0x14(%ebx),%eax
50644c:	89 44 24 10          	mov    %eax,0x10(%esp)
506450:	8b 44 24 10          	mov    0x10(%esp),%eax
506454:	8b 54 24 10          	mov    0x10(%esp),%edx
506458:	8b 68 04             	mov    0x4(%eax),%ebp
50645b:	8b 83 b0 01 00 00    	mov    0x1b0(%ebx),%eax
506461:	8b 3a                	mov    (%edx),%edi
506463:	83 78 54 00          	cmpl   $0x0,0x54(%eax)
506467:	75 0f                	jne    0x506478
506469:	8b 13                	mov    (%ebx),%edx
50646b:	8b c3                	mov    %ebx,%eax
50646d:	c7 42 14 3d 00 00 00 	movl   $0x3d,0x14(%edx)
506474:	8b 10                	mov    (%eax),%edx
506476:	ff 12                	call   *(%edx)
506478:	85 ed                	test   %ebp,%ebp
50647a:	75 21                	jne    0x50649d
50647c:	8b 74 24 10          	mov    0x10(%esp),%esi
506480:	8b c3                	mov    %ebx,%eax
506482:	ff 56 0c             	call   *0xc(%esi)
506485:	85 c0                	test   %eax,%eax
506487:	75 07                	jne    0x506490
506489:	33 c0                	xor    %eax,%eax
50648b:	e9 e8 02 00 00       	jmp    0x506778
506490:	8b 54 24 10          	mov    0x10(%esp),%edx
506494:	8b 44 24 10          	mov    0x10(%esp),%eax
506498:	8b 68 04             	mov    0x4(%eax),%ebp
50649b:	8b 3a                	mov    (%edx),%edi
50649d:	4d                   	dec    %ebp
50649e:	0f b6 37             	movzbl (%edi),%esi
5064a1:	c1 e6 08             	shl    $0x8,%esi
5064a4:	47                   	inc    %edi
5064a5:	85 ed                	test   %ebp,%ebp
5064a7:	75 21                	jne    0x5064ca
5064a9:	8b 7c 24 10          	mov    0x10(%esp),%edi
5064ad:	8b c3                	mov    %ebx,%eax
5064af:	ff 57 0c             	call   *0xc(%edi)
5064b2:	85 c0                	test   %eax,%eax
5064b4:	75 07                	jne    0x5064bd
5064b6:	33 c0                	xor    %eax,%eax
5064b8:	e9 bb 02 00 00       	jmp    0x506778
5064bd:	8b 54 24 10          	mov    0x10(%esp),%edx
5064c1:	8b 44 24 10          	mov    0x10(%esp),%eax
5064c5:	8b 68 04             	mov    0x4(%eax),%ebp
5064c8:	8b 3a                	mov    (%edx),%edi
5064ca:	4d                   	dec    %ebp
5064cb:	33 c0                	xor    %eax,%eax
5064cd:	8a 07                	mov    (%edi),%al
5064cf:	03 f0                	add    %eax,%esi
5064d1:	47                   	inc    %edi
5064d2:	85 ed                	test   %ebp,%ebp
5064d4:	75 21                	jne    0x5064f7
5064d6:	8b 7c 24 10          	mov    0x10(%esp),%edi
5064da:	8b c3                	mov    %ebx,%eax
5064dc:	ff 57 0c             	call   *0xc(%edi)
5064df:	85 c0                	test   %eax,%eax
5064e1:	75 07                	jne    0x5064ea
5064e3:	33 c0                	xor    %eax,%eax
5064e5:	e9 8e 02 00 00       	jmp    0x506778
5064ea:	8b 54 24 10          	mov    0x10(%esp),%edx
5064ee:	8b 44 24 10          	mov    0x10(%esp),%eax
5064f2:	8b 68 04             	mov    0x4(%eax),%ebp
5064f5:	8b 3a                	mov    (%edx),%edi
5064f7:	4d                   	dec    %ebp
5064f8:	33 c0                	xor    %eax,%eax
5064fa:	8a 07                	mov    (%edi),%al
5064fc:	89 44 24 04          	mov    %eax,0x4(%esp)
506500:	47                   	inc    %edi
506501:	8b 54 24 04          	mov    0x4(%esp),%edx
506505:	03 d2                	add    %edx,%edx
506507:	83 c2 06             	add    $0x6,%edx