40a032:	8b 45 18             	mov    0x18(%ebp),%eax
40a035:	0f 8e 23 24 08 00    	jle    0x48c45e
40a03b:	83 7d 1c 02          	cmpl   $0x2,0x1c(%ebp)
40a03f:	0f 8c a6 02 00 00    	jl     0x40a2eb
40a045:	8b 4d 88             	mov    -0x78(%ebp),%ecx
40a048:	2b 4d 80             	sub    -0x80(%ebp),%ecx
40a04b:	d1 f9                	sar    $1,%ecx
40a04d:	89 08                	mov    %ecx,(%eax)
40a04f:	8b 4d 8c             	mov    -0x74(%ebp),%ecx
40a052:	2b 4d 80             	sub    -0x80(%ebp),%ecx
40a055:	d1 f9                	sar    $1,%ecx
40a057:	89 48 04             	mov    %ecx,0x4(%eax)
40a05a:	8b c6                	mov    %esi,%eax
40a05c:	5f                   	pop    %edi
40a05d:	5e                   	pop    %esi
40a05e:	5b                   	pop    %ebx
40a05f:	8b e5                	mov    %ebp,%esp
40a061:	5d                   	pop    %ebp
40a062:	c3                   	ret
40a063:	0f 85 51 22 08 00    	jne    0x48c2ba
40a069:	8b 55 fc             	mov    -0x4(%ebp),%edx
40a06c:	83 7d f4 00          	cmpl   $0x0,-0xc(%ebp)
40a070:	c7 85 34 ff ff ff 00 	movl   $0x0,-0xcc(%ebp)
40a077:	00 00 00
40a07a:	8d 7a 02             	lea    0x2(%edx),%edi
40a07d:	0f 84 52 02 00 00    	je     0x40a2d5
40a083:	8b 4d 10             	mov    0x10(%ebp),%ecx
40a086:	3b f9                	cmp    %ecx,%edi
40a088:	73 19                	jae    0x40a0a3
40a08a:	66 8b 07             	mov    (%edi),%ax
40a08d:	be 00 fc 00 00       	mov    $0xfc00,%esi
40a092:	66 23 c6             	and    %si,%ax
40a095:	be 00 dc 00 00       	mov    $0xdc00,%esi
40a09a:	66 3b c6             	cmp    %si,%ax
40a09d:	0f 84 2a 02 00 00    	je     0x40a2cd
40a0a3:	8b 85 20 ff ff ff    	mov    -0xe0(%ebp),%eax
40a0a9:	33 f6                	xor    %esi,%esi
40a0ab:	39 75 d0             	cmp    %esi,-0x30(%ebp)
40a0ae:	0f 85 45 22 08 00    	jne    0x48c2f9
40a0b4:	8b 95 24 ff ff ff    	mov    -0xdc(%ebp),%edx
40a0ba:	89 7d fc             	mov    %edi,-0x4(%ebp)
40a0bd:	3b f9                	cmp    %ecx,%edi
40a0bf:	0f 87 d0 00 00 00    	ja     0x40a195
40a0c5:	39 75 c8             	cmp    %esi,-0x38(%ebp)
40a0c8:	0f 85 c7 00 00 00    	jne    0x40a195
40a0ce:	3b bd fc fe ff ff    	cmp    -0x104(%ebp),%edi
40a0d4:	76 07                	jbe    0x40a0dd
40a0d6:	66 83 7f fe 0d       	cmpw   $0xd,-0x2(%edi)
40a0db:	74 08                	je     0x40a0e5
40a0dd:	89 75 b8             	mov    %esi,-0x48(%ebp)
40a0e0:	e9 70 fe ff ff       	jmp    0x409f55
40a0e5:	3b f9                	cmp    %ecx,%edi
40a0e7:	73 f4                	jae    0x40a0dd
40a0e9:	66 83 3f 0a          	cmpw   $0xa,(%edi)
40a0ed:	75 ee                	jne    0x40a0dd
40a0ef:	f7 43 0c 00 08 00 00 	testl  $0x800,0xc(%ebx)
40a0f6:	75 e5                	jne    0x40a0dd
40a0f8:	83 f8 02             	cmp    $0x2,%eax
40a0fb:	0f 85 88 22 08 00    	jne    0x48c389
40a101:	8d 47 02             	lea    0x2(%edi),%eax
40a104:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a107:	89 75 b8             	mov    %esi,-0x48(%ebp)
40a10a:	e9 46 fe ff ff       	jmp    0x409f55
40a10f:	90                   	nop
40a110:	c7 01 ff ff ff ff    	movl   $0xffffffff,(%ecx)
40a116:	83 e9 04             	sub    $0x4,%ecx
40a119:	3b ca                	cmp    %edx,%ecx
40a11b:	73 f3                	jae    0x40a110
40a11d:	8b b5 14 ff ff ff    	mov    -0xec(%ebp),%esi
40a123:	e9 f5 fd ff ff       	jmp    0x409f1d
40a128:	83 7d 94 00          	cmpl   $0x0,-0x6c(%ebp)
40a12c:	0f 85 68 fe ff ff    	jne    0x409f9a
40a132:	8b 55 fc             	mov    -0x4(%ebp),%edx
40a135:	8b c1                	mov    %ecx,%eax
40a137:	2b c2                	sub    %edx,%eax
40a139:	83 e0 fe             	and    $0xfffffffe,%eax
40a13c:	3d d0 07 00 00       	cmp    $0x7d0,%eax
40a141:	0f 8d 53 fe ff ff    	jge    0x409f9a
40a147:	83 7d dc 00          	cmpl   $0x0,-0x24(%ebp)
40a14b:	0f 84 75 01 00 00    	je     0x40a2c6
40a151:	b8 01 00 00 00       	mov    $0x1,%eax
40a156:	8d 14 42             	lea    (%edx,%eax,2),%edx
40a159:	3b 95 f8 fe ff ff    	cmp    -0x108(%ebp),%edx
40a15f:	0f 86 35 fe ff ff    	jbe    0x409f9a
40a165:	8b b5 04 ff ff ff    	mov    -0xfc(%ebp),%esi
40a16b:	8b 45 e8             	mov    -0x18(%ebp),%eax
40a16e:	66 3b f0             	cmp    %ax,%si
40a171:	0f 85 f4 20 08 00    	jne    0x48c26b
40a177:	3b d1                	cmp    %ecx,%edx
40a179:	73 18                	jae    0x40a193
40a17b:	eb 03                	jmp    0x40a180
40a17d:	8d 49 00             	lea    0x0(%ecx),%ecx
40a180:	66 8b 02             	mov    (%edx),%ax
40a183:	83 c2 02             	add    $0x2,%edx
40a186:	66 3b c6             	cmp    %si,%ax
40a189:	0f 84 a8 00 00 00    	je     0x40a237
40a18f:	3b d1                	cmp    %ecx,%edx
40a191:	72 ed                	jb     0x40a180
40a193:	33 f6                	xor    %esi,%esi
40a195:	83 7d e0 00          	cmpl   $0x0,-0x20(%ebp)
40a199:	0f 85 1f 22 08 00    	jne    0x48c3be
40a19f:	85 f6                	test   %esi,%esi
40a1a1:	0f 85 36 01 00 00    	jne    0x40a2dd
40a1a7:	8b b5 00 ff ff ff    	mov    -0x100(%ebp),%esi
40a1ad:	85 f6                	test   %esi,%esi
40a1af:	0f 85 20 22 08 00    	jne    0x48c3d5
40a1b5:	83 c8 ff             	or     $0xffffffff,%eax
40a1b8:	5f                   	pop    %edi
40a1b9:	5e                   	pop    %esi
40a1ba:	5b                   	pop    %ebx
40a1bb:	8b e5                	mov    %ebp,%esp
40a1bd:	5d                   	pop    %ebp
40a1be:	c3                   	ret
40a1bf:	8b 55 cc             	mov    -0x34(%ebp),%edx
40a1c2:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a1c5:	66 3b 55 f0          	cmp    -0x10(%ebp),%dx
40a1c9:	0f 85 a2 1e 08 00    	jne    0x48c071
40a1cf:	3b c7                	cmp    %edi,%eax
40a1d1:	0f 83 b0 fd ff ff    	jae    0x409f87
40a1d7:	66 39 10             	cmp    %dx,(%eax)
40a1da:	0f 84 a7 fd ff ff    	je     0x409f87
40a1e0:	83 c0 02             	add    $0x2,%eax
40a1e3:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a1e6:	3b c7                	cmp    %edi,%eax
40a1e8:	72 ed                	jb     0x40a1d7
40a1ea:	e9 98 fd ff ff       	jmp    0x409f87
40a1ef:	0f b7 7b 18          	movzwl 0x18(%ebx),%edi
40a1f3:	0f b7 f7             	movzwl %di,%esi
40a1f6:	c7 45 dc 01 00 00 00 	movl   $0x1,-0x24(%ebp)
40a1fd:	89 7d f0             	mov    %edi,-0x10(%ebp)
40a200:	89 75 cc             	mov    %esi,-0x34(%ebp)
40a203:	a8 20                	test   $0x20,%al
40a205:	0f 84 36 fd ff ff    	je     0x409f41
40a20b:	e9 51 1c 08 00       	jmp    0x48be61
40a210:	0f b7 7b 1a          	movzwl 0x1a(%ebx),%edi
40a214:	0f b7 f7             	movzwl %di,%esi
40a217:	c7 85 f4 fe ff ff 01 	movl   $0x1,-0x10c(%ebp)
40a21e:	00 00 00
40a221:	89 7d e8             	mov    %edi,-0x18(%ebp)
40a224:	89 b5 04 ff ff ff    	mov    %esi,-0xfc(%ebp)
40a22a:	84 c0                	test   %al,%al
40a22c:	0f 89 23 fd ff ff    	jns    0x409f55
40a232:	e9 97 1c 08 00       	jmp    0x48bece
40a237:	83 ea 02             	sub    $0x2,%edx
40a23a:	3b d1                	cmp    %ecx,%edx
40a23c:	0f 83 51 ff ff ff    	jae    0x40a193
40a242:	89 95 f8 fe ff ff    	mov    %edx,-0x108(%ebp)
40a248:	e9 4d fd ff ff       	jmp    0x409f9a
40a24d:	33 c0                	xor    %eax,%eax
40a24f:	e9 07 fa ff ff       	jmp    0x409c5b
40a254:	b8 02 00 00 00       	mov    $0x2,%eax
40a259:	e9 20 fa ff ff       	jmp    0x409c7e
40a25e:	b8 01 00 00 00       	mov    $0x1,%eax
40a263:	e9 16 fa ff ff       	jmp    0x409c7e
40a268:	b8 01 00 00 00       	mov    $0x1,%eax
40a26d:	e9 f7 fa ff ff       	jmp    0x409d69
40a272:	b8 01 00 00 00       	mov    $0x1,%eax
40a277:	e9 01 fb ff ff       	jmp    0x409d7d
40a27c:	b8 01 00 00 00       	mov    $0x1,%eax
40a281:	e9 0b fb ff ff       	jmp    0x409d91
40a286:	b8 01 00 00 00       	mov    $0x1,%eax
40a28b:	e9 1e fb ff ff       	jmp    0x409dae
40a290:	b8 01 00 00 00       	mov    $0x1,%eax
40a295:	e9 28 fb ff ff       	jmp    0x409dc2
40a29a:	b8 01 00 00 00       	mov    $0x1,%eax
40a29f:	e9 32 fb ff ff       	jmp    0x409dd6
40a2a4:	b8 01 00 00 00       	mov    $0x1,%eax
40a2a9:	e9 3c fb ff ff       	jmp    0x409dea
40a2ae:	b8 01 00 00 00       	mov    $0x1,%eax
40a2b3:	e9 68 fb ff ff       	jmp    0x409e20
40a2b8:	8b ca                	mov    %edx,%ecx
40a2ba:	e9 b6 fb ff ff       	jmp    0x409e75
40a2bf:	8b d0                	mov    %eax,%edx
40a2c1:	e9 4c fc ff ff       	jmp    0x409f12
40a2c6:	33 c0                	xor    %eax,%eax
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