40b327:	46                   	inc    %esi
40b328:	84 c0                	test   %al,%al
40b32a:	75 f9                	jne    0x40b325
40b32c:	88 46 fe             	mov    %al,-0x2(%esi)
40b32f:	ff 75 28             	push   0x28(%ebp)
40b332:	8d 45 f0             	lea    -0x10(%ebp),%eax
40b335:	6a 01                	push   $0x1
40b337:	50                   	push   %eax
40b338:	57                   	push   %edi
40b339:	ff 75 10             	push   0x10(%ebp)
40b33c:	53                   	push   %ebx
40b33d:	e8 89 fe ff ff       	call   0x40b1cb
40b342:	83 c4 18             	add    $0x18,%esp
40b345:	eb 1c                	jmp    0x40b363
40b347:	ff 75 28             	push   0x28(%ebp)
40b34a:	8d 45 f0             	lea    -0x10(%ebp),%eax
40b34d:	6a 01                	push   $0x1
40b34f:	50                   	push   %eax
40b350:	ff 75 24             	push   0x24(%ebp)
40b353:	ff 75 20             	push   0x20(%ebp)
40b356:	57                   	push   %edi
40b357:	ff 75 10             	push   0x10(%ebp)
40b35a:	53                   	push   %ebx
40b35b:	e8 93 fc ff ff       	call   0x40aff3
40b360:	83 c4 20             	add    $0x20,%esp
40b363:	5f                   	pop    %edi
40b364:	5e                   	pop    %esi
40b365:	5b                   	pop    %ebx
40b366:	8b e5                	mov    %ebp,%esp
40b368:	5d                   	pop    %ebp
40b369:	c3                   	ret
40b36a:	8b ff                	mov    %edi,%edi
40b36c:	55                   	push   %ebp
40b36d:	8b ec                	mov    %esp,%ebp
40b36f:	83 ec 48             	sub    $0x48,%esp
40b372:	a1 0c 30 42 00       	mov    0x42300c,%eax
40b377:	33 c5                	xor    %ebp,%eax
40b379:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b37c:	8b 55 14             	mov    0x14(%ebp),%edx
40b37f:	8b 4d 10             	mov    0x10(%ebp),%ecx
40b382:	53                   	push   %ebx
40b383:	8a 5d 0c             	mov    0xc(%ebp),%bl
40b386:	0f b6 c3             	movzbl %bl,%eax
40b389:	83 c0 04             	add    $0x4,%eax
40b38c:	3b d0                	cmp    %eax,%edx
40b38e:	73 15                	jae    0x40b3a5
40b390:	6a 0c                	push   $0xc
40b392:	c6 01 00             	movb   $0x0,(%ecx)
40b395:	58                   	pop    %eax
40b396:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40b399:	33 cd                	xor    %ebp,%ecx
40b39b:	5b                   	pop    %ebx
40b39c:	e8 b5 7b ff ff       	call   0x402f56
40b3a1:	8b e5                	mov    %ebp,%esp
40b3a3:	5d                   	pop    %ebp
40b3a4:	c3                   	ret
40b3a5:	84 db                	test   %bl,%bl
40b3a7:	74 08                	je     0x40b3b1
40b3a9:	c6 01 2d             	movb   $0x2d,(%ecx)
40b3ac:	41                   	inc    %ecx
40b3ad:	4a                   	dec    %edx
40b3ae:	c6 01 00             	movb   $0x0,(%ecx)
40b3b1:	b8 d8 bf 41 00       	mov    $0x41bfd8,%eax
40b3b6:	c7 45 dc e8 bf 41 00 	movl   $0x41bfe8,-0x24(%ebp)
40b3bd:	89 45 bc             	mov    %eax,-0x44(%ebp)
40b3c0:	33 db                	xor    %ebx,%ebx
40b3c2:	38 5d 18             	cmp    %bl,0x18(%ebp)
40b3c5:	89 45 c0             	mov    %eax,-0x40(%ebp)
40b3c8:	b8 dc bf 41 00       	mov    $0x41bfdc,%eax
40b3cd:	89 45 c4             	mov    %eax,-0x3c(%ebp)
40b3d0:	0f 95 c3             	setne  %bl
40b3d3:	89 45 c8             	mov    %eax,-0x38(%ebp)
40b3d6:	4b                   	dec    %ebx
40b3d7:	b8 e4 bf 41 00       	mov    $0x41bfe4,%eax
40b3dc:	c7 45 e4 f4 bf 41 00 	movl   $0x41bff4,-0x1c(%ebp)
40b3e3:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40b3e6:	83 e3 02             	and    $0x2,%ebx
40b3e9:	89 45 d8             	mov    %eax,-0x28(%ebp)
40b3ec:	89 45 e8             	mov    %eax,-0x18(%ebp)
40b3ef:	89 45 f8             	mov    %eax,-0x8(%ebp)
40b3f2:	8b 45 08             	mov    0x8(%ebp),%eax
40b3f5:	56                   	push   %esi
40b3f6:	be e0 bf 41 00       	mov    $0x41bfe0,%esi
40b3fb:	c7 45 ec 00 c0 41 00 	movl   $0x41c000,-0x14(%ebp)
40b402:	57                   	push   %edi
40b403:	8d 3c 85 fc ff ff ff 	lea    -0x4(,%eax,4),%edi
40b40a:	89 75 cc             	mov    %esi,-0x34(%ebp)
40b40d:	8d 04 1f             	lea    (%edi,%ebx,1),%eax
40b410:	89 75 d0             	mov    %esi,-0x30(%ebp)
40b413:	89 75 e0             	mov    %esi,-0x20(%ebp)
40b416:	89 75 f0             	mov    %esi,-0x10(%ebp)
40b419:	c7 45 f4 0c c0 41 00 	movl   $0x41c00c,-0xc(%ebp)
40b420:	8b 74 85 bc          	mov    -0x44(%ebp,%eax,4),%esi
40b424:	8d 46 01             	lea    0x1(%esi),%eax
40b427:	89 45 b8             	mov    %eax,-0x48(%ebp)
40b42a:	8a 06                	mov    (%esi),%al
40b42c:	46                   	inc    %esi
40b42d:	84 c0                	test   %al,%al
40b42f:	75 f9                	jne    0x40b42a
40b431:	2b 75 b8             	sub    -0x48(%ebp),%esi
40b434:	3b f2                	cmp    %edx,%esi
40b436:	1b c0                	sbb    %eax,%eax
40b438:	47                   	inc    %edi
40b439:	03 c7                	add    %edi,%eax
40b43b:	03 c3                	add    %ebx,%eax
40b43d:	ff 74 85 bc          	push   -0x44(%ebp,%eax,4)
40b441:	52                   	push   %edx
40b442:	51                   	push   %ecx
40b443:	e8 3f e3 ff ff       	call   0x409787
40b448:	83 c4 0c             	add    $0xc,%esp
40b44b:	5f                   	pop    %edi
40b44c:	5e                   	pop    %esi
40b44d:	85 c0                	test   %eax,%eax
40b44f:	0f 84 41 ff ff ff    	je     0x40b396
40b455:	33 c0                	xor    %eax,%eax
40b457:	50                   	push   %eax
40b458:	50                   	push   %eax
40b459:	50                   	push   %eax
40b45a:	50                   	push   %eax
40b45b:	50                   	push   %eax
40b45c:	e8 fa c7 ff ff       	call   0x407c5b
40b461:	cc                   	int3
40b462:	8b ff                	mov    %edi,%edi
40b464:	55                   	push   %ebp
40b465:	8b ec                	mov    %esp,%ebp
40b467:	8b 55 14             	mov    0x14(%ebp),%edx
40b46a:	85 d2                	test   %edx,%edx
40b46c:	74 26                	je     0x40b494
40b46e:	56                   	push   %esi
40b46f:	8b 75 10             	mov    0x10(%ebp),%esi
40b472:	8b ce                	mov    %esi,%ecx
40b474:	57                   	push   %edi
40b475:	8d 79 01             	lea    0x1(%ecx),%edi
40b478:	8a 01                	mov    (%ecx),%al
40b47a:	41                   	inc    %ecx
40b47b:	84 c0                	test   %al,%al
40b47d:	75 f9                	jne    0x40b478
40b47f:	2b cf                	sub    %edi,%ecx
40b481:	8d 41 01             	lea    0x1(%ecx),%eax
40b484:	50                   	push   %eax
40b485:	8d 04 16             	lea    (%esi,%edx,1),%eax
40b488:	56                   	push   %esi
40b489:	50                   	push   %eax
40b48a:	e8 11 8a ff ff       	call   0x403ea0
40b48f:	83 c4 0c             	add    $0xc,%esp
40b492:	5f                   	pop    %edi
40b493:	5e                   	pop    %esi
40b494:	5d                   	pop    %ebp
40b495:	c3                   	ret
40b496:	8b ff                	mov    %edi,%edi
40b498:	55                   	push   %ebp
40b499:	8b ec                	mov    %esp,%ebp
40b49b:	51                   	push   %ecx
40b49c:	51                   	push   %ecx
40b49d:	56                   	push   %esi
40b49e:	57                   	push   %edi
40b49f:	8b 7d 0c             	mov    0xc(%ebp),%edi
40b4a2:	85 ff                	test   %edi,%edi
40b4a4:	75 16                	jne    0x40b4bc
40b4a6:	e8 5c c8 ff ff       	call   0x407d07
40b4ab:	6a 16                	push   $0x16
40b4ad:	5e                   	pop    %esi
40b4ae:	89 30                	mov    %esi,(%eax)
40b4b0:	e8 79 c7 ff ff       	call   0x407c2e
40b4b5:	8b c6                	mov    %esi,%eax
40b4b7:	e9 1e 01 00 00       	jmp    0x40b5da
40b4bc:	53                   	push   %ebx
40b4bd:	8b 5d 10             	mov    0x10(%ebp),%ebx
40b4c0:	85 db                	test   %ebx,%ebx
40b4c2:	74 0c                	je     0x40b4d0
40b4c4:	83 7d 14 00          	cmpl   $0x0,0x14(%ebp)
40b4c8:	74 06                	je     0x40b4d0
40b4ca:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
40b4ce:	77 16                	ja     0x40b4e6
40b4d0:	e8 32 c8 ff ff       	call   0x407d07
40b4d5:	6a 16                	push   $0x16
40b4d7:	5e                   	pop    %esi
40b4d8:	89 30                	mov    %esi,(%eax)
40b4da:	e8 4f c7 ff ff       	call   0x407c2e
40b4df:	8b c6                	mov    %esi,%eax
40b4e1:	e9 f3 00 00 00       	jmp    0x40b5d9
40b4e6:	8b 75 1c             	mov    0x1c(%ebp),%esi
40b4e9:	83 fe 41             	cmp    $0x41,%esi
40b4ec:	74 13                	je     0x40b501
40b4ee:	83 fe 45             	cmp    $0x45,%esi
40b4f1:	74 0e                	je     0x40b501
40b4f3:	83 fe 46             	cmp    $0x46,%esi
40b4f6:	74 09                	je     0x40b501
40b4f8:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
40b4fc:	83 fe 47             	cmp    $0x47,%esi
40b4ff:	75 04                	jne    0x40b505
40b501:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40b505:	8b 45 24             	mov    0x24(%ebp),%eax
40b508:	83 e0 08             	and    $0x8,%eax
40b50b:	83 c8 00             	or     $0x0,%eax
40b50e:	75 32                	jne    0x40b542
40b510:	ff 75 08             	push   0x8(%ebp)
40b513:	e8 b3 f6 ff ff       	call   0x40abcb
40b518:	89 45 f8             	mov    %eax,-0x8(%ebp)
40b51b:	59                   	pop    %ecx
40b51c:	85 c0                	test   %eax,%eax
40b51e:	74 22                	je     0x40b542
40b520:	ff 75 fc             	push   -0x4(%ebp)
40b523:	53                   	push   %ebx
40b524:	57                   	push   %edi
40b525:	ff 75 08             	push   0x8(%ebp)
40b528:	e8 0a f7 ff ff       	call   0x40ac37
40b52d:	59                   	pop    %ecx
40b52e:	0f b6 c0             	movzbl %al,%eax
40b531:	50                   	push   %eax
40b532:	ff 75 f8             	push   -0x8(%ebp)
40b535:	e8 30 fe ff ff       	call   0x40b36a
40b53a:	83 c4 14             	add    $0x14,%esp
40b53d:	e9 97 00 00 00       	jmp    0x40b5d9
40b542:	8b 45 24             	mov    0x24(%ebp),%eax
40b545:	83 e0 10             	and    $0x10,%eax
40b548:	83 c8 00             	or     $0x0,%eax
40b54b:	74 04                	je     0x40b551
40b54d:	6a 03                	push   $0x3
40b54f:	eb 02                	jmp    0x40b553
40b551:	6a 02                	push   $0x2
40b553:	58                   	pop    %eax
40b554:	83 fe 61             	cmp    $0x61,%esi
40b557:	7f 28                	jg     0x40b581
40b559:	74 0a                	je     0x40b565
40b55b:	83 ee 41             	sub    $0x41,%esi
40b55e:	74 05                	je     0x40b565
40b560:	83 ee 04             	sub    $0x4,%esi
40b563:	eb 1f                	jmp    0x40b584
40b565:	ff 75 2c             	push   0x2c(%ebp)
40b568:	50                   	push   %eax
40b569:	ff 75 fc             	push   -0x4(%ebp)
40b56c:	ff 75 20             	push   0x20(%ebp)
40b56f:	ff 75 18             	push   0x18(%ebp)
40b572:	ff 75 14             	push   0x14(%ebp)
40b575:	53                   	push   %ebx
40b576:	57                   	push   %edi
40b577:	ff 75 08             	push   0x8(%ebp)
40b57a:	e8 d6 f6 ff ff       	call   0x40ac55
40b57f:	eb 55                	jmp    0x40b5d6
40b581:	83 ee 65             	sub    $0x65,%esi
40b584:	ff 75 2c             	push   0x2c(%ebp)
40b587:	74 36                	je     0x40b5bf
40b589:	83 ee 01             	sub    $0x1,%esi
40b58c:	74 19                	je     0x40b5a7
40b58e:	50                   	push   %eax
40b58f:	ff 75 fc             	push   -0x4(%ebp)
40b592:	ff 75 20             	push   0x20(%ebp)
40b595:	ff 75 18             	push   0x18(%ebp)
40b598:	ff 75 14             	push   0x14(%ebp)
40b59b:	53                   	push   %ebx
40b59c:	57                   	push   %edi
40b59d:	ff 75 08             	push   0x8(%ebp)
40b5a0:	e8 fd fc ff ff       	call   0x40b2a2
40b5a5:	eb 2f                	jmp    0x40b5d6
40b5a7:	ff 75 20             	push   0x20(%ebp)
40b5aa:	ff 75 18             	push   0x18(%ebp)
40b5ad:	ff 75 14             	push   0x14(%ebp)
40b5b0:	53                   	push   %ebx
40b5b1:	57                   	push   %edi
40b5b2:	ff 75 08             	push   0x8(%ebp)
40b5b5:	e8 84 fb ff ff       	call   0x40b13e
40b5ba:	83 c4 1c             	add    $0x1c,%esp
40b5bd:	eb 1a                	jmp    0x40b5d9
40b5bf:	50                   	push   %eax
40b5c0:	ff 75 fc             	push   -0x4(%ebp)
40b5c3:	ff 75 20             	push   0x20(%ebp)
40b5c6:	ff 75 18             	push   0x18(%ebp)
40b5c9:	ff 75 14             	push   0x14(%ebp)
40b5cc:	53                   	push   %ebx
40b5cd:	57                   	push   %edi
40b5ce:	ff 75 08             	push   0x8(%ebp)
40b5d1:	e8 82 f9 ff ff       	call   0x40af58
40b5d6:	83 c4 24             	add    $0x24,%esp
40b5d9:	5b                   	pop    %ebx
40b5da:	5f                   	pop    %edi
40b5db:	5e                   	pop    %esi
40b5dc:	8b e5                	mov    %ebp,%esp
40b5de:	5d                   	pop    %ebp
40b5df:	c3                   	ret
40b5e0:	8b ff                	mov    %edi,%edi
40b5e2:	55                   	push   %ebp
40b5e3:	8b ec                	mov    %esp,%ebp
40b5e5:	8b 45 08             	mov    0x8(%ebp),%eax
40b5e8:	85 c0                	test   %eax,%eax
40b5ea:	75 15                	jne    0x40b601
40b5ec:	e8 16 c7 ff ff       	call   0x407d07
40b5f1:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40b5f7:	e8 32 c6 ff ff       	call   0x407c2e
40b5fc:	83 c8 ff             	or     $0xffffffff,%eax
40b5ff:	5d                   	pop    %ebp
40b600:	c3                   	ret
40b601:	8b 40 10             	mov    0x10(%eax),%eax
40b604:	5d                   	pop    %ebp
40b605:	c3                   	ret
40b606:	a1 a4 41 42 00       	mov    0x4241a4,%eax
40b60b:	56                   	push   %esi
40b60c:	6a 03                	push   $0x3
40b60e:	5e                   	pop    %esi
40b60f:	85 c0                	test   %eax,%eax
40b611:	75 07                	jne    0x40b61a
40b613:	b8 00 02 00 00       	mov    $0x200,%eax
40b618:	eb 06                	jmp    0x40b620
40b61a:	3b c6                	cmp    %esi,%eax
40b61c:	7d 07                	jge    0x40b625
40b61e:	8b c6                	mov    %esi,%eax
40b620:	a3 a4 41 42 00       	mov    %eax,0x4241a4
40b625:	6a 04                	push   $0x4
40b627:	50                   	push   %eax
40b628:	e8 7f e2 ff ff       	call   0x4098ac
40b62d:	6a 00                	push   $0x0
40b62f:	a3 a8 41 42 00       	mov    %eax,0x4241a8
40b634:	e8 eb e1 ff ff       	call   0x409824
40b639:	83 c4 0c             	add    $0xc,%esp
40b63c:	83 3d a8 41 42 00 00 	cmpl   $0x0,0x4241a8
40b643:	75 2b                	jne    0x40b670
40b645:	6a 04                	push   $0x4
40b647:	56                   	push   %esi
40b648:	89 35 a4 41 42 00    	mov    %esi,0x4241a4
40b64e:	e8 59 e2 ff ff       	call   0x4098ac
40b653:	6a 00                	push   $0x0
40b655:	a3 a8 41 42 00       	mov    %eax,0x4241a8
40b65a:	e8 c5 e1 ff ff       	call   0x409824
40b65f:	83 c4 0c             	add    $0xc,%esp
40b662:	83 3d a8 41 42 00 00 	cmpl   $0x0,0x4241a8
40b669:	75 05                	jne    0x40b670
40b66b:	83 c8 ff             	or     $0xffffffff,%eax
40b66e:	5e                   	pop    %esi
40b66f:	c3                   	ret
40b670:	57                   	push   %edi
40b671:	33 ff                	xor    %edi,%edi
40b673:	be 60 30 42 00       	mov    $0x423060,%esi
40b678:	6a 00                	push   $0x0
40b67a:	68 a0 0f 00 00       	push   $0xfa0
40b67f:	8d 46 20             	lea    0x20(%esi),%eax
40b682:	50                   	push   %eax
40b683:	e8 c0 09 00 00       	call   0x40c048
40b688:	a1 a8 41 42 00       	mov    0x4241a8,%eax
40b68d:	8b d7                	mov    %edi,%edx
40b68f:	c1 fa 06             	sar    $0x6,%edx
40b692:	89 34 b8             	mov    %esi,(%eax,%edi,4)
40b695:	8b c7                	mov    %edi,%eax
40b697:	83 e0 3f             	and    $0x3f,%eax
40b69a:	6b c8 30             	imul   $0x30,%eax,%ecx
40b69d:	8b 04 95 c0 41 42 00 	mov    0x4241c0(,%edx,4),%eax
40b6a4:	8b 44 08 18          	mov    0x18(%eax,%ecx,1),%eax
40b6a8:	83 f8 ff             	cmp    $0xffffffff,%eax
40b6ab:	74 09                	je     0x40b6b6
40b6ad:	83 f8 fe             	cmp    $0xfffffffe,%eax
40b6b0:	74 04                	je     0x40b6b6