40a2c8:	e9 89 fe ff ff       	jmp    0x40a156
40a2cd:	83 c7 02             	add    $0x2,%edi
40a2d0:	e9 ce fd ff ff       	jmp    0x40a0a3
40a2d5:	8b 4d 10             	mov    0x10(%ebp),%ecx
40a2d8:	e9 c6 fd ff ff       	jmp    0x40a0a3
40a2dd:	83 fe f4             	cmp    $0xfffffff4,%esi
40a2e0:	0f 85 74 fd ff ff    	jne    0x40a05a
40a2e6:	e9 bc fe ff ff       	jmp    0x40a1a7
40a2eb:	33 f6                	xor    %esi,%esi
40a2ed:	5f                   	pop    %edi
40a2ee:	8b c6                	mov    %esi,%eax
40a2f0:	5e                   	pop    %esi
40a2f1:	5b                   	pop    %ebx
40a2f2:	8b e5                	mov    %ebp,%esp
40a2f4:	5d                   	pop    %ebp
40a2f5:	c3                   	ret
40a2f6:	cc                   	int3
40a2f7:	cc                   	int3
40a2f8:	cc                   	int3
40a2f9:	cc                   	int3
40a2fa:	cc                   	int3
40a2fb:	cc                   	int3
40a2fc:	cc                   	int3
40a2fd:	cc                   	int3
40a2fe:	cc                   	int3
40a2ff:	cc                   	int3
40a300:	55                   	push   %ebp
40a301:	8b ec                	mov    %esp,%ebp
40a303:	81 ec 58 01 00 00    	sub    $0x158,%esp
40a309:	53                   	push   %ebx
40a30a:	56                   	push   %esi
40a30b:	57                   	push   %edi
40a30c:	8b fa                	mov    %edx,%edi
40a30e:	8b c1                	mov    %ecx,%eax
40a310:	89 7d cc             	mov    %edi,-0x34(%ebp)
40a313:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a316:	85 ff                	test   %edi,%edi
40a318:	0f 84 4c 8f 07 00    	je     0x48326a
40a31e:	8b 5d 10             	mov    0x10(%ebp),%ebx
40a321:	c7 45 bc 00 00 00 00 	movl   $0x0,-0x44(%ebp)
40a328:	8b 03                	mov    (%ebx),%eax
40a32a:	8b 4b 50             	mov    0x50(%ebx),%ecx
40a32d:	c7 45 c4 00 00 00 00 	movl   $0x0,-0x3c(%ebp)
40a334:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40a337:	3b 43 04             	cmp    0x4(%ebx),%eax
40a33a:	0f 83 39 15 08 00    	jae    0x48b879
40a340:	40                   	inc    %eax
40a341:	89 03                	mov    %eax,(%ebx)
40a343:	8b 45 18             	mov    0x18(%ebp),%eax
40a346:	3b 43 08             	cmp    0x8(%ebx),%eax
40a349:	0f 83 20 15 08 00    	jae    0x48b86f
40a34f:	83 bb 9c 00 00 00 02 	cmpl   $0x2,0x9c(%ebx)
40a356:	0f 84 3f 8f 07 00    	je     0x48329b
40a35c:	8d 64 24 00          	lea    0x0(%esp),%esp
40a360:	0f b7 0f             	movzwl (%edi),%ecx
40a363:	33 d2                	xor    %edx,%edx
40a365:	8b f1                	mov    %ecx,%esi
40a367:	c7 45 d0 00 00 00 00 	movl   $0x0,-0x30(%ebp)
40a36e:	89 55 c8             	mov    %edx,-0x38(%ebp)
40a371:	81 fe a1 00 00 00    	cmp    $0xa1,%esi
40a377:	0f 87 e8 14 08 00    	ja     0x48b865
40a37d:	0f b6 86 7c ae 40 00 	movzbl 0x40ae7c(%esi),%eax
40a384:	ff 24 85 30 ad 40 00 	jmp    *0x40ad30(,%eax,4)
40a38b:	eb 03                	jmp    0x40a390
40a38d:	8d 49 00             	lea    0x0(%ecx),%ecx
40a390:	81 fe 88 00 00 00    	cmp    $0x88,%esi
40a396:	0f 83 9c f5 07 00    	jae    0x489938
40a39c:	81 fe 81 00 00 00    	cmp    $0x81,%esi
40a3a2:	0f 84 90 f5 07 00    	je     0x489938
40a3a8:	83 7b 70 00          	cmpl   $0x0,0x70(%ebx)
40a3ac:	0f 85 a4 08 00 00    	jne    0x40ac56
40a3b2:	0f b7 47 02          	movzwl 0x2(%edi),%eax
40a3b6:	66 83 3c 47 77       	cmpw   $0x77,(%edi,%eax,2)
40a3bb:	0f 84 95 08 00 00    	je     0x40ac56
40a3c1:	0f b7 07             	movzwl (%edi),%eax
40a3c4:	0f b6 80 60 e5 49 00 	movzbl 0x49e560(%eax),%eax
40a3cb:	8d 3c 47             	lea    (%edi,%eax,2),%edi
40a3ce:	89 7d cc             	mov    %edi,-0x34(%ebp)
40a3d1:	8b 43 50             	mov    0x50(%ebx),%eax
40a3d4:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40a3d7:	8b 03                	mov    (%ebx),%eax
40a3d9:	3b 43 04             	cmp    0x4(%ebx),%eax
40a3dc:	0f 82 5e ff ff ff    	jb     0x40a340
40a3e2:	e9 92 14 08 00       	jmp    0x48b879
40a3e7:	0f b7 47 02          	movzwl 0x2(%edi),%eax
40a3eb:	03 c0                	add    %eax,%eax
40a3ed:	8b f7                	mov    %edi,%esi
40a3ef:	2b f0                	sub    %eax,%esi
40a3f1:	b9 88 00 00 00       	mov    $0x88,%ecx
40a3f6:	0f b7 06             	movzwl (%esi),%eax
40a3f9:	89 75 e0             	mov    %esi,-0x20(%ebp)
40a3fc:	66 3b c1             	cmp    %cx,%ax
40a3ff:	0f 83 bd 9a 07 00    	jae    0x483ec2
40a405:	b9 81 00 00 00       	mov    $0x81,%ecx
40a40a:	66 3b c1             	cmp    %cx,%ax
40a40d:	0f 84 af 9a 07 00    	je     0x483ec2
40a413:	33 c9                	xor    %ecx,%ecx
40a415:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40a418:	83 f8 7d             	cmp    $0x7d,%eax
40a41b:	72 0e                	jb     0x40a42b
40a41d:	ba 80 00 00 00       	mov    $0x80,%edx
40a422:	66 3b c2             	cmp    %dx,%ax
40a425:	0f 86 a2 f6 07 00    	jbe    0x489acd
40a42b:	ba 82 00 00 00       	mov    $0x82,%edx
40a430:	66 3b c2             	cmp    %dx,%ax
40a433:	0f 84 94 f6 07 00    	je     0x489acd
40a439:	ba 85 00 00 00       	mov    $0x85,%edx
40a43e:	66 3b c2             	cmp    %dx,%ax
40a441:	0f 84 8e 03 00 00    	je     0x40a7d5
40a447:	ba 8a 00 00 00       	mov    $0x8a,%edx
40a44c:	66 3b c2             	cmp    %dx,%ax
40a44f:	0f 84 80 03 00 00    	je     0x40a7d5
40a455:	ba 86 00 00 00       	mov    $0x86,%edx
40a45a:	66 3b c2             	cmp    %dx,%ax
40a45d:	0f 84 72 03 00 00    	je     0x40a7d5
40a463:	ba 8b 00 00 00       	mov    $0x8b,%edx
40a468:	66 3b c2             	cmp    %dx,%ax
40a46b:	0f 84 64 03 00 00    	je     0x40a7d5
40a471:	8b 55 0c             	mov    0xc(%ebp),%edx
40a474:	66 83 3f 78          	cmpw   $0x78,(%edi)
40a478:	0f 85 ba 9a 07 00    	jne    0x483f38
40a47e:	b8 81 00 00 00       	mov    $0x81,%eax
40a483:	66 39 06             	cmp    %ax,(%esi)
40a486:	0f 84 0e f6 07 00    	je     0x489a9a
40a48c:	83 c7 04             	add    $0x4,%edi
40a48f:	89 7d cc             	mov    %edi,-0x34(%ebp)
40a492:	e9 c9 fe ff ff       	jmp    0x40a360
40a497:	8b 55 f8             	mov    -0x8(%ebp),%edx
40a49a:	8b 7d 08             	mov    0x8(%ebp),%edi
40a49d:	3b d7                	cmp    %edi,%edx
40a49f:	0f 84 70 13 08 00    	je     0x48b815
40a4a5:	8b 45 0c             	mov    0xc(%ebp),%eax
40a4a8:	89 93 84 00 00 00    	mov    %edx,0x84(%ebx)
40a4ae:	89 83 90 00 00 00    	mov    %eax,0x90(%ebx)
40a4b4:	89 bb 80 00 00 00    	mov    %edi,0x80(%ebx)
40a4ba:	85 f6                	test   %esi,%esi
40a4bc:	0f 85 99 13 08 00    	jne    0x48b85b
40a4c2:	b8 01 00 00 00       	mov    $0x1,%eax
40a4c7:	5f                   	pop    %edi
40a4c8:	5e                   	pop    %esi
40a4c9:	5b                   	pop    %ebx
40a4ca:	8b e5                	mov    %ebp,%esp
40a4cc:	5d                   	pop    %ebp
40a4cd:	c3                   	ret
40a4ce:	0f b7 4f 22          	movzwl 0x22(%edi),%ecx
40a4d2:	8d 47 02             	lea    0x2(%edi),%eax
40a4d5:	83 c7 22             	add    $0x22,%edi
40a4d8:	89 45 c8             	mov    %eax,-0x38(%ebp)
40a4db:	8b c1                	mov    %ecx,%eax
40a4dd:	89 7d cc             	mov    %edi,-0x34(%ebp)
40a4e0:	89 45 f4             	mov    %eax,-0xc(%ebp)
40a4e3:	83 f8 6d             	cmp    $0x6d,%eax
40a4e6:	0f 8e c2 06 00 00    	jle    0x40abae
40a4ec:	b8 01 00 00 00       	mov    $0x1,%eax
40a4f1:	c7 45 e8 01 00 00 00 	movl   $0x1,-0x18(%ebp)
40a4f8:	89 45 d8             	mov    %eax,-0x28(%ebp)
40a4fb:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40a4fe:	c7 45 ec 01 00 00 00 	movl   $0x1,-0x14(%ebp)
40a505:	85 c9                	test   %ecx,%ecx
40a507:	0f 84 57 ac 07 00    	je     0x485164
40a50d:	83 f8 01             	cmp    $0x1,%eax
40a510:	0f 8c f6 06 00 00    	jl     0x40ac0c
40a516:	8b 4b 7c             	mov    0x7c(%ebx),%ecx
40a519:	8d a4 24 00 00 00 00 	lea    0x0(%esp),%esp
40a520:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a523:	3b c1                	cmp    %ecx,%eax
40a525:	0f 83 7a 06 00 00    	jae    0x40aba5
40a52b:	0f b7 08             	movzwl (%eax),%ecx
40a52e:	83 c0 02             	add    $0x2,%eax
40a531:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a534:	8b c1                	mov    %ecx,%eax
40a536:	25 00 fc 00 00       	and    $0xfc00,%eax
40a53b:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
40a53e:	3d 00 d8 00 00       	cmp    $0xd800,%eax
40a543:	0f 84 e5 ab 07 00    	je     0x48512e
40a549:	81 f9 ff 00 00 00    	cmp    $0xff,%ecx
40a54f:	0f 87 01 ac 07 00    	ja     0x485156
40a555:	8b 5d c8             	mov    -0x38(%ebp),%ebx
40a558:	83 e1 07             	and    $0x7,%ecx
40a55b:	b8 01 00 00 00       	mov    $0x1,%eax
40a560:	d3 e0                	shl    %cl,%eax
40a562:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
40a565:	c1 e9 03             	shr    $0x3,%ecx
40a568:	84 04 19             	test   %al,(%ecx,%ebx,1)
40a56b:	8b 5d 10             	mov    0x10(%ebp),%ebx
40a56e:	0f 85 0d 01 00 00    	jne    0x40a681
40a574:	33 c0                	xor    %eax,%eax
40a576:	5f                   	pop    %edi
40a577:	5e                   	pop    %esi
40a578:	5b                   	pop    %ebx
40a579:	8b e5                	mov    %ebp,%esp
40a57b:	5d                   	pop    %ebp
40a57c:	c3                   	ret
40a57d:	8b 73 7c             	mov    0x7c(%ebx),%esi
40a580:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a583:	89 75 ec             	mov    %esi,-0x14(%ebp)
40a586:	3b c6                	cmp    %esi,%eax
40a588:	0f 83 06 06 00 00    	jae    0x40ab94
40a58e:	0f b7 08             	movzwl (%eax),%ecx
40a591:	83 c0 02             	add    $0x2,%eax
40a594:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a597:	39 55 e4             	cmp    %edx,-0x1c(%ebp)
40a59a:	74 12                	je     0x40a5ae
40a59c:	8b c1                	mov    %ecx,%eax
40a59e:	25 00 fc 00 00       	and    $0xfc00,%eax
40a5a3:	3d 00 d8 00 00       	cmp    $0xd800,%eax
40a5a8:	0f 84 ba a8 07 00    	je     0x484e68
40a5ae:	8b c1                	mov    %ecx,%eax
40a5b0:	99                   	cltd
40a5b1:	83 e2 7f             	and    $0x7f,%edx
40a5b4:	03 c2                	add    %edx,%eax
40a5b6:	c1 f8 07             	sar    $0x7,%eax
40a5b9:	0f b6 80 a0 c4 4a 00 	movzbl 0x4ac4a0(%eax),%eax
40a5c0:	c1 e0 07             	shl    $0x7,%eax
40a5c3:	81 e1 7f 00 00 80    	and    $0x8000007f,%ecx
40a5c9:	79 05                	jns    0x40a5d0
40a5cb:	49                   	dec    %ecx
40a5cc:	83 c9 80             	or     $0xffffff80,%ecx
40a5cf:	41                   	inc    %ecx
40a5d0:	03 c1                	add    %ecx,%eax
40a5d2:	0f b7 04 45 08 e6 49 	movzwl 0x49e608(,%eax,2),%eax
40a5d9:	00
40a5da:	0f b6 04 c5 0a b1 4a 	movzbl 0x4ab10a(,%eax,8),%eax
40a5e1:	00
40a5e2:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40a5e5:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a5e8:	3b c6                	cmp    %esi,%eax
40a5ea:	73 7d                	jae    0x40a669
40a5ec:	8b 7d e4             	mov    -0x1c(%ebp),%edi
40a5ef:	8b d8                	mov    %eax,%ebx
40a5f1:	0f b7 0b             	movzwl (%ebx),%ecx
40a5f4:	be 01 00 00 00       	mov    $0x1,%esi
40a5f9:	85 ff                	test   %edi,%edi
40a5fb:	74 12                	je     0x40a60f
40a5fd:	8b c1                	mov    %ecx,%eax
40a5ff:	25 00 fc 00 00       	and    $0xfc00,%eax
40a604:	3d 00 d8 00 00       	cmp    $0xd800,%eax
40a609:	0f 84 7e a8 07 00    	je     0x484e8d
40a60f:	8b c1                	mov    %ecx,%eax
40a611:	99                   	cltd
40a612:	83 e2 7f             	and    $0x7f,%edx
40a615:	03 c2                	add    %edx,%eax
40a617:	c1 f8 07             	sar    $0x7,%eax
40a61a:	0f b6 80 a0 c4 4a 00 	movzbl 0x4ac4a0(%eax),%eax
40a621:	c1 e0 07             	shl    $0x7,%eax
40a624:	81 e1 7f 00 00 80    	and    $0x8000007f,%ecx
40a62a:	79 05                	jns    0x40a631
40a62c:	49                   	dec    %ecx
40a62d:	83 c9 80             	or     $0xffffff80,%ecx
40a630:	41                   	inc    %ecx
40a631:	8b 55 d4             	mov    -0x2c(%ebp),%edx
40a634:	03 c1                	add    %ecx,%eax
40a636:	0f b7 04 45 08 e6 49 	movzwl 0x49e608(,%eax,2),%eax
40a63d:	00
40a63e:	0f b6 0c c5 0a b1 4a 	movzbl 0x4ab10a(,%eax,8),%ecx
40a645:	00
40a646:	b8 01 00 00 00       	mov    $0x1,%eax
40a64b:	d3 e0                	shl    %cl,%eax
40a64d:	85 04 95 2c e5 49 00 	test   %eax,0x49e52c(,%edx,4)
40a654:	0f 85 f3 00 00 00    	jne    0x40a74d
40a65a:	8b 75 ec             	mov    -0x14(%ebp),%esi
40a65d:	8b 7d cc             	mov    -0x34(%ebp),%edi
40a660:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40a663:	8b 5d 10             	mov    0x10(%ebp),%ebx
40a666:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a669:	83 bb 8c 00 00 00 00 	cmpl   $0x0,0x8c(%ebx)
40a670:	0f 85 3b a8 07 00    	jne    0x484eb1
40a676:	83 c7 02             	add    $0x2,%edi
40a679:	89 7d cc             	mov    %edi,-0x34(%ebp)
40a67c:	e9 df fc ff ff       	jmp    0x40a360
40a681:	8b 45 ec             	mov    -0x14(%ebp),%eax
40a684:	8b 4b 7c             	mov    0x7c(%ebx),%ecx
40a687:	40                   	inc    %eax
40a688:	89 45 ec             	mov    %eax,-0x14(%ebp)
40a68b:	3b 45 d8             	cmp    -0x28(%ebp),%eax
40a68e:	0f 8e 8c fe ff ff    	jle    0x40a520
40a694:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a697:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40a69a:	8b 5d e8             	mov    -0x18(%ebp),%ebx
40a69d:	39 5d d8             	cmp    %ebx,-0x28(%ebp)
40a6a0:	8b 5d 10             	mov    0x10(%ebp),%ebx
40a6a3:	0f 84 b7 fc ff ff    	je     0x40a360
40a6a9:	85 d2                	test   %edx,%edx
40a6ab:	0f 85 bd f5 07 00    	jne    0x489c6e
40a6b1:	8b 55 d8             	mov    -0x28(%ebp),%edx
40a6b4:	89 45 dc             	mov    %eax,-0x24(%ebp)
40a6b7:	85 c9                	test   %ecx,%ecx
40a6b9:	0f 84 81 ab 07 00    	je     0x485240
40a6bf:	3b 55 e8             	cmp    -0x18(%ebp),%edx
40a6c2:	7d 54                	jge    0x40a718
40a6c4:	c7 45 d4 01 00 00 00 	movl   $0x1,-0x2c(%ebp)
40a6cb:	3b 43 7c             	cmp    0x7c(%ebx),%eax
40a6ce:	0f 83 3a ab 07 00    	jae    0x48520e
40a6d4:	0f b7 08             	movzwl (%eax),%ecx
40a6d7:	8b c1                	mov    %ecx,%eax
40a6d9:	25 00 fc 00 00       	and    $0xfc00,%eax
40a6de:	89 4d e0             	mov    %ecx,-0x20(%ebp)
40a6e1:	3d 00 d8 00 00       	cmp    $0xd800,%eax
40a6e6:	0f 84 e8 aa 07 00    	je     0x4851d4
40a6ec:	81 f9 ff 00 00 00    	cmp    $0xff,%ecx
40a6f2:	0f 87 08 ab 07 00    	ja     0x485200
40a6f8:	c1 6d e0 03          	shrl   $0x3,-0x20(%ebp)
40a6fc:	8b 5d e0             	mov    -0x20(%ebp),%ebx
40a6ff:	83 e1 07             	and    $0x7,%ecx
40a702:	b8 01 00 00 00       	mov    $0x1,%eax
40a707:	d3 e0                	shl    %cl,%eax
40a709:	8b 4d c8             	mov    -0x38(%ebp),%ecx
40a70c:	84 04 0b             	test   %al,(%ebx,%ecx,1)
40a70f:	8b 5d 10             	mov    0x10(%ebp),%ebx
40a712:	0f 85 c1 05 00 00    	jne    0x40acd9
40a718:	83 7d d0 00          	cmpl   $0x0,-0x30(%ebp)
40a71c:	0f 85 3e fc ff ff    	jne    0x40a360
40a722:	8b 45 18             	mov    0x18(%ebp),%eax
40a725:	8b 75 f8             	mov    -0x8(%ebp),%esi
40a728:	40                   	inc    %eax
40a729:	50                   	push   %eax
40a72a:	ff 75 14             	push   0x14(%ebp)
40a72d:	8b d7                	mov    %edi,%edx
40a72f:	53                   	push   %ebx
40a730:	ff 75 0c             	push   0xc(%ebp)
40a733:	8b ce                	mov    %esi,%ecx
40a735:	ff 75 08             	push   0x8(%ebp)
40a738:	e8 c3 fb ff ff       	call   0x40a300
40a73d:	83 c4 14             	add    $0x14,%esp
40a740:	85 c0                	test   %eax,%eax
40a742:	0f 85 7f fd ff ff    	jne    0x40a4c7
40a748:	e9 d7 f4 07 00       	jmp    0x489c24
40a74d:	8d 1c 73             	lea    (%ebx,%esi,2),%ebx
40a750:	8b 75 ec             	mov    -0x14(%ebp),%esi
40a753:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
40a756:	3b de                	cmp    %esi,%ebx
40a758:	0f 82 93 fe ff ff    	jb     0x40a5f1
40a75e:	e9 fa fe ff ff       	jmp    0x40a65d
40a763:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a766:	3b 43 7c             	cmp    0x7c(%ebx),%eax
40a769:	0f 83 25 04 00 00    	jae    0x40ab94
40a76f:	39 55 e4             	cmp    %edx,-0x1c(%ebp)
40a772:	0f 84 e2 ae 07 00    	je     0x48565a
40a778:	0f b7 77 02          	movzwl 0x2(%edi),%esi
40a77c:	83 c7 02             	add    $0x2,%edi
40a77f:	8b c6                	mov    %esi,%eax
40a781:	25 00 fc 00 00       	and    $0xfc00,%eax
40a786:	ba 01 00 00 00       	mov    $0x1,%edx
40a78b:	3d 00 d8 00 00       	cmp    $0xd800,%eax
40a790:	0f 84 14 ae 07 00    	je     0x4855aa
40a796:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a799:	0f b7 08             	movzwl (%eax),%ecx
40a79c:	81 fe 80 00 00 00    	cmp    $0x80,%esi
40a7a2:	0f 83 26 ae 07 00    	jae    0x4855ce
40a7a8:	81 f9 ff 00 00 00    	cmp    $0xff,%ecx