46e1f9:	8b f0                	mov    %eax,%esi
46e1fb:	66 8b 04 77          	mov    (%edi,%esi,2),%ax
46e1ff:	5f                   	pop    %edi
46e200:	5e                   	pop    %esi
46e201:	c2 04 00             	ret    $0x4
46e204:	6a 10                	push   $0x10
46e206:	b8 d1 57 49 00       	mov    $0x4957d1,%eax
46e20b:	e8 c3 22 02 00       	call   0x4904d3
46e210:	8b f2                	mov    %edx,%esi
46e212:	89 4d e8             	mov    %ecx,-0x18(%ebp)
46e215:	8b 5d 08             	mov    0x8(%ebp),%ebx
46e218:	33 c9                	xor    %ecx,%ecx
46e21a:	89 4d f0             	mov    %ecx,-0x10(%ebp)
46e21d:	89 0b                	mov    %ecx,(%ebx)
46e21f:	8d 45 f0             	lea    -0x10(%ebp),%eax
46e222:	89 4d fc             	mov    %ecx,-0x4(%ebp)
46e225:	50                   	push   %eax
46e226:	68 b0 0b 41 00       	push   $0x410bb0
46e22b:	6a 01                	push   $0x1
46e22d:	51                   	push   %ecx
46e22e:	68 dc fb 40 00       	push   $0x40fbdc
46e233:	ff 15 98 7e 4a 00    	call   *0x4a7e98
46e239:	8b f8                	mov    %eax,%edi
46e23b:	0f b7 c6             	movzwl %si,%eax
46e23e:	89 45 e4             	mov    %eax,-0x1c(%ebp)
46e241:	85 ff                	test   %edi,%edi
46e243:	0f 88 9e 00 00 00    	js     0x46e2e7
46e249:	83 65 ec 00          	andl   $0x0,-0x14(%ebp)
46e24d:	8b 75 e8             	mov    -0x18(%ebp),%esi
46e250:	8d 4d ec             	lea    -0x14(%ebp),%ecx
46e253:	51                   	push   %ecx
46e254:	51                   	push   %ecx
46e255:	0f b7 c0             	movzwl %ax,%eax
46e258:	8b d6                	mov    %esi,%edx
46e25a:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
46e25e:	8b 4d f0             	mov    -0x10(%ebp),%ecx
46e261:	50                   	push   %eax
46e262:	e8 11 b8 01 00       	call   0x489a78
46e267:	8b f8                	mov    %eax,%edi
46e269:	85 ff                	test   %edi,%edi
46e26b:	78 0e                	js     0x46e27b
46e26d:	8b 55 ec             	mov    -0x14(%ebp),%edx
46e270:	8b 4d f0             	mov    -0x10(%ebp),%ecx
46e273:	53                   	push   %ebx
46e274:	e8 6f f0 ff ff       	call   0x46d2e8
46e279:	8b f8                	mov    %eax,%edi
46e27b:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
46e27f:	8b 45 ec             	mov    -0x14(%ebp),%eax
46e282:	85 c0                	test   %eax,%eax
46e284:	74 13                	je     0x46e299
46e286:	8b 08                	mov    (%eax),%ecx
46e288:	50                   	push   %eax
46e289:	8b 71 08             	mov    0x8(%ecx),%esi
46e28c:	8b ce                	mov    %esi,%ecx
46e28e:	ff 15 2c 81 4a 00    	call   *0x4a812c
46e294:	ff d6                	call   *%esi
46e296:	8b 75 e8             	mov    -0x18(%ebp),%esi
46e299:	8b 45 e4             	mov    -0x1c(%ebp),%eax
46e29c:	85 ff                	test   %edi,%edi
46e29e:	79 1f                	jns    0x46e2bf
46e2a0:	68 00 20 00 00       	push   $0x2000
46e2a5:	33 c9                	xor    %ecx,%ecx
46e2a7:	0f b7 c0             	movzwl %ax,%eax
46e2aa:	51                   	push   %ecx
46e2ab:	51                   	push   %ecx
46e2ac:	51                   	push   %ecx
46e2ad:	50                   	push   %eax
46e2ae:	56                   	push   %esi
46e2af:	ff 15 3c 7d 4a 00    	call   *0x4a7d3c
46e2b5:	89 03                	mov    %eax,(%ebx)
46e2b7:	f7 d8                	neg    %eax
46e2b9:	1b c0                	sbb    %eax,%eax
46e2bb:	f7 d0                	not    %eax
46e2bd:	23 f8                	and    %eax,%edi
46e2bf:	c7 45 fc 03 00 00 00 	movl   $0x3,-0x4(%ebp)
46e2c6:	8b 45 f0             	mov    -0x10(%ebp),%eax
46e2c9:	85 c0                	test   %eax,%eax
46e2cb:	74 10                	je     0x46e2dd
46e2cd:	8b 08                	mov    (%eax),%ecx
46e2cf:	50                   	push   %eax
46e2d0:	8b 71 08             	mov    0x8(%ecx),%esi
46e2d3:	8b ce                	mov    %esi,%ecx
46e2d5:	ff 15 2c 81 4a 00    	call   *0x4a812c
46e2db:	ff d6                	call   *%esi
46e2dd:	8b c7                	mov    %edi,%eax
46e2df:	e8 bd 21 02 00       	call   0x4904a1
46e2e4:	c2 04 00             	ret    $0x4
46e2e7:	8b 75 e8             	mov    -0x18(%ebp),%esi
46e2ea:	eb b0                	jmp    0x46e29c
46e2ec:	8b ff                	mov    %edi,%edi
46e2ee:	57                   	push   %edi
46e2ef:	8b f9                	mov    %ecx,%edi
46e2f1:	8b 0f                	mov    (%edi),%ecx
46e2f3:	85 c9                	test   %ecx,%ecx
46e2f5:	74 15                	je     0x46e30c
46e2f7:	83 27 00             	andl   $0x0,(%edi)
46e2fa:	8b 01                	mov    (%ecx),%eax
46e2fc:	56                   	push   %esi
46e2fd:	51                   	push   %ecx
46e2fe:	8b 70 08             	mov    0x8(%eax),%esi
46e301:	8b ce                	mov    %esi,%ecx
46e303:	ff 15 2c 81 4a 00    	call   *0x4a812c
46e309:	ff d6                	call   *%esi
46e30b:	5e                   	pop    %esi
46e30c:	8b c7                	mov    %edi,%eax
46e30e:	5f                   	pop    %edi
46e30f:	c3                   	ret
46e310:	8b ff                	mov    %edi,%edi
46e312:	55                   	push   %ebp
46e313:	8b ec                	mov    %esp,%ebp
46e315:	8b 55 08             	mov    0x8(%ebp),%edx
46e318:	57                   	push   %edi
46e319:	8b f9                	mov    %ecx,%edi
46e31b:	89 17                	mov    %edx,(%edi)
46e31d:	85 d2                	test   %edx,%edx
46e31f:	74 12                	je     0x46e333
46e321:	8b 02                	mov    (%edx),%eax
46e323:	56                   	push   %esi
46e324:	52                   	push   %edx
46e325:	8b 70 04             	mov    0x4(%eax),%esi
46e328:	8b ce                	mov    %esi,%ecx
46e32a:	ff 15 2c 81 4a 00    	call   *0x4a812c
46e330:	ff d6                	call   *%esi
46e332:	5e                   	pop    %esi
46e333:	8b c7                	mov    %edi,%eax
46e335:	5f                   	pop    %edi
46e336:	5d                   	pop    %ebp
46e337:	c2 04 00             	ret    $0x4
46e33a:	8b ff                	mov    %edi,%edi
46e33c:	55                   	push   %ebp
46e33d:	8b ec                	mov    %esp,%ebp
46e33f:	51                   	push   %ecx
46e340:	51                   	push   %ecx
46e341:	53                   	push   %ebx
46e342:	56                   	push   %esi
46e343:	8b 75 0c             	mov    0xc(%ebp),%esi
46e346:	33 db                	xor    %ebx,%ebx
46e348:	57                   	push   %edi
46e349:	8b 7d 10             	mov    0x10(%ebp),%edi
46e34c:	8b 07                	mov    (%edi),%eax
46e34e:	03 c0                	add    %eax,%eax
46e350:	89 1f                	mov    %ebx,(%edi)
46e352:	89 45 f8             	mov    %eax,-0x8(%ebp)
46e355:	8d 45 f8             	lea    -0x8(%ebp),%eax
46e358:	50                   	push   %eax
46e359:	56                   	push   %esi
46e35a:	8d 45 fc             	lea    -0x4(%ebp),%eax
46e35d:	50                   	push   %eax
46e35e:	53                   	push   %ebx
46e35f:	68 38 33 41 00       	push   $0x413338
46e364:	ff 31                	push   (%ecx)
46e366:	ff 15 04 70 4a 00    	call   *0x4a7004
46e36c:	85 c0                	test   %eax,%eax
46e36e:	75 37                	jne    0x46e3a7
46e370:	83 7d fc 01          	cmpl   $0x1,-0x4(%ebp)
46e374:	74 06                	je     0x46e37c
46e376:	83 7d fc 02          	cmpl   $0x2,-0x4(%ebp)
46e37a:	75 1b                	jne    0x46e397
46e37c:	8b 4d f8             	mov    -0x8(%ebp),%ecx
46e37f:	85 f6                	test   %esi,%esi
46e381:	74 1e                	je     0x46e3a1
46e383:	85 c9                	test   %ecx,%ecx
46e385:	74 15                	je     0x46e39c
46e387:	f6 c1 01             	test   $0x1,%cl
46e38a:	75 0b                	jne    0x46e397
46e38c:	8b c1                	mov    %ecx,%eax
46e38e:	d1 e8                	shr    $1,%eax
46e390:	66 39 5c 46 fe       	cmp    %bx,-0x2(%esi,%eax,2)
46e395:	74 0a                	je     0x46e3a1
46e397:	6a 0d                	push   $0xd
46e399:	58                   	pop    %eax
46e39a:	eb 0b                	jmp    0x46e3a7
46e39c:	33 c0                	xor    %eax,%eax
46e39e:	66 89 06             	mov    %ax,(%esi)
46e3a1:	d1 e9                	shr    $1,%ecx
46e3a3:	33 c0                	xor    %eax,%eax
46e3a5:	89 0f                	mov    %ecx,(%edi)
46e3a7:	5f                   	pop    %edi
46e3a8:	5e                   	pop    %esi
46e3a9:	5b                   	pop    %ebx
46e3aa:	c9                   	leave
46e3ab:	c2 0c 00             	ret    $0xc
46e3ae:	8b ff                	mov    %edi,%edi
46e3b0:	56                   	push   %esi
46e3b1:	8b f1                	mov    %ecx,%esi
46e3b3:	83 3e 00             	cmpl   $0x0,(%esi)
46e3b6:	74 0b                	je     0x46e3c3
46e3b8:	ff 36                	push   (%esi)
46e3ba:	ff 15 08 70 4a 00    	call   *0x4a7008
46e3c0:	83 26 00             	andl   $0x0,(%esi)
46e3c3:	5e                   	pop    %esi
46e3c4:	c3                   	ret
46e3c5:	b8 ff 0f 00 00       	mov    $0xfff,%eax
46e3ca:	66 39 01             	cmp    %ax,(%ecx)
46e3cd:	75 06                	jne    0x46e3d5
46e3cf:	6a 08                	push   $0x8
46e3d1:	58                   	pop    %eax
46e3d2:	66 89 01             	mov    %ax,(%ecx)
46e3d5:	51                   	push   %ecx
46e3d6:	ff 15 20 7c 4a 00    	call   *0x4a7c20
46e3dc:	c3                   	ret
46e3dd:	cc                   	int3
46e3de:	cc                   	int3
46e3df:	cc                   	int3
46e3e0:	b8 c4 5d 40 00       	mov    $0x405dc4,%eax
46e3e5:	c3                   	ret
46e3e6:	cc                   	int3
46e3e7:	cc                   	int3
46e3e8:	cc                   	int3
46e3e9:	cc                   	int3
46e3ea:	cc                   	int3
46e3eb:	cc                   	int3
46e3ec:	cc                   	int3
46e3ed:	cc                   	int3
46e3ee:	cc                   	int3
46e3ef:	cc                   	int3
46e3f0:	8b ff                	mov    %edi,%edi
46e3f2:	55                   	push   %ebp
46e3f3:	8b ec                	mov    %esp,%ebp
46e3f5:	6a ff                	push   $0xffffffff
46e3f7:	68 ec 57 49 00       	push   $0x4957ec
46e3fc:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
46e402:	50                   	push   %eax
46e403:	56                   	push   %esi
46e404:	57                   	push   %edi
46e405:	a1 dc 38 4a 00       	mov    0x4a38dc,%eax
46e40a:	33 c5                	xor    %ebp,%eax
46e40c:	50                   	push   %eax
46e40d:	8d 45 f4             	lea    -0xc(%ebp),%eax
46e410:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
46e416:	8b f9                	mov    %ecx,%edi
46e418:	8d 4f 2c             	lea    0x2c(%edi),%ecx
46e41b:	c7 07 6c 5d 40 00    	movl   $0x405d6c,(%edi)
46e421:	e8 4b 25 fb ff       	call   0x420971
46e426:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
46e42a:	8b 4f 28             	mov    0x28(%edi),%ecx
46e42d:	85 c9                	test   %ecx,%ecx
46e42f:	74 10                	je     0x46e441
46e431:	8b 01                	mov    (%ecx),%eax
46e433:	51                   	push   %ecx
46e434:	8b 70 08             	mov    0x8(%eax),%esi
46e437:	8b ce                	mov    %esi,%ecx
46e439:	ff 15 2c 81 4a 00    	call   *0x4a812c
46e43f:	ff d6                	call   *%esi
46e441:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
46e448:	8b 4f 24             	mov    0x24(%edi),%ecx
46e44b:	85 c9                	test   %ecx,%ecx
46e44d:	74 10                	je     0x46e45f
46e44f:	8b 01                	mov    (%ecx),%eax
46e451:	51                   	push   %ecx
46e452:	8b 70 08             	mov    0x8(%eax),%esi
46e455:	8b ce                	mov    %esi,%ecx
46e457:	ff 15 2c 81 4a 00    	call   *0x4a812c
46e45d:	ff d6                	call   *%esi
46e45f:	8b cf                	mov    %edi,%ecx
46e461:	ff 15 70 73 4a 00    	call   *0x4a7370
46e467:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
46e46b:	74 08                	je     0x46e475
46e46d:	57                   	push   %edi
46e46e:	ff 15 10 74 4a 00    	call   *0x4a7410
46e474:	59                   	pop    %ecx
46e475:	8b c7                	mov    %edi,%eax
46e477:	8b 4d f4             	mov    -0xc(%ebp),%ecx
46e47a:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
46e481:	59                   	pop    %ecx
46e482:	5f                   	pop    %edi
46e483:	5e                   	pop    %esi
46e484:	c9                   	leave
46e485:	c2 04 00             	ret    $0x4
46e488:	6a 18                	push   $0x18
46e48a:	b8 17 58 49 00       	mov    $0x495817,%eax
46e48f:	e8 a8 20 02 00       	call   0x49053c
46e494:	8b f1                	mov    %ecx,%esi
46e496:	8b 45 08             	mov    0x8(%ebp),%eax
46e499:	33 db                	xor    %ebx,%ebx
46e49b:	8b 7d 0c             	mov    0xc(%ebp),%edi
46e49e:	89 46 30             	mov    %eax,0x30(%esi)
46e4a1:	8d 46 2c             	lea    0x2c(%esi),%eax
46e4a4:	50                   	push   %eax
46e4a5:	68 cc 33 41 00       	push   $0x4133cc
46e4aa:	6a 01                	push   $0x1
46e4ac:	53                   	push   %ebx
46e4ad:	68 74 f5 40 00       	push   $0x40f574
46e4b2:	89 7e 34             	mov    %edi,0x34(%esi)
46e4b5:	89 5d fc             	mov    %ebx,-0x4(%ebp)
46e4b8:	ff 15 98 7e 4a 00    	call   *0x4a7e98
46e4be:	85 c0                	test   %eax,%eax
46e4c0:	0f 88 aa 00 00 00    	js     0x46e570
46e4c6:	6a 3c                	push   $0x3c
46e4c8:	ff 15 14 74 4a 00    	call   *0x4a7414
46e4ce:	59                   	pop    %ecx
46e4cf:	89 45 e0             	mov    %eax,-0x20(%ebp)
46e4d2:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
46e4d6:	85 c0                	test   %eax,%eax
46e4d8:	74 10                	je     0x46e4ea
46e4da:	ff 76 2c             	push   0x2c(%esi)
46e4dd:	8b c8                	mov    %eax,%ecx
46e4df:	57                   	push   %edi
46e4e0:	ff 76 30             	push   0x30(%esi)
46e4e3:	e8 e0 02 00 00       	call   0x46e7c8
46e4e8:	eb 02                	jmp    0x46e4ec
46e4ea:	8b c3                	mov    %ebx,%eax
46e4ec:	88 5d fc             	mov    %bl,-0x4(%ebp)
46e4ef:	85 c0                	test   %eax,%eax
46e4f1:	75 11                	jne    0x46e504
46e4f3:	c7 45 e8 0e 00 07 80 	movl   $0x8007000e,-0x18(%ebp)
46e4fa:	8d 45 e8             	lea    -0x18(%ebp),%eax
46e4fd:	68 54 ec 49 00       	push   $0x49ec54
46e502:	eb 77                	jmp    0x46e57b
46e504:	8d 50 20             	lea    0x20(%eax),%edx
46e507:	8d 4e 24             	lea    0x24(%esi),%ecx
46e50a:	e8 90 b0 fb ff       	call   0x42959f
46e50f:	6a 38                	push   $0x38
46e511:	ff 15 14 74 4a 00    	call   *0x4a7414
46e517:	59                   	pop    %ecx
46e518:	89 45 e0             	mov    %eax,-0x20(%ebp)
46e51b:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
46e51f:	85 c0                	test   %eax,%eax
46e521:	74 0d                	je     0x46e530
46e523:	ff 76 2c             	push   0x2c(%esi)
46e526:	8b c8                	mov    %eax,%ecx
46e528:	57                   	push   %edi
46e529:	e8 17 14 00 00       	call   0x46f945
46e52e:	eb 02                	jmp    0x46e532
46e530:	8b c3                	mov    %ebx,%eax
46e532:	88 5d fc             	mov    %bl,-0x4(%ebp)
46e535:	85 c0                	test   %eax,%eax
46e537:	75 11                	jne    0x46e54a
46e539:	c7 45 e4 0e 00 07 80 	movl   $0x8007000e,-0x1c(%ebp)
46e540:	8d 45 e4             	lea    -0x1c(%ebp),%eax
46e543:	68 54 ec 49 00       	push   $0x49ec54
46e548:	eb 31                	jmp    0x46e57b
46e54a:	8d 50 20             	lea    0x20(%eax),%edx
46e54d:	8d 4e 28             	lea    0x28(%esi),%ecx
46e550:	e8 4a b0 fb ff       	call   0x42959f
46e555:	eb 0f                	jmp    0x46e566
46e557:	8b 45 dc             	mov    -0x24(%ebp),%eax
46e55a:	89 45 e0             	mov    %eax,-0x20(%ebp)
46e55d:	b8 63 e5 46 00       	mov    $0x46e563,%eax
46e562:	c3                   	ret
46e563:	8b 5d e0             	mov    -0x20(%ebp),%ebx
46e566:	8b c3                	mov    %ebx,%eax
46e568:	e8 34 1f 02 00       	call   0x4904a1
46e56d:	c2 08 00             	ret    $0x8
46e570:	89 45 ec             	mov    %eax,-0x14(%ebp)
46e573:	8d 45 ec             	lea    -0x14(%ebp),%eax
46e576:	68 54 ec 49 00       	push   $0x49ec54
46e57b:	50                   	push   %eax
46e57c:	e8 1a 1f 02 00       	call   0x49049b
46e581:	cc                   	int3