406328:	57                   	push   %edi
406329:	e8 be 1b 00 00       	call   0x407eec
40632e:	8b 75 10             	mov    0x10(%ebp),%esi
406331:	33 c9                	xor    %ecx,%ecx
406333:	8b 7d 0c             	mov    0xc(%ebp),%edi
406336:	8b 1e                	mov    (%esi),%ebx
406338:	0f b7 14 5f          	movzwl (%edi,%ebx,2),%edx
40633c:	8d 43 01             	lea    0x1(%ebx),%eax
40633f:	89 55 10             	mov    %edx,0x10(%ebp)
406342:	89 06                	mov    %eax,(%esi)
406344:	66 39 0c 47          	cmp    %cx,(%edi,%eax,2)
406348:	0f 84 96 7f 03 00    	je     0x43e2e4
40634e:	8b 0e                	mov    (%esi),%ecx
406350:	0f b7 04 4f          	movzwl (%edi,%ecx,2),%eax
406354:	66 3b c2             	cmp    %dx,%ax
406357:	74 1e                	je     0x406377
406359:	8b 4d 14             	mov    0x14(%ebp),%ecx
40635c:	50                   	push   %eax
40635d:	e8 22 17 00 00       	call   0x407a84
406362:	ff 06                	incl   (%esi)
406364:	8b 06                	mov    (%esi),%eax
406366:	33 c9                	xor    %ecx,%ecx
406368:	66 39 0c 47          	cmp    %cx,(%edi,%eax,2)
40636c:	0f 84 72 7f 03 00    	je     0x43e2e4
406372:	8b 55 10             	mov    0x10(%ebp),%edx
406375:	eb d7                	jmp    0x40634e
406377:	66 39 54 4f 02       	cmp    %dx,0x2(%edi,%ecx,2)
40637c:	74 0c                	je     0x40638a
40637e:	ff 06                	incl   (%esi)
406380:	33 c0                	xor    %eax,%eax
406382:	5f                   	pop    %edi
406383:	5e                   	pop    %esi
406384:	5b                   	pop    %ebx
406385:	59                   	pop    %ecx
406386:	5d                   	pop    %ebp
406387:	c2 10 00             	ret    $0x10
40638a:	8b 4d 14             	mov    0x14(%ebp),%ecx
40638d:	50                   	push   %eax
40638e:	e8 f1 16 00 00       	call   0x407a84
406393:	83 06 02             	addl   $0x2,(%esi)
406396:	eb cc                	jmp    0x406364
406398:	cc                   	int3
406399:	cc                   	int3
40639a:	cc                   	int3
40639b:	cc                   	int3
40639c:	cc                   	int3
40639d:	cc                   	int3
40639e:	cc                   	int3
40639f:	cc                   	int3
4063a0:	55                   	push   %ebp
4063a1:	8b ec                	mov    %esp,%ebp
4063a3:	83 ec 28             	sub    $0x28,%esp
4063a6:	53                   	push   %ebx
4063a7:	56                   	push   %esi
4063a8:	83 c8 ff             	or     $0xffffffff,%eax
4063ab:	8d 4d d8             	lea    -0x28(%ebp),%ecx
4063ae:	57                   	push   %edi
4063af:	66 89 45 f0          	mov    %ax,-0x10(%ebp)
4063b3:	33 ff                	xor    %edi,%edi
4063b5:	33 c0                	xor    %eax,%eax
4063b7:	89 7d f8             	mov    %edi,-0x8(%ebp)
4063ba:	6a 64                	push   $0x64
4063bc:	66 89 45 f2          	mov    %ax,-0xe(%ebp)
4063c0:	e8 b1 17 00 00       	call   0x407b76
4063c5:	8b 4d 10             	mov    0x10(%ebp),%ecx
4063c8:	e8 13 12 00 00       	call   0x4075e0
4063cd:	8b 5d 0c             	mov    0xc(%ebp),%ebx
4063d0:	66 39 3b             	cmp    %di,(%ebx)
4063d3:	0f 84 f1 01 00 00    	je     0x4065ca
4063d9:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
4063e0:	0f b7 04 7b          	movzwl (%ebx,%edi,2),%eax
4063e4:	83 f8 20             	cmp    $0x20,%eax
4063e7:	0f 84 f2 00 00 00    	je     0x4064df
4063ed:	83 f8 09             	cmp    $0x9,%eax
4063f0:	0f 84 e9 00 00 00    	je     0x4064df
4063f6:	0f b7 04 7b          	movzwl (%ebx,%edi,2),%eax
4063fa:	89 7d f8             	mov    %edi,-0x8(%ebp)
4063fd:	66 85 c0             	test   %ax,%ax
406400:	0f 84 c4 01 00 00    	je     0x4065ca
406406:	8b f0                	mov    %eax,%esi
406408:	66 89 7d f2          	mov    %di,-0xe(%ebp)
40640c:	83 fe 30             	cmp    $0x30,%esi
40640f:	73 6d                	jae    0x40647e
406411:	83 fe 2e             	cmp    $0x2e,%esi
406414:	74 6d                	je     0x406483
406416:	83 fe 41             	cmp    $0x41,%esi
406419:	0f 83 c6 00 00 00    	jae    0x4064e5
40641f:	83 fe 61             	cmp    $0x61,%esi
406422:	0f 83 d9 01 00 00    	jae    0x406601
406428:	83 fe 5f             	cmp    $0x5f,%esi
40642b:	0f 84 d9 01 00 00    	je     0x40660a
406431:	8b c6                	mov    %esi,%eax
406433:	83 f8 24             	cmp    $0x24,%eax
406436:	0f 84 b7 00 00 00    	je     0x4064f3
40643c:	83 f8 3d             	cmp    $0x3d,%eax
40643f:	0f 84 01 02 00 00    	je     0x406646
406445:	83 e8 1a             	sub    $0x1a,%eax
406448:	83 f8 44             	cmp    $0x44,%eax
40644b:	0f 87 ce 7f 03 00    	ja     0x43e41f
406451:	0f b6 80 54 69 40 00 	movzbl 0x406954(%eax),%eax
406458:	ff 24 85 08 69 40 00 	jmp    *0x406908(,%eax,4)
40645f:	6a 4f                	push   $0x4f
406461:	8d 4d e8             	lea    -0x18(%ebp),%ecx
406464:	e8 a9 fa ff ff       	call   0x405f12
406469:	8b 4d 10             	mov    0x10(%ebp),%ecx
40646c:	8d 45 e8             	lea    -0x18(%ebp),%eax
40646f:	50                   	push   %eax
406470:	e8 fa 11 00 00       	call   0x40766f
406475:	47                   	inc    %edi
406476:	89 7d f8             	mov    %edi,-0x8(%ebp)
406479:	e9 41 01 00 00       	jmp    0x4065bf
40647e:	83 fe 39             	cmp    $0x39,%esi
406481:	77 8e                	ja     0x406411
406483:	8b 7d 10             	mov    0x10(%ebp),%edi
406486:	b8 40 00 00 00       	mov    $0x40,%eax
40648b:	89 45 0c             	mov    %eax,0xc(%ebp)
40648e:	8b 4f 08             	mov    0x8(%edi),%ecx
406491:	89 4d f4             	mov    %ecx,-0xc(%ebp)
406494:	85 c9                	test   %ecx,%ecx
406496:	74 0e                	je     0x4064a6
406498:	8b 47 04             	mov    0x4(%edi),%eax
40649b:	8b 44 88 fc          	mov    -0x4(%eax,%ecx,4),%eax
40649f:	0f b7 40 08          	movzwl 0x8(%eax),%eax
4064a3:	89 45 0c             	mov    %eax,0xc(%ebp)
4064a6:	50                   	push   %eax
4064a7:	8d 45 d8             	lea    -0x28(%ebp),%eax
4064aa:	50                   	push   %eax
4064ab:	8d 45 e8             	lea    -0x18(%ebp),%eax
4064ae:	50                   	push   %eax
4064af:	8d 45 f8             	lea    -0x8(%ebp),%eax
4064b2:	50                   	push   %eax
4064b3:	53                   	push   %ebx
4064b4:	e8 13 fc ff ff       	call   0x4060cc
4064b9:	3c 01                	cmp    $0x1,%al
4064bb:	0f 85 c0 03 00 00    	jne    0x406881
4064c1:	66 83 7d 0c 4a       	cmpw   $0x4a,0xc(%ebp)
4064c6:	0f 84 5f 03 00 00    	je     0x40682b
4064cc:	8d 45 e8             	lea    -0x18(%ebp),%eax
4064cf:	8b cf                	mov    %edi,%ecx
4064d1:	50                   	push   %eax
4064d2:	e8 98 11 00 00       	call   0x40766f
4064d7:	8b 7d f8             	mov    -0x8(%ebp),%edi
4064da:	e9 e0 00 00 00       	jmp    0x4065bf
4064df:	47                   	inc    %edi
4064e0:	e9 fb fe ff ff       	jmp    0x4063e0
4064e5:	83 fe 5a             	cmp    $0x5a,%esi
4064e8:	0f 87 31 ff ff ff    	ja     0x40641f
4064ee:	e9 17 01 00 00       	jmp    0x40660a
4064f3:	ff 75 10             	push   0x10(%ebp)
4064f6:	e8 a5 fa ff ff       	call   0x405fa0
4064fb:	85 c0                	test   %eax,%eax
4064fd:	0f 88 ff 03 00 00    	js     0x406902
406503:	83 fe 24             	cmp    $0x24,%esi
406506:	0f 85 b9 02 00 00    	jne    0x4067c5
40650c:	b8 33 00 00 00       	mov    $0x33,%eax
406511:	50                   	push   %eax
406512:	8d 4d e8             	lea    -0x18(%ebp),%ecx
406515:	e8 f8 f9 ff ff       	call   0x405f12
40651a:	47                   	inc    %edi
40651b:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40651e:	89 7d f8             	mov    %edi,-0x8(%ebp)
406521:	e8 c6 19 00 00       	call   0x407eec
406526:	0f b7 34 7b          	movzwl (%ebx,%edi,2),%esi
40652a:	66 83 fe 5a          	cmp    $0x5a,%si
40652e:	76 3e                	jbe    0x40656e
406530:	66 83 fe 61          	cmp    $0x61,%si
406534:	72 40                	jb     0x406576
406536:	66 83 fe 7a          	cmp    $0x7a,%si
40653a:	77 3a                	ja     0x406576
40653c:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40653f:	8b 01                	mov    (%ecx),%eax
406541:	83 f8 01             	cmp    $0x1,%eax
406544:	0f 8f 71 7e 03 00    	jg     0x43e3bb
40654a:	8b 45 dc             	mov    -0x24(%ebp),%eax
40654d:	8d 4d d8             	lea    -0x28(%ebp),%ecx
406550:	40                   	inc    %eax
406551:	50                   	push   %eax
406552:	e8 5c 17 00 00       	call   0x407cb3
406557:	8b 4d d8             	mov    -0x28(%ebp),%ecx
40655a:	8b 45 dc             	mov    -0x24(%ebp),%eax
40655d:	33 d2                	xor    %edx,%edx
40655f:	66 89 34 41          	mov    %si,(%ecx,%eax,2)
406563:	40                   	inc    %eax
406564:	89 45 dc             	mov    %eax,-0x24(%ebp)
406567:	47                   	inc    %edi
406568:	66 89 14 41          	mov    %dx,(%ecx,%eax,2)
40656c:	eb b8                	jmp    0x406526
40656e:	66 83 fe 41          	cmp    $0x41,%si
406572:	73 c8                	jae    0x40653c
406574:	eb ba                	jmp    0x406530
406576:	66 83 fe 30          	cmp    $0x30,%si
40657a:	0f 83 b7 00 00 00    	jae    0x406637
406580:	66 83 fe 5f          	cmp    $0x5f,%si
406584:	74 b6                	je     0x40653c
406586:	83 7d dc 00          	cmpl   $0x0,-0x24(%ebp)
40658a:	89 7d f8             	mov    %edi,-0x8(%ebp)
40658d:	0f 84 66 03 00 00    	je     0x4068f9
406593:	8d 4d d8             	lea    -0x28(%ebp),%ecx
406596:	e8 14 1a 00 00       	call   0x407faf
40659b:	ff 75 dc             	push   -0x24(%ebp)
40659e:	ff 75 d8             	push   -0x28(%ebp)
4065a1:	ff 15 7c f6 48 00    	call   *0x48f67c
4065a7:	8d 45 d8             	lea    -0x28(%ebp),%eax
4065aa:	50                   	push   %eax
4065ab:	8d 4d e8             	lea    -0x18(%ebp),%ecx
4065ae:	e8 ee f8 ff ff       	call   0x405ea1
4065b3:	8b 4d 10             	mov    0x10(%ebp),%ecx
4065b6:	8d 45 e8             	lea    -0x18(%ebp),%eax
4065b9:	50                   	push   %eax
4065ba:	e8 b0 10 00 00       	call   0x40766f
4065bf:	66 83 3c 7b 00       	cmpw   $0x0,(%ebx,%edi,2)
4065c4:	0f 85 16 fe ff ff    	jne    0x4063e0
4065ca:	6a 7f                	push   $0x7f
4065cc:	8d 4d e8             	lea    -0x18(%ebp),%ecx
4065cf:	e8 3e f9 ff ff       	call   0x405f12
4065d4:	8b 4d 10             	mov    0x10(%ebp),%ecx
4065d7:	8d 45 e8             	lea    -0x18(%ebp),%eax
4065da:	50                   	push   %eax
4065db:	66 89 7d f2          	mov    %di,-0xe(%ebp)
4065df:	e8 8b 10 00 00       	call   0x40766f
4065e4:	33 f6                	xor    %esi,%esi
4065e6:	8d 4d d8             	lea    -0x28(%ebp),%ecx
4065e9:	e8 76 f4 ff ff       	call   0x405a64
4065ee:	8d 4d e8             	lea    -0x18(%ebp),%ecx
4065f1:	e8 05 f9 ff ff       	call   0x405efb
4065f6:	5f                   	pop    %edi
4065f7:	8b c6                	mov    %esi,%eax
4065f9:	5e                   	pop    %esi
4065fa:	5b                   	pop    %ebx
4065fb:	8b e5                	mov    %ebp,%esp
4065fd:	5d                   	pop    %ebp
4065fe:	c2 0c 00             	ret    $0xc
406601:	83 fe 7a             	cmp    $0x7a,%esi
406604:	0f 87 1e fe ff ff    	ja     0x406428
40660a:	8d 45 d8             	lea    -0x28(%ebp),%eax
40660d:	50                   	push   %eax
40660e:	8d 45 e8             	lea    -0x18(%ebp),%eax
406611:	50                   	push   %eax
406612:	8d 45 f8             	lea    -0x8(%ebp),%eax
406615:	50                   	push   %eax
406616:	53                   	push   %ebx
406617:	e8 b6 f9 ff ff       	call   0x405fd2
40661c:	83 7d e8 ff          	cmpl   $0xffffffff,-0x18(%ebp)
406620:	0f 84 ef 7d 03 00    	je     0x43e415
406626:	8b 4d 10             	mov    0x10(%ebp),%ecx
406629:	8d 45 e8             	lea    -0x18(%ebp),%eax
40662c:	50                   	push   %eax
40662d:	e8 3d 10 00 00       	call   0x40766f
406632:	8b 7d f8             	mov    -0x8(%ebp),%edi
406635:	eb 88                	jmp    0x4065bf
406637:	66 83 fe 39          	cmp    $0x39,%si
40663b:	0f 87 3f ff ff ff    	ja     0x406580
406641:	e9 f6 fe ff ff       	jmp    0x40653c
406646:	47                   	inc    %edi
406647:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40664a:	89 7d f8             	mov    %edi,-0x8(%ebp)
40664d:	66 83 3c 7b 3d       	cmpw   $0x3d,(%ebx,%edi,2)
406652:	0f 84 53 7d 03 00    	je     0x43e3ab
406658:	6a 41                	push   $0x41
40665a:	e8 b3 f8 ff ff       	call   0x405f12
40665f:	e9 4f ff ff ff       	jmp    0x4065b3
406664:	6a 4e                	push   $0x4e
406666:	8d 4d e8             	lea    -0x18(%ebp),%ecx
406669:	e8 a4 f8 ff ff       	call   0x405f12
40666e:	8b 4d 10             	mov    0x10(%ebp),%ecx
406671:	8d 45 e8             	lea    -0x18(%ebp),%eax
406674:	50                   	push   %eax
406675:	e8 f5 0f 00 00       	call   0x40766f
40667a:	47                   	inc    %edi
40667b:	89 7d f8             	mov    %edi,-0x8(%ebp)
40667e:	e9 3c ff ff ff       	jmp    0x4065bf
406683:	6a 47                	push   $0x47
406685:	8d 4d e8             	lea    -0x18(%ebp),%ecx
406688:	e8 85 f8 ff ff       	call   0x405f12
40668d:	8b 4d 10             	mov    0x10(%ebp),%ecx
406690:	8d 45 e8             	lea    -0x18(%ebp),%eax
406693:	50                   	push   %eax
406694:	e8 d6 0f 00 00       	call   0x40766f
406699:	47                   	inc    %edi
40669a:	89 7d f8             	mov    %edi,-0x8(%ebp)
40669d:	e9 1d ff ff ff       	jmp    0x4065bf
4066a2:	6a 48                	push   $0x48
4066a4:	8d 4d e8             	lea    -0x18(%ebp),%ecx
4066a7:	e8 66 f8 ff ff       	call   0x405f12
4066ac:	8b 4d 10             	mov    0x10(%ebp),%ecx
4066af:	8d 45 e8             	lea    -0x18(%ebp),%eax
4066b2:	50                   	push   %eax
4066b3:	e8 b7 0f 00 00       	call   0x40766f
4066b8:	47                   	inc    %edi
4066b9:	89 7d f8             	mov    %edi,-0x8(%ebp)
4066bc:	e9 fe fe ff ff       	jmp    0x4065bf
4066c1:	6a 40                	push   $0x40
4066c3:	8d 4d e8             	lea    -0x18(%ebp),%ecx
4066c6:	e8 47 f8 ff ff       	call   0x405f12
4066cb:	8b 4d 10             	mov    0x10(%ebp),%ecx
4066ce:	8d 45 e8             	lea    -0x18(%ebp),%eax
4066d1:	50                   	push   %eax
4066d2:	e8 98 0f 00 00       	call   0x40766f
4066d7:	47                   	inc    %edi
4066d8:	89 7d f8             	mov    %edi,-0x8(%ebp)
4066db:	e9 df fe ff ff       	jmp    0x4065bf
4066e0:	8d 45 d8             	lea    -0x28(%ebp),%eax
4066e3:	50                   	push   %eax
4066e4:	8d 45 f8             	lea    -0x8(%ebp),%eax
4066e7:	50                   	push   %eax
4066e8:	53                   	push   %ebx
4066e9:	ff 75 08             	push   0x8(%ebp)
4066ec:	e8 2e fc ff ff       	call   0x40631f
4066f1:	8d 4d e8             	lea    -0x18(%ebp),%ecx
4066f4:	85 c0                	test   %eax,%eax
4066f6:	0f 88 34 7d 03 00    	js     0x43e430
4066fc:	6a 36                	push   $0x36
4066fe:	e8 0f f8 ff ff       	call   0x405f12
406703:	8d 45 d8             	lea    -0x28(%ebp),%eax
406706:	50                   	push   %eax
406707:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40670a:	e8 92 f7 ff ff       	call   0x405ea1
40670f:	8b 4d 10             	mov    0x10(%ebp),%ecx
406712:	8d 45 e8             	lea    -0x18(%ebp),%eax
406715:	50                   	push   %eax
406716:	e8 54 0f 00 00       	call   0x40766f
40671b:	8b 7d f8             	mov    -0x8(%ebp),%edi
40671e:	e9 9c fe ff ff       	jmp    0x4065bf
406723:	6a 4d                	push   $0x4d
406725:	8d 4d e8             	lea    -0x18(%ebp),%ecx
406728:	e8 e5 f7 ff ff       	call   0x405f12
40672d:	47                   	inc    %edi
40672e:	89 7d f8             	mov    %edi,-0x8(%ebp)
406731:	66 83 3c 7b 3d       	cmpw   $0x3d,(%ebx,%edi,2)
406736:	0f 85 77 fe ff ff    	jne    0x4065b3
40673c:	47                   	inc    %edi
40673d:	8d 4d e8             	lea    -0x18(%ebp),%ecx
406740:	6a 56                	push   $0x56
406742:	89 7d f8             	mov    %edi,-0x8(%ebp)
406745:	e8 c8 f7 ff ff       	call   0x405f12
40674a:	e9 64 fe ff ff       	jmp    0x4065b3
40674f:	6a 49                	push   $0x49
406751:	8d 4d e8             	lea    -0x18(%ebp),%ecx
406754:	e8 b9 f7 ff ff       	call   0x405f12
406759:	47                   	inc    %edi
40675a:	89 7d f8             	mov    %edi,-0x8(%ebp)
40675d:	66 83 3c 7b 3d       	cmpw   $0x3d,(%ebx,%edi,2)
406762:	0f 85 4b fe ff ff    	jne    0x4065b3
406768:	47                   	inc    %edi
406769:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40676c:	6a 52                	push   $0x52
40676e:	89 7d f8             	mov    %edi,-0x8(%ebp)
406771:	e8 9c f7 ff ff       	call   0x405f12
406776:	e9 38 fe ff ff       	jmp    0x4065b3
40677b:	6a 4c                	push   $0x4c