40b3c0:	e8 c0 07 00 00       	call   0x40bb85
40b3c5:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40b3c8:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
40b3cb:	50                   	push   %eax
40b3cc:	8b 45 08             	mov    0x8(%ebp),%eax
40b3cf:	8b 00                	mov    (%eax),%eax
40b3d1:	8d 04 48             	lea    (%eax,%ecx,2),%eax
40b3d4:	8b 4f 04             	mov    0x4(%edi),%ecx
40b3d7:	50                   	push   %eax
40b3d8:	8b 07                	mov    (%edi),%eax
40b3da:	8d 04 48             	lea    (%eax,%ecx,2),%eax
40b3dd:	50                   	push   %eax
40b3de:	e8 9d 3a 01 00       	call   0x41ee80
40b3e3:	01 5f 04             	add    %ebx,0x4(%edi)
40b3e6:	8b 4f 04             	mov    0x4(%edi),%ecx
40b3e9:	8b 07                	mov    (%edi),%eax
40b3eb:	83 c4 0c             	add    $0xc,%esp
40b3ee:	33 d2                	xor    %edx,%edx
40b3f0:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
40b3f4:	5e                   	pop    %esi
40b3f5:	8b c7                	mov    %edi,%eax
40b3f7:	5f                   	pop    %edi
40b3f8:	5b                   	pop    %ebx
40b3f9:	5d                   	pop    %ebp
40b3fa:	c2 0c 00             	ret    $0xc
40b3fd:	48                   	dec    %eax
40b3fe:	6a 04                	push   $0x4
40b400:	89 01                	mov    %eax,(%ecx)
40b402:	e8 e3 40 01 00       	call   0x41f4ea
40b407:	59                   	pop    %ecx
40b408:	85 c0                	test   %eax,%eax
40b40a:	74 4c                	je     0x40b458
40b40c:	89 30                	mov    %esi,(%eax)
40b40e:	89 47 0c             	mov    %eax,0xc(%edi)
40b411:	8b 47 04             	mov    0x4(%edi),%eax
40b414:	40                   	inc    %eax
40b415:	03 c3                	add    %ebx,%eax
40b417:	89 47 08             	mov    %eax,0x8(%edi)
40b41a:	74 40                	je     0x40b45c
40b41c:	83 c0 07             	add    $0x7,%eax
40b41f:	83 e0 f8             	and    $0xfffffff8,%eax
40b422:	33 c9                	xor    %ecx,%ecx
40b424:	6a 02                	push   $0x2
40b426:	5a                   	pop    %edx
40b427:	89 47 08             	mov    %eax,0x8(%edi)
40b42a:	f7 e2                	mul    %edx
40b42c:	0f 90 c1             	seto   %cl
40b42f:	f7 d9                	neg    %ecx
40b431:	0b c8                	or     %eax,%ecx
40b433:	51                   	push   %ecx
40b434:	e8 b1 40 01 00       	call   0x41f4ea
40b439:	8b 4f 04             	mov    0x4(%edi),%ecx
40b43c:	8b f0                	mov    %eax,%esi
40b43e:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
40b445:	51                   	push   %ecx
40b446:	ff 37                	push   (%edi)
40b448:	56                   	push   %esi
40b449:	e8 32 3a 01 00       	call   0x41ee80
40b44e:	83 c4 10             	add    $0x10,%esp
40b451:	89 37                	mov    %esi,(%edi)
40b453:	e9 6d ff ff ff       	jmp    0x40b3c5
40b458:	33 c0                	xor    %eax,%eax
40b45a:	eb b2                	jmp    0x40b40e
40b45c:	6a 08                	push   $0x8
40b45e:	58                   	pop    %eax
40b45f:	eb c1                	jmp    0x40b422
40b461:	cc                   	int3
40b462:	cc                   	int3
40b463:	cc                   	int3
40b464:	cc                   	int3
40b465:	cc                   	int3
40b466:	cc                   	int3
40b467:	cc                   	int3
40b468:	cc                   	int3
40b469:	cc                   	int3
40b46a:	cc                   	int3
40b46b:	cc                   	int3
40b46c:	cc                   	int3
40b46d:	cc                   	int3
40b46e:	cc                   	int3
40b46f:	cc                   	int3
40b470:	55                   	push   %ebp
40b471:	8b ec                	mov    %esp,%ebp
40b473:	83 ec 28             	sub    $0x28,%esp
40b476:	53                   	push   %ebx
40b477:	56                   	push   %esi
40b478:	83 c8 ff             	or     $0xffffffff,%eax
40b47b:	57                   	push   %edi
40b47c:	66 89 45 f0          	mov    %ax,-0x10(%ebp)
40b480:	33 c0                	xor    %eax,%eax
40b482:	33 ff                	xor    %edi,%edi
40b484:	6a 64                	push   $0x64
40b486:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40b489:	89 7d f8             	mov    %edi,-0x8(%ebp)
40b48c:	66 89 45 f2          	mov    %ax,-0xe(%ebp)
40b490:	e8 7a b6 ff ff       	call   0x406b0f
40b495:	8b 4d 10             	mov    0x10(%ebp),%ecx
40b498:	e8 93 9a ff ff       	call   0x404f30
40b49d:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40b4a0:	66 39 3b             	cmp    %di,(%ebx)
40b4a3:	0f 84 f2 01 00 00    	je     0x40b69b
40b4a9:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40b4b0:	0f b7 04 7b          	movzwl (%ebx,%edi,2),%eax
40b4b4:	83 f8 20             	cmp    $0x20,%eax
40b4b7:	0f 84 91 00 00 00    	je     0x40b54e
40b4bd:	83 f8 09             	cmp    $0x9,%eax
40b4c0:	0f 84 88 00 00 00    	je     0x40b54e
40b4c6:	0f b7 04 7b          	movzwl (%ebx,%edi,2),%eax
40b4ca:	89 7d f8             	mov    %edi,-0x8(%ebp)
40b4cd:	66 85 c0             	test   %ax,%ax
40b4d0:	0f 84 c5 01 00 00    	je     0x40b69b
40b4d6:	8b f0                	mov    %eax,%esi
40b4d8:	66 89 7d f2          	mov    %di,-0xe(%ebp)
40b4dc:	83 fe 30             	cmp    $0x30,%esi
40b4df:	73 73                	jae    0x40b554
40b4e1:	83 fe 2e             	cmp    $0x2e,%esi
40b4e4:	74 73                	je     0x40b559
40b4e6:	83 fe 41             	cmp    $0x41,%esi
40b4e9:	0f 83 c6 00 00 00    	jae    0x40b5b5
40b4ef:	83 fe 61             	cmp    $0x61,%esi
40b4f2:	0f 83 da 01 00 00    	jae    0x40b6d2
40b4f8:	83 fe 5f             	cmp    $0x5f,%esi
40b4fb:	0f 84 da 01 00 00    	je     0x40b6db
40b501:	8b c6                	mov    %esi,%eax
40b503:	83 f8 24             	cmp    $0x24,%eax
40b506:	0f 84 b7 00 00 00    	je     0x40b5c3
40b50c:	83 f8 3d             	cmp    $0x3d,%eax
40b50f:	0f 84 02 02 00 00    	je     0x40b717
40b515:	83 e8 1a             	sub    $0x1a,%eax
40b518:	83 f8 44             	cmp    $0x44,%eax
40b51b:	0f 87 5a 84 06 00    	ja     0x47397b
40b521:	0f b6 80 40 ba 40 00 	movzbl 0x40ba40(%eax),%eax
40b528:	ff 24 85 f4 b9 40 00 	jmp    *0x40b9f4(,%eax,4)
40b52f:	6a 4f                	push   $0x4f
40b531:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40b534:	e8 c3 06 00 00       	call   0x40bbfc
40b539:	8b 4d 10             	mov    0x10(%ebp),%ecx
40b53c:	8d 45 e8             	lea    -0x18(%ebp),%eax
40b53f:	50                   	push   %eax
40b540:	e8 40 05 00 00       	call   0x40ba85
40b545:	47                   	inc    %edi
40b546:	89 7d f8             	mov    %edi,-0x8(%ebp)
40b549:	e9 42 01 00 00       	jmp    0x40b690
40b54e:	47                   	inc    %edi
40b54f:	e9 5c ff ff ff       	jmp    0x40b4b0
40b554:	83 fe 39             	cmp    $0x39,%esi
40b557:	77 88                	ja     0x40b4e1
40b559:	8b 7d 10             	mov    0x10(%ebp),%edi
40b55c:	b8 40 00 00 00       	mov    $0x40,%eax
40b561:	8b 4f 08             	mov    0x8(%edi),%ecx
40b564:	89 45 0c             	mov    %eax,0xc(%ebp)
40b567:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40b56a:	85 c9                	test   %ecx,%ecx
40b56c:	74 0e                	je     0x40b57c
40b56e:	8b 47 04             	mov    0x4(%edi),%eax
40b571:	8b 44 88 fc          	mov    -0x4(%eax,%ecx,4),%eax
40b575:	0f b7 40 08          	movzwl 0x8(%eax),%eax
40b579:	89 45 0c             	mov    %eax,0xc(%ebp)
40b57c:	50                   	push   %eax
40b57d:	8d 45 d8             	lea    -0x28(%ebp),%eax
40b580:	50                   	push   %eax
40b581:	8d 45 e8             	lea    -0x18(%ebp),%eax
40b584:	50                   	push   %eax
40b585:	8d 45 f8             	lea    -0x8(%ebp),%eax
40b588:	50                   	push   %eax
40b589:	53                   	push   %ebx
40b58a:	e8 84 0e 00 00       	call   0x40c413
40b58f:	3c 01                	cmp    $0x1,%al
40b591:	0f 85 c9 03 00 00    	jne    0x40b960
40b597:	66 83 7d 0c 4a       	cmpw   $0x4a,0xc(%ebp)
40b59c:	0f 84 5a 03 00 00    	je     0x40b8fc
40b5a2:	8d 45 e8             	lea    -0x18(%ebp),%eax
40b5a5:	50                   	push   %eax
40b5a6:	8b cf                	mov    %edi,%ecx
40b5a8:	e8 d8 04 00 00       	call   0x40ba85
40b5ad:	8b 7d f8             	mov    -0x8(%ebp),%edi
40b5b0:	e9 db 00 00 00       	jmp    0x40b690
40b5b5:	83 fe 5a             	cmp    $0x5a,%esi
40b5b8:	0f 87 31 ff ff ff    	ja     0x40b4ef
40b5be:	e9 18 01 00 00       	jmp    0x40b6db
40b5c3:	ff 75 10             	push   0x10(%ebp)
40b5c6:	e8 01 09 00 00       	call   0x40becc
40b5cb:	85 c0                	test   %eax,%eax
40b5cd:	0f 88 1a 04 00 00    	js     0x40b9ed
40b5d3:	83 fe 24             	cmp    $0x24,%esi
40b5d6:	0f 85 d8 02 00 00    	jne    0x40b8b4
40b5dc:	b8 33 00 00 00       	mov    $0x33,%eax
40b5e1:	50                   	push   %eax
40b5e2:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40b5e5:	e8 12 06 00 00       	call   0x40bbfc
40b5ea:	47                   	inc    %edi
40b5eb:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40b5ee:	89 7d f8             	mov    %edi,-0x8(%ebp)
40b5f1:	e8 d8 06 00 00       	call   0x40bcce
40b5f6:	0f b7 34 7b          	movzwl (%ebx,%edi,2),%esi
40b5fa:	66 83 fe 5a          	cmp    $0x5a,%si
40b5fe:	76 3f                	jbe    0x40b63f
40b600:	66 83 fe 61          	cmp    $0x61,%si
40b604:	72 41                	jb     0x40b647
40b606:	66 83 fe 7a          	cmp    $0x7a,%si
40b60a:	77 3b                	ja     0x40b647
40b60c:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40b60f:	8b 01                	mov    (%ecx),%eax
40b611:	83 f8 01             	cmp    $0x1,%eax
40b614:	0f 8f ef 82 06 00    	jg     0x473909
40b61a:	8b 45 dc             	mov    -0x24(%ebp),%eax
40b61d:	40                   	inc    %eax
40b61e:	50                   	push   %eax
40b61f:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40b622:	e8 5e 05 00 00       	call   0x40bb85
40b627:	8b 4d d8             	mov    -0x28(%ebp),%ecx
40b62a:	8b 45 dc             	mov    -0x24(%ebp),%eax
40b62d:	40                   	inc    %eax
40b62e:	66 89 74 41 fe       	mov    %si,-0x2(%ecx,%eax,2)
40b633:	33 d2                	xor    %edx,%edx
40b635:	89 45 dc             	mov    %eax,-0x24(%ebp)
40b638:	66 89 14 41          	mov    %dx,(%ecx,%eax,2)
40b63c:	47                   	inc    %edi
40b63d:	eb b7                	jmp    0x40b5f6
40b63f:	66 83 fe 41          	cmp    $0x41,%si
40b643:	73 c7                	jae    0x40b60c
40b645:	eb b9                	jmp    0x40b600
40b647:	66 83 fe 30          	cmp    $0x30,%si
40b64b:	0f 83 b7 00 00 00    	jae    0x40b708
40b651:	66 83 fe 5f          	cmp    $0x5f,%si
40b655:	74 b5                	je     0x40b60c
40b657:	83 7d dc 00          	cmpl   $0x0,-0x24(%ebp)
40b65b:	89 7d f8             	mov    %edi,-0x8(%ebp)
40b65e:	0f 84 80 03 00 00    	je     0x40b9e4
40b664:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40b667:	e8 8e 07 00 00       	call   0x40bdfa
40b66c:	ff 75 dc             	push   -0x24(%ebp)
40b66f:	ff 75 d8             	push   -0x28(%ebp)
40b672:	ff 15 60 d6 48 00    	call   *0x48d660
40b678:	8d 45 d8             	lea    -0x28(%ebp),%eax
40b67b:	50                   	push   %eax
40b67c:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40b67f:	e8 f0 05 00 00       	call   0x40bc74
40b684:	8b 4d 10             	mov    0x10(%ebp),%ecx
40b687:	8d 45 e8             	lea    -0x18(%ebp),%eax
40b68a:	50                   	push   %eax
40b68b:	e8 f5 03 00 00       	call   0x40ba85
40b690:	66 83 3c 7b 00       	cmpw   $0x0,(%ebx,%edi,2)
40b695:	0f 85 15 fe ff ff    	jne    0x40b4b0
40b69b:	6a 7f                	push   $0x7f
40b69d:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40b6a0:	e8 57 05 00 00       	call   0x40bbfc
40b6a5:	8b 4d 10             	mov    0x10(%ebp),%ecx
40b6a8:	8d 45 e8             	lea    -0x18(%ebp),%eax
40b6ab:	50                   	push   %eax
40b6ac:	66 89 7d f2          	mov    %di,-0xe(%ebp)
40b6b0:	e8 d0 03 00 00       	call   0x40ba85
40b6b5:	33 f6                	xor    %esi,%esi
40b6b7:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40b6ba:	e8 78 14 00 00       	call   0x40cb37
40b6bf:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40b6c2:	e8 2e 22 01 00       	call   0x41d8f5
40b6c7:	5f                   	pop    %edi
40b6c8:	8b c6                	mov    %esi,%eax
40b6ca:	5e                   	pop    %esi
40b6cb:	5b                   	pop    %ebx
40b6cc:	8b e5                	mov    %ebp,%esp
40b6ce:	5d                   	pop    %ebp
40b6cf:	c2 0c 00             	ret    $0xc
40b6d2:	83 fe 7a             	cmp    $0x7a,%esi
40b6d5:	0f 87 1d fe ff ff    	ja     0x40b4f8
40b6db:	8d 45 d8             	lea    -0x28(%ebp),%eax
40b6de:	50                   	push   %eax
40b6df:	8d 45 e8             	lea    -0x18(%ebp),%eax
40b6e2:	50                   	push   %eax
40b6e3:	8d 45 f8             	lea    -0x8(%ebp),%eax
40b6e6:	50                   	push   %eax
40b6e7:	53                   	push   %ebx
40b6e8:	e8 b8 0f 00 00       	call   0x40c6a5
40b6ed:	83 7d e8 ff          	cmpl   $0xffffffff,-0x18(%ebp)
40b6f1:	0f 84 6c 82 06 00    	je     0x473963
40b6f7:	8b 4d 10             	mov    0x10(%ebp),%ecx
40b6fa:	8d 45 e8             	lea    -0x18(%ebp),%eax
40b6fd:	50                   	push   %eax
40b6fe:	e8 82 03 00 00       	call   0x40ba85
40b703:	8b 7d f8             	mov    -0x8(%ebp),%edi
40b706:	eb 88                	jmp    0x40b690
40b708:	66 83 fe 39          	cmp    $0x39,%si
40b70c:	0f 87 3f ff ff ff    	ja     0x40b651
40b712:	e9 f5 fe ff ff       	jmp    0x40b60c
40b717:	47                   	inc    %edi
40b718:	89 7d f8             	mov    %edi,-0x8(%ebp)
40b71b:	66 83 3c 7b 3d       	cmpw   $0x3d,(%ebx,%edi,2)
40b720:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40b723:	0f 84 d0 81 06 00    	je     0x4738f9
40b729:	6a 41                	push   $0x41
40b72b:	e8 cc 04 00 00       	call   0x40bbfc
40b730:	e9 4f ff ff ff       	jmp    0x40b684
40b735:	6a 4e                	push   $0x4e
40b737:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40b73a:	e8 bd 04 00 00       	call   0x40bbfc
40b73f:	8b 4d 10             	mov    0x10(%ebp),%ecx
40b742:	8d 45 e8             	lea    -0x18(%ebp),%eax
40b745:	50                   	push   %eax
40b746:	e8 3a 03 00 00       	call   0x40ba85
40b74b:	47                   	inc    %edi
40b74c:	89 7d f8             	mov    %edi,-0x8(%ebp)
40b74f:	e9 3c ff ff ff       	jmp    0x40b690
40b754:	6a 47                	push   $0x47
40b756:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40b759:	e8 9e 04 00 00       	call   0x40bbfc
40b75e:	8b 4d 10             	mov    0x10(%ebp),%ecx
40b761:	8d 45 e8             	lea    -0x18(%ebp),%eax
40b764:	50                   	push   %eax
40b765:	e8 1b 03 00 00       	call   0x40ba85
40b76a:	47                   	inc    %edi
40b76b:	89 7d f8             	mov    %edi,-0x8(%ebp)
40b76e:	e9 1d ff ff ff       	jmp    0x40b690
40b773:	6a 48                	push   $0x48
40b775:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40b778:	e8 7f 04 00 00       	call   0x40bbfc
40b77d:	8b 4d 10             	mov    0x10(%ebp),%ecx
40b780:	8d 45 e8             	lea    -0x18(%ebp),%eax
40b783:	50                   	push   %eax
40b784:	e8 fc 02 00 00       	call   0x40ba85
40b789:	47                   	inc    %edi
40b78a:	89 7d f8             	mov    %edi,-0x8(%ebp)
40b78d:	e9 fe fe ff ff       	jmp    0x40b690
40b792:	6a 40                	push   $0x40
40b794:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40b797:	e8 60 04 00 00       	call   0x40bbfc
40b79c:	8b 4d 10             	mov    0x10(%ebp),%ecx
40b79f:	8d 45 e8             	lea    -0x18(%ebp),%eax
40b7a2:	50                   	push   %eax
40b7a3:	e8 dd 02 00 00       	call   0x40ba85
40b7a8:	47                   	inc    %edi
40b7a9:	89 7d f8             	mov    %edi,-0x8(%ebp)
40b7ac:	e9 df fe ff ff       	jmp    0x40b690
40b7b1:	8d 45 d8             	lea    -0x28(%ebp),%eax
40b7b4:	50                   	push   %eax
40b7b5:	8d 45 f8             	lea    -0x8(%ebp),%eax
40b7b8:	50                   	push   %eax
40b7b9:	53                   	push   %ebx
40b7ba:	ff 75 08             	push   0x8(%ebp)
40b7bd:	e8 6a 0e 00 00       	call   0x40c62c
40b7c2:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40b7c5:	85 c0                	test   %eax,%eax
40b7c7:	0f 88 bf 81 06 00    	js     0x47398c
40b7cd:	6a 36                	push   $0x36
40b7cf:	e8 28 04 00 00       	call   0x40bbfc
40b7d4:	8d 45 d8             	lea    -0x28(%ebp),%eax
40b7d7:	50                   	push   %eax
40b7d8:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40b7db:	e8 94 04 00 00       	call   0x40bc74
40b7e0:	8b 4d 10             	mov    0x10(%ebp),%ecx