40820a:	55                   	push   %ebp
40820b:	8b ec                	mov    %esp,%ebp
40820d:	8a 4d 08             	mov    0x8(%ebp),%cl
408210:	8d 41 e0             	lea    -0x20(%ecx),%eax
408213:	3c 5a                	cmp    $0x5a,%al
408215:	77 12                	ja     0x408229
408217:	0f be c1             	movsbl %cl,%eax
40821a:	83 e8 20             	sub    $0x20,%eax
40821d:	83 e0 7f             	and    $0x7f,%eax
408220:	8a 04 45 b9 a0 41 00 	mov    0x41a0b9(,%eax,2),%al
408227:	eb 02                	jmp    0x40822b
408229:	32 c0                	xor    %al,%al
40822b:	0f b6 c8             	movzbl %al,%ecx
40822e:	0f b6 45 0c          	movzbl 0xc(%ebp),%eax
408232:	8d 04 c8             	lea    (%eax,%ecx,8),%eax
408235:	83 e0 7f             	and    $0x7f,%eax
408238:	8a 04 45 b8 a0 41 00 	mov    0x41a0b8(,%eax,2),%al
40823f:	5d                   	pop    %ebp
408240:	c2 08 00             	ret    $0x8
408243:	8b ff                	mov    %edi,%edi
408245:	55                   	push   %ebp
408246:	8b ec                	mov    %esp,%ebp
408248:	8b 45 0c             	mov    0xc(%ebp),%eax
40824b:	8b 55 08             	mov    0x8(%ebp),%edx
40824e:	53                   	push   %ebx
40824f:	57                   	push   %edi
408250:	8b 08                	mov    (%eax),%ecx
408252:	8a 1a                	mov    (%edx),%bl
408254:	0f b6 c3             	movzbl %bl,%eax
408257:	8b b9 94 00 00 00    	mov    0x94(%ecx),%edi
40825d:	80 3c 38 65          	cmpb   $0x65,(%eax,%edi,1)
408261:	74 10                	je     0x408273
408263:	56                   	push   %esi
408264:	8b 31                	mov    (%ecx),%esi
408266:	42                   	inc    %edx
408267:	8a 1a                	mov    (%edx),%bl
408269:	0f b6 c3             	movzbl %bl,%eax
40826c:	f6 04 46 04          	testb  $0x4,(%esi,%eax,2)
408270:	75 f4                	jne    0x408266
408272:	5e                   	pop    %esi
408273:	0f b6 c3             	movzbl %bl,%eax
408276:	80 3c 38 78          	cmpb   $0x78,(%eax,%edi,1)
40827a:	75 05                	jne    0x408281
40827c:	83 c2 02             	add    $0x2,%edx
40827f:	8a 1a                	mov    (%edx),%bl
408281:	8b 81 88 00 00 00    	mov    0x88(%ecx),%eax
408287:	8b 00                	mov    (%eax),%eax
408289:	8a 00                	mov    (%eax),%al
40828b:	88 02                	mov    %al,(%edx)
40828d:	42                   	inc    %edx
40828e:	8a 02                	mov    (%edx),%al
408290:	8a cb                	mov    %bl,%cl
408292:	88 1a                	mov    %bl,(%edx)
408294:	42                   	inc    %edx
408295:	8a d8                	mov    %al,%bl
408297:	84 c9                	test   %cl,%cl
408299:	75 f3                	jne    0x40828e
40829b:	5f                   	pop    %edi
40829c:	5b                   	pop    %ebx
40829d:	5d                   	pop    %ebp
40829e:	c3                   	ret
40829f:	8b ff                	mov    %edi,%edi
4082a1:	55                   	push   %ebp
4082a2:	8b ec                	mov    %esp,%ebp
4082a4:	83 ec 10             	sub    $0x10,%esp
4082a7:	53                   	push   %ebx
4082a8:	56                   	push   %esi
4082a9:	8b f1                	mov    %ecx,%esi
4082ab:	8d 55 fc             	lea    -0x4(%ebp),%edx
4082ae:	57                   	push   %edi
4082af:	33 db                	xor    %ebx,%ebx
4082b1:	43                   	inc    %ebx
4082b2:	8b 7e 08             	mov    0x8(%esi),%edi
4082b5:	8b 4e 0c             	mov    0xc(%esi),%ecx
4082b8:	53                   	push   %ebx
4082b9:	49                   	dec    %ecx
4082ba:	8b 47 18             	mov    0x18(%edi),%eax
4082bd:	6a 0a                	push   $0xa
4082bf:	51                   	push   %ecx
4082c0:	89 45 f8             	mov    %eax,-0x8(%ebp)
4082c3:	8b 47 1c             	mov    0x1c(%edi),%eax
4082c6:	51                   	push   %ecx
4082c7:	89 45 f4             	mov    %eax,-0xc(%ebp)
4082ca:	8b c4                	mov    %esp,%eax
4082cc:	57                   	push   %edi
4082cd:	89 08                	mov    %ecx,(%eax)
4082cf:	89 50 04             	mov    %edx,0x4(%eax)
4082d2:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4082d5:	e8 a9 f3 ff ff       	call   0x407683
4082da:	8b c8                	mov    %eax,%ecx
4082dc:	83 c4 14             	add    $0x14,%esp
4082df:	8b 45 08             	mov    0x8(%ebp),%eax
4082e2:	89 08                	mov    %ecx,(%eax)
4082e4:	8b 46 08             	mov    0x8(%esi),%eax
4082e7:	80 78 1c 00          	cmpb   $0x0,0x1c(%eax)
4082eb:	74 06                	je     0x4082f3
4082ed:	83 78 18 22          	cmpl   $0x22,0x18(%eax)
4082f1:	74 08                	je     0x4082fb
4082f3:	8b 45 fc             	mov    -0x4(%ebp),%eax
4082f6:	3b 46 0c             	cmp    0xc(%esi),%eax
4082f9:	73 04                	jae    0x4082ff
4082fb:	32 db                	xor    %bl,%bl
4082fd:	eb 03                	jmp    0x408302
4082ff:	89 46 0c             	mov    %eax,0xc(%esi)
408302:	8b 45 f8             	mov    -0x8(%ebp),%eax
408305:	89 47 18             	mov    %eax,0x18(%edi)
408308:	8b 45 f4             	mov    -0xc(%ebp),%eax
40830b:	89 47 1c             	mov    %eax,0x1c(%edi)
40830e:	8a c3                	mov    %bl,%al
408310:	5f                   	pop    %edi
408311:	5e                   	pop    %esi
408312:	5b                   	pop    %ebx
408313:	c9                   	leave
408314:	c2 04 00             	ret    $0x4
408317:	8b ff                	mov    %edi,%edi
408319:	55                   	push   %ebp
40831a:	8b ec                	mov    %esp,%ebp
40831c:	83 ec 14             	sub    $0x14,%esp
40831f:	53                   	push   %ebx
408320:	56                   	push   %esi
408321:	8b f1                	mov    %ecx,%esi
408323:	57                   	push   %edi
408324:	ff 76 08             	push   0x8(%esi)
408327:	8d 8e 48 04 00 00    	lea    0x448(%esi),%ecx
40832d:	e8 e4 0b 00 00       	call   0x408f16
408332:	84 c0                	test   %al,%al
408334:	74 27                	je     0x40835d
408336:	8b 4e 0c             	mov    0xc(%esi),%ecx
408339:	85 c9                	test   %ecx,%ecx
40833b:	75 28                	jne    0x408365
40833d:	8b 46 08             	mov    0x8(%esi),%eax
408340:	33 db                	xor    %ebx,%ebx
408342:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
408346:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
40834d:	ff 76 08             	push   0x8(%esi)
408350:	53                   	push   %ebx
408351:	53                   	push   %ebx
408352:	53                   	push   %ebx
408353:	53                   	push   %ebx
408354:	53                   	push   %ebx
408355:	e8 f2 f0 ff ff       	call   0x40744c
40835a:	83 c4 18             	add    $0x18,%esp
40835d:	83 c8 ff             	or     $0xffffffff,%eax
408360:	5f                   	pop    %edi
408361:	5e                   	pop    %esi
408362:	5b                   	pop    %ebx
408363:	c9                   	leave
408364:	c3                   	ret
408365:	8b 86 50 04 00 00    	mov    0x450(%esi),%eax
40836b:	40                   	inc    %eax
40836c:	89 86 50 04 00 00    	mov    %eax,0x450(%esi)
408372:	83 f8 02             	cmp    $0x2,%eax
408375:	0f 84 d6 01 00 00    	je     0x408551
40837b:	33 db                	xor    %ebx,%ebx
40837d:	89 5e 34             	mov    %ebx,0x34(%esi)
408380:	88 5e 18             	mov    %bl,0x18(%esi)
408383:	8a 11                	mov    (%ecx),%dl
408385:	41                   	inc    %ecx
408386:	88 55 ff             	mov    %dl,-0x1(%ebp)
408389:	89 4e 0c             	mov    %ecx,0xc(%esi)
40838c:	88 56 2d             	mov    %dl,0x2d(%esi)
40838f:	84 d2                	test   %dl,%dl
408391:	0f 84 a7 01 00 00    	je     0x40853e
408397:	88 55 f0             	mov    %dl,-0x10(%ebp)
40839a:	8d 46 14             	lea    0x14(%esi),%eax
40839d:	39 18                	cmp    %ebx,(%eax)
40839f:	0f 8c 99 01 00 00    	jl     0x40853e
4083a5:	0f b6 46 18          	movzbl 0x18(%esi),%eax
4083a9:	8b ce                	mov    %esi,%ecx
4083ab:	50                   	push   %eax
4083ac:	ff 75 f0             	push   -0x10(%ebp)
4083af:	e8 54 fe ff ff       	call   0x408208
4083b4:	88 46 18             	mov    %al,0x18(%esi)
4083b7:	3c 08                	cmp    $0x8,%al
4083b9:	0f 83 d3 01 00 00    	jae    0x408592
4083bf:	0f b6 c0             	movzbl %al,%eax
4083c2:	83 f8 07             	cmp    $0x7,%eax
4083c5:	77 96                	ja     0x40835d
4083c7:	ff 24 85 a7 85 40 00 	jmp    *0x4085a7(,%eax,4)
4083ce:	8b 7e 08             	mov    0x8(%esi),%edi
4083d1:	88 5e 38             	mov    %bl,0x38(%esi)
4083d4:	89 7d f8             	mov    %edi,-0x8(%ebp)
4083d7:	38 5f 14             	cmp    %bl,0x14(%edi)
4083da:	75 0d                	jne    0x4083e9
4083dc:	8b cf                	mov    %edi,%ecx
4083de:	e8 bd 0a 00 00       	call   0x408ea0
4083e3:	8b 46 08             	mov    0x8(%esi),%eax
4083e6:	89 45 f8             	mov    %eax,-0x8(%ebp)
4083e9:	8a 46 2d             	mov    0x2d(%esi),%al
4083ec:	89 45 ec             	mov    %eax,-0x14(%ebp)
4083ef:	88 45 f4             	mov    %al,-0xc(%ebp)
4083f2:	0f be c0             	movsbl %al,%eax
4083f5:	68 00 80 00 00       	push   $0x8000
4083fa:	50                   	push   %eax
4083fb:	8b 47 0c             	mov    0xc(%edi),%eax
4083fe:	ff 30                	push   (%eax)
408400:	e8 50 0c 00 00       	call   0x409055
408405:	83 c4 0c             	add    $0xc,%esp
408408:	8d 7e 14             	lea    0x14(%esi),%edi
40840b:	85 c0                	test   %eax,%eax
40840d:	74 29                	je     0x408438
40840f:	ff 75 f8             	push   -0x8(%ebp)
408412:	8d 8e 48 04 00 00    	lea    0x448(%esi),%ecx
408418:	57                   	push   %edi
408419:	ff 75 ec             	push   -0x14(%ebp)
40841c:	e8 2d 0b 00 00       	call   0x408f4e
408421:	8b 46 0c             	mov    0xc(%esi),%eax
408424:	8a 08                	mov    (%eax),%cl
408426:	40                   	inc    %eax
408427:	89 46 0c             	mov    %eax,0xc(%esi)
40842a:	88 4e 2d             	mov    %cl,0x2d(%esi)
40842d:	84 c9                	test   %cl,%cl
40842f:	0f 84 24 01 00 00    	je     0x408559
408435:	88 4d f4             	mov    %cl,-0xc(%ebp)
408438:	ff 76 08             	push   0x8(%esi)
40843b:	8d 8e 48 04 00 00    	lea    0x448(%esi),%ecx
408441:	57                   	push   %edi
408442:	ff 75 f4             	push   -0xc(%ebp)
408445:	e8 04 0b 00 00       	call   0x408f4e
40844a:	e9 d0 00 00 00       	jmp    0x40851f
40844f:	83 4e 24 ff          	orl    $0xffffffff,0x24(%esi)
408453:	89 5e 20             	mov    %ebx,0x20(%esi)
408456:	88 5e 2c             	mov    %bl,0x2c(%esi)
408459:	89 5e 1c             	mov    %ebx,0x1c(%esi)
40845c:	89 5e 28             	mov    %ebx,0x28(%esi)
40845f:	88 5e 38             	mov    %bl,0x38(%esi)
408462:	e9 b8 00 00 00       	jmp    0x40851f
408467:	0f be 45 ff          	movsbl -0x1(%ebp),%eax
40846b:	83 e8 20             	sub    $0x20,%eax
40846e:	74 37                	je     0x4084a7
408470:	83 e8 03             	sub    $0x3,%eax
408473:	74 2c                	je     0x4084a1
408475:	83 e8 08             	sub    $0x8,%eax
408478:	74 21                	je     0x40849b
40847a:	48                   	dec    %eax
40847b:	83 e8 01             	sub    $0x1,%eax
40847e:	74 12                	je     0x408492
408480:	83 e8 03             	sub    $0x3,%eax
408483:	0f 85 96 00 00 00    	jne    0x40851f
408489:	83 4e 1c 08          	orl    $0x8,0x1c(%esi)
40848d:	e9 8d 00 00 00       	jmp    0x40851f
408492:	83 4e 1c 04          	orl    $0x4,0x1c(%esi)
408496:	e9 84 00 00 00       	jmp    0x40851f
40849b:	83 4e 1c 01          	orl    $0x1,0x1c(%esi)
40849f:	eb 7e                	jmp    0x40851f
4084a1:	83 4e 1c 20          	orl    $0x20,0x1c(%esi)
4084a5:	eb 78                	jmp    0x40851f
4084a7:	83 4e 1c 02          	orl    $0x2,0x1c(%esi)
4084ab:	eb 72                	jmp    0x40851f
4084ad:	80 7d ff 2a          	cmpb   $0x2a,-0x1(%ebp)
4084b1:	74 0d                	je     0x4084c0
4084b3:	8d 46 20             	lea    0x20(%esi),%eax
4084b6:	50                   	push   %eax
4084b7:	8b ce                	mov    %esi,%ecx
4084b9:	e8 e1 fd ff ff       	call   0x40829f
4084be:	eb 57                	jmp    0x408517
4084c0:	8b 4e 10             	mov    0x10(%esi),%ecx
4084c3:	8d 41 04             	lea    0x4(%ecx),%eax
4084c6:	89 46 10             	mov    %eax,0x10(%esi)
4084c9:	8b 01                	mov    (%ecx),%eax
4084cb:	89 46 20             	mov    %eax,0x20(%esi)
4084ce:	85 c0                	test   %eax,%eax
4084d0:	79 09                	jns    0x4084db
4084d2:	83 4e 1c 04          	orl    $0x4,0x1c(%esi)
4084d6:	f7 d8                	neg    %eax
4084d8:	89 46 20             	mov    %eax,0x20(%esi)
4084db:	b0 01                	mov    $0x1,%al
4084dd:	eb 38                	jmp    0x408517
4084df:	89 5e 24             	mov    %ebx,0x24(%esi)
4084e2:	eb 3b                	jmp    0x40851f
4084e4:	80 7d ff 2a          	cmpb   $0x2a,-0x1(%ebp)
4084e8:	74 05                	je     0x4084ef
4084ea:	8d 46 24             	lea    0x24(%esi),%eax
4084ed:	eb c7                	jmp    0x4084b6
4084ef:	8b 4e 10             	mov    0x10(%esi),%ecx
4084f2:	8d 41 04             	lea    0x4(%ecx),%eax
4084f5:	89 46 10             	mov    %eax,0x10(%esi)
4084f8:	8b 01                	mov    (%ecx),%eax
4084fa:	89 46 24             	mov    %eax,0x24(%esi)
4084fd:	85 c0                	test   %eax,%eax
4084ff:	79 da                	jns    0x4084db
408501:	83 4e 24 ff          	orl    $0xffffffff,0x24(%esi)
408505:	eb d4                	jmp    0x4084db
408507:	8b ce                	mov    %esi,%ecx
408509:	e8 b9 00 00 00       	call   0x4085c7
40850e:	eb 07                	jmp    0x408517
408510:	8b ce                	mov    %esi,%ecx
408512:	e8 09 02 00 00       	call   0x408720
408517:	84 c0                	test   %al,%al
408519:	0f 84 3e fe ff ff    	je     0x40835d
40851f:	8b 46 0c             	mov    0xc(%esi),%eax
408522:	8a 10                	mov    (%eax),%dl
408524:	8d 48 01             	lea    0x1(%eax),%ecx
408527:	89 4e 0c             	mov    %ecx,0xc(%esi)
40852a:	8d 46 14             	lea    0x14(%esi),%eax
40852d:	88 55 ff             	mov    %dl,-0x1(%ebp)
408530:	88 56 2d             	mov    %dl,0x2d(%esi)
408533:	88 55 f0             	mov    %dl,-0x10(%ebp)
408536:	84 d2                	test   %dl,%dl
408538:	0f 85 5f fe ff ff    	jne    0x40839d
40853e:	ff 86 50 04 00 00    	incl   0x450(%esi)
408544:	83 be 50 04 00 00 02 	cmpl   $0x2,0x450(%esi)
40854b:	0f 85 2c fe ff ff    	jne    0x40837d
408551:	8b 46 14             	mov    0x14(%esi),%eax
408554:	e9 07 fe ff ff       	jmp    0x408360
408559:	8b 46 08             	mov    0x8(%esi),%eax
40855c:	6a 16                	push   $0x16
40855e:	5f                   	pop    %edi
40855f:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
408563:	89 78 18             	mov    %edi,0x18(%eax)
408566:	ff 76 08             	push   0x8(%esi)
408569:	53                   	push   %ebx
40856a:	53                   	push   %ebx
40856b:	53                   	push   %ebx
40856c:	53                   	push   %ebx
40856d:	53                   	push   %ebx
40856e:	e8 d9 ee ff ff       	call   0x40744c
408573:	8b 46 08             	mov    0x8(%esi),%eax
408576:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40857a:	89 78 18             	mov    %edi,0x18(%eax)
40857d:	ff 76 08             	push   0x8(%esi)
408580:	53                   	push   %ebx
408581:	53                   	push   %ebx
408582:	53                   	push   %ebx
408583:	53                   	push   %ebx
408584:	53                   	push   %ebx
408585:	e8 c2 ee ff ff       	call   0x40744c
40858a:	83 c4 30             	add    $0x30,%esp
40858d:	e9 cb fd ff ff       	jmp    0x40835d
408592:	8b 4e 08             	mov    0x8(%esi),%ecx
408595:	c6 41 1c 01          	movb   $0x1,0x1c(%ecx)
408599:	c7 41 18 16 00 00 00 	movl   $0x16,0x18(%ecx)
4085a0:	e9 a8 fd ff ff       	jmp    0x40834d
4085a5:	8b ff                	mov    %edi,%edi
4085a7:	ce                   	into
4085a8:	83 40 00 4f          	addl   $0x4f,0x0(%eax)
4085ac:	84 40 00             	test   %al,0x0(%eax)
4085af:	67 84 40 00          	test   %al,0x0(%bx,%si)
4085b3:	ad                   	lods   %ds:(%esi),%eax
4085b4:	84 40 00             	test   %al,0x0(%eax)
4085b7:	df 84 40 00 e4 84 40 	filds  0x4084e400(%eax,%eax,2)
4085be:	00 07                	add    %al,(%edi)
4085c0:	85 40 00             	test   %eax,0x0(%eax)
4085c3:	10 85 40 00 8a 41    	adc    %al,0x418a0040(%ebp)
4085c9:	2d 3c 46 75 17       	sub    $0x1775463c,%eax
4085ce:	8b 01                	mov    (%ecx),%eax
4085d0:	83 e0 08             	and    $0x8,%eax
4085d3:	83 c8 00             	or     $0x0,%eax
4085d6:	0f 85 41 01 00 00    	jne    0x40871d
4085dc:	c6 41 18 07          	movb   $0x7,0x18(%ecx)