4052ff:	8d 9d ef fa ff ff    	lea    -0x511(%ebp),%ebx
405305:	0f b6 c8             	movzbl %al,%ecx
405308:	0f b6 03             	movzbl (%ebx),%eax
40530b:	3b c8                	cmp    %eax,%ecx
40530d:	77 16                	ja     0x405325
40530f:	2b c1                	sub    %ecx,%eax
405311:	40                   	inc    %eax
405312:	50                   	push   %eax
405313:	8d 94 0d fc fe ff ff 	lea    -0x104(%ebp,%ecx,1),%edx
40531a:	6a 20                	push   $0x20
40531c:	52                   	push   %edx
40531d:	e8 be 26 00 00       	call   0x4079e0
405322:	83 c4 0c             	add    $0xc,%esp
405325:	8a 43 01             	mov    0x1(%ebx),%al
405328:	83 c3 02             	add    $0x2,%ebx
40532b:	84 c0                	test   %al,%al
40532d:	75 d6                	jne    0x405305
40532f:	6a 00                	push   $0x0
405331:	ff 76 0c             	push   0xc(%esi)
405334:	8d 85 fc fa ff ff    	lea    -0x504(%ebp),%eax
40533a:	ff 76 04             	push   0x4(%esi)
40533d:	50                   	push   %eax
40533e:	57                   	push   %edi
40533f:	8d 85 fc fe ff ff    	lea    -0x104(%ebp),%eax
405345:	50                   	push   %eax
405346:	6a 01                	push   $0x1
405348:	6a 00                	push   $0x0
40534a:	e8 ca 5d 00 00       	call   0x40b119
40534f:	33 db                	xor    %ebx,%ebx
405351:	53                   	push   %ebx
405352:	ff 76 04             	push   0x4(%esi)
405355:	8d 85 fc fd ff ff    	lea    -0x204(%ebp),%eax
40535b:	57                   	push   %edi
40535c:	50                   	push   %eax
40535d:	57                   	push   %edi
40535e:	8d 85 fc fe ff ff    	lea    -0x104(%ebp),%eax
405364:	50                   	push   %eax
405365:	57                   	push   %edi
405366:	ff 76 0c             	push   0xc(%esi)
405369:	53                   	push   %ebx
40536a:	e8 7d 5c 00 00       	call   0x40afec
40536f:	83 c4 44             	add    $0x44,%esp
405372:	53                   	push   %ebx
405373:	ff 76 04             	push   0x4(%esi)
405376:	8d 85 fc fc ff ff    	lea    -0x304(%ebp),%eax
40537c:	57                   	push   %edi
40537d:	50                   	push   %eax
40537e:	57                   	push   %edi
40537f:	8d 85 fc fe ff ff    	lea    -0x104(%ebp),%eax
405385:	50                   	push   %eax
405386:	68 00 02 00 00       	push   $0x200
40538b:	ff 76 0c             	push   0xc(%esi)
40538e:	53                   	push   %ebx
40538f:	e8 58 5c 00 00       	call   0x40afec
405394:	83 c4 24             	add    $0x24,%esp
405397:	33 c0                	xor    %eax,%eax
405399:	0f b7 8c 45 fc fa ff 	movzwl -0x504(%ebp,%eax,2),%ecx
4053a0:	ff
4053a1:	f6 c1 01             	test   $0x1,%cl
4053a4:	74 0e                	je     0x4053b4
4053a6:	80 4c 06 1d 10       	orb    $0x10,0x1d(%esi,%eax,1)
4053ab:	8a 8c 05 fc fd ff ff 	mov    -0x204(%ebp,%eax,1),%cl
4053b2:	eb 11                	jmp    0x4053c5
4053b4:	f6 c1 02             	test   $0x2,%cl
4053b7:	74 15                	je     0x4053ce
4053b9:	80 4c 06 1d 20       	orb    $0x20,0x1d(%esi,%eax,1)
4053be:	8a 8c 05 fc fc ff ff 	mov    -0x304(%ebp,%eax,1),%cl
4053c5:	88 8c 06 1d 01 00 00 	mov    %cl,0x11d(%esi,%eax,1)
4053cc:	eb 07                	jmp    0x4053d5
4053ce:	88 9c 06 1d 01 00 00 	mov    %bl,0x11d(%esi,%eax,1)
4053d5:	40                   	inc    %eax
4053d6:	3b c7                	cmp    %edi,%eax
4053d8:	72 bf                	jb     0x405399
4053da:	eb 52                	jmp    0x40542e
4053dc:	8d 86 1d 01 00 00    	lea    0x11d(%esi),%eax
4053e2:	c7 85 e4 fa ff ff 9f 	movl   $0xffffff9f,-0x51c(%ebp)
4053e9:	ff ff ff
4053ec:	33 c9                	xor    %ecx,%ecx
4053ee:	29 85 e4 fa ff ff    	sub    %eax,-0x51c(%ebp)
4053f4:	8b 95 e4 fa ff ff    	mov    -0x51c(%ebp),%edx
4053fa:	8d 84 0e 1d 01 00 00 	lea    0x11d(%esi,%ecx,1),%eax
405401:	03 d0                	add    %eax,%edx
405403:	8d 5a 20             	lea    0x20(%edx),%ebx
405406:	83 fb 19             	cmp    $0x19,%ebx
405409:	77 0a                	ja     0x405415
40540b:	80 4c 0e 1d 10       	orb    $0x10,0x1d(%esi,%ecx,1)
405410:	8d 51 20             	lea    0x20(%ecx),%edx
405413:	eb 0d                	jmp    0x405422
405415:	83 fa 19             	cmp    $0x19,%edx
405418:	77 0c                	ja     0x405426
40541a:	80 4c 0e 1d 20       	orb    $0x20,0x1d(%esi,%ecx,1)
40541f:	8d 51 e0             	lea    -0x20(%ecx),%edx
405422:	88 10                	mov    %dl,(%eax)
405424:	eb 03                	jmp    0x405429
405426:	c6 00 00             	movb   $0x0,(%eax)
405429:	41                   	inc    %ecx
40542a:	3b cf                	cmp    %edi,%ecx
40542c:	72 c6                	jb     0x4053f4
40542e:	8b 4d fc             	mov    -0x4(%ebp),%ecx
405431:	5f                   	pop    %edi
405432:	33 cd                	xor    %ebp,%ecx
405434:	5b                   	pop    %ebx
405435:	e8 6a c9 ff ff       	call   0x401da4
40543a:	c9                   	leave
40543b:	c3                   	ret
40543c:	6a 0c                	push   $0xc
40543e:	68 f8 11 41 00       	push   $0x4111f8
405443:	e8 28 ed ff ff       	call   0x404170
405448:	e8 99 09 00 00       	call   0x405de6
40544d:	8b f8                	mov    %eax,%edi
40544f:	a1 20 29 41 00       	mov    0x412920,%eax
405454:	85 47 70             	test   %eax,0x70(%edi)
405457:	74 1d                	je     0x405476
405459:	83 7f 6c 00          	cmpl   $0x0,0x6c(%edi)
40545d:	74 17                	je     0x405476
40545f:	8b 77 68             	mov    0x68(%edi),%esi
405462:	85 f6                	test   %esi,%esi
405464:	75 08                	jne    0x40546e
405466:	6a 20                	push   $0x20
405468:	e8 aa 0f 00 00       	call   0x406417
40546d:	59                   	pop    %ecx
40546e:	8b c6                	mov    %esi,%eax
405470:	e8 40 ed ff ff       	call   0x4041b5
405475:	c3                   	ret
405476:	6a 0d                	push   $0xd
405478:	e8 1c 19 00 00       	call   0x406d99
40547d:	59                   	pop    %ecx
40547e:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
405482:	8b 77 68             	mov    0x68(%edi),%esi
405485:	89 75 e4             	mov    %esi,-0x1c(%ebp)
405488:	3b 35 28 28 41 00    	cmp    0x412828,%esi
40548e:	74 36                	je     0x4054c6
405490:	85 f6                	test   %esi,%esi
405492:	74 1a                	je     0x4054ae
405494:	56                   	push   %esi
405495:	ff 15 b8 f0 40 00    	call   *0x40f0b8
40549b:	85 c0                	test   %eax,%eax
40549d:	75 0f                	jne    0x4054ae
40549f:	81 fe 00 24 41 00    	cmp    $0x412400,%esi
4054a5:	74 07                	je     0x4054ae
4054a7:	56                   	push   %esi
4054a8:	e8 be ca ff ff       	call   0x401f6b
4054ad:	59                   	pop    %ecx
4054ae:	a1 28 28 41 00       	mov    0x412828,%eax
4054b3:	89 47 68             	mov    %eax,0x68(%edi)
4054b6:	8b 35 28 28 41 00    	mov    0x412828,%esi
4054bc:	89 75 e4             	mov    %esi,-0x1c(%ebp)
4054bf:	56                   	push   %esi
4054c0:	ff 15 b4 f0 40 00    	call   *0x40f0b4
4054c6:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4054cd:	e8 05 00 00 00       	call   0x4054d7
4054d2:	eb 8e                	jmp    0x405462
4054d4:	8b 75 e4             	mov    -0x1c(%ebp),%esi
4054d7:	6a 0d                	push   $0xd
4054d9:	e8 e2 17 00 00       	call   0x406cc0
4054de:	59                   	pop    %ecx
4054df:	c3                   	ret
4054e0:	8b ff                	mov    %edi,%edi
4054e2:	55                   	push   %ebp
4054e3:	8b ec                	mov    %esp,%ebp
4054e5:	83 ec 10             	sub    $0x10,%esp
4054e8:	53                   	push   %ebx
4054e9:	33 db                	xor    %ebx,%ebx
4054eb:	53                   	push   %ebx
4054ec:	8d 4d f0             	lea    -0x10(%ebp),%ecx
4054ef:	e8 f1 ca ff ff       	call   0x401fe5
4054f4:	89 1d 28 32 41 00    	mov    %ebx,0x413228
4054fa:	83 fe fe             	cmp    $0xfffffffe,%esi
4054fd:	75 1e                	jne    0x40551d
4054ff:	c7 05 28 32 41 00 01 	movl   $0x1,0x413228
405506:	00 00 00
405509:	ff 15 c0 f0 40 00    	call   *0x40f0c0
40550f:	38 5d fc             	cmp    %bl,-0x4(%ebp)
405512:	74 45                	je     0x405559
405514:	8b 4d f8             	mov    -0x8(%ebp),%ecx
405517:	83 61 70 fd          	andl   $0xfffffffd,0x70(%ecx)
40551b:	eb 3c                	jmp    0x405559
40551d:	83 fe fd             	cmp    $0xfffffffd,%esi
405520:	75 12                	jne    0x405534
405522:	c7 05 28 32 41 00 01 	movl   $0x1,0x413228
405529:	00 00 00
40552c:	ff 15 bc f0 40 00    	call   *0x40f0bc
405532:	eb db                	jmp    0x40550f
405534:	83 fe fc             	cmp    $0xfffffffc,%esi
405537:	75 12                	jne    0x40554b
405539:	8b 45 f0             	mov    -0x10(%ebp),%eax
40553c:	8b 40 04             	mov    0x4(%eax),%eax
40553f:	c7 05 28 32 41 00 01 	movl   $0x1,0x413228
405546:	00 00 00
405549:	eb c4                	jmp    0x40550f
40554b:	38 5d fc             	cmp    %bl,-0x4(%ebp)
40554e:	74 07                	je     0x405557
405550:	8b 45 f8             	mov    -0x8(%ebp),%eax
405553:	83 60 70 fd          	andl   $0xfffffffd,0x70(%eax)
405557:	8b c6                	mov    %esi,%eax
405559:	5b                   	pop    %ebx
40555a:	c9                   	leave
40555b:	c3                   	ret
40555c:	8b ff                	mov    %edi,%edi
40555e:	55                   	push   %ebp
40555f:	8b ec                	mov    %esp,%ebp
405561:	83 ec 20             	sub    $0x20,%esp
405564:	a1 84 22 41 00       	mov    0x412284,%eax
405569:	33 c5                	xor    %ebp,%eax
40556b:	89 45 fc             	mov    %eax,-0x4(%ebp)
40556e:	53                   	push   %ebx
40556f:	8b 5d 0c             	mov    0xc(%ebp),%ebx
405572:	56                   	push   %esi
405573:	8b 75 08             	mov    0x8(%ebp),%esi
405576:	57                   	push   %edi
405577:	e8 64 ff ff ff       	call   0x4054e0
40557c:	8b f8                	mov    %eax,%edi
40557e:	33 f6                	xor    %esi,%esi
405580:	89 7d 08             	mov    %edi,0x8(%ebp)
405583:	3b fe                	cmp    %esi,%edi
405585:	75 0e                	jne    0x405595
405587:	8b c3                	mov    %ebx,%eax
405589:	e8 ba fc ff ff       	call   0x405248
40558e:	33 c0                	xor    %eax,%eax
405590:	e9 a1 01 00 00       	jmp    0x405736
405595:	89 75 e4             	mov    %esi,-0x1c(%ebp)
405598:	33 c0                	xor    %eax,%eax
40559a:	39 b8 30 28 41 00    	cmp    %edi,0x412830(%eax)
4055a0:	0f 84 91 00 00 00    	je     0x405637
4055a6:	ff 45 e4             	incl   -0x1c(%ebp)
4055a9:	83 c0 30             	add    $0x30,%eax
4055ac:	3d f0 00 00 00       	cmp    $0xf0,%eax
4055b1:	72 e7                	jb     0x40559a
4055b3:	81 ff e8 fd 00 00    	cmp    $0xfde8,%edi
4055b9:	0f 84 74 01 00 00    	je     0x405733
4055bf:	81 ff e9 fd 00 00    	cmp    $0xfde9,%edi
4055c5:	0f 84 68 01 00 00    	je     0x405733
4055cb:	0f b7 c7             	movzwl %di,%eax
4055ce:	50                   	push   %eax
4055cf:	ff 15 c4 f0 40 00    	call   *0x40f0c4
4055d5:	85 c0                	test   %eax,%eax
4055d7:	0f 84 56 01 00 00    	je     0x405733
4055dd:	8d 45 e8             	lea    -0x18(%ebp),%eax
4055e0:	50                   	push   %eax
4055e1:	57                   	push   %edi
4055e2:	ff 15 b0 f0 40 00    	call   *0x40f0b0
4055e8:	85 c0                	test   %eax,%eax
4055ea:	0f 84 37 01 00 00    	je     0x405727
4055f0:	68 01 01 00 00       	push   $0x101
4055f5:	8d 43 1c             	lea    0x1c(%ebx),%eax
4055f8:	56                   	push   %esi
4055f9:	50                   	push   %eax
4055fa:	e8 e1 23 00 00       	call   0x4079e0
4055ff:	33 d2                	xor    %edx,%edx
405601:	42                   	inc    %edx
405602:	83 c4 0c             	add    $0xc,%esp
405605:	89 7b 04             	mov    %edi,0x4(%ebx)
405608:	89 73 0c             	mov    %esi,0xc(%ebx)
40560b:	39 55 e8             	cmp    %edx,-0x18(%ebp)
40560e:	0f 86 fc 00 00 00    	jbe    0x405710
405614:	80 7d ee 00          	cmpb   $0x0,-0x12(%ebp)
405618:	0f 84 d3 00 00 00    	je     0x4056f1
40561e:	8d 75 ef             	lea    -0x11(%ebp),%esi
405621:	8a 0e                	mov    (%esi),%cl
405623:	84 c9                	test   %cl,%cl
405625:	0f 84 c6 00 00 00    	je     0x4056f1
40562b:	0f b6 46 ff          	movzbl -0x1(%esi),%eax
40562f:	0f b6 c9             	movzbl %cl,%ecx
405632:	e9 a9 00 00 00       	jmp    0x4056e0
405637:	68 01 01 00 00       	push   $0x101
40563c:	8d 43 1c             	lea    0x1c(%ebx),%eax
40563f:	56                   	push   %esi
405640:	50                   	push   %eax
405641:	e8 9a 23 00 00       	call   0x4079e0
405646:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
405649:	83 c4 0c             	add    $0xc,%esp
40564c:	6b c9 30             	imul   $0x30,%ecx,%ecx
40564f:	89 75 e0             	mov    %esi,-0x20(%ebp)
405652:	8d b1 40 28 41 00    	lea    0x412840(%ecx),%esi
405658:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40565b:	eb 2b                	jmp    0x405688
40565d:	8a 46 01             	mov    0x1(%esi),%al
405660:	84 c0                	test   %al,%al
405662:	74 29                	je     0x40568d
405664:	0f b6 3e             	movzbl (%esi),%edi
405667:	0f b6 c0             	movzbl %al,%eax
40566a:	eb 12                	jmp    0x40567e
40566c:	8b 45 e0             	mov    -0x20(%ebp),%eax
40566f:	8a 80 2c 28 41 00    	mov    0x41282c(%eax),%al
405675:	08 44 3b 1d          	or     %al,0x1d(%ebx,%edi,1)
405679:	0f b6 46 01          	movzbl 0x1(%esi),%eax
40567d:	47                   	inc    %edi
40567e:	3b f8                	cmp    %eax,%edi
405680:	76 ea                	jbe    0x40566c
405682:	8b 7d 08             	mov    0x8(%ebp),%edi
405685:	83 c6 02             	add    $0x2,%esi
405688:	80 3e 00             	cmpb   $0x0,(%esi)
40568b:	75 d0                	jne    0x40565d
40568d:	8b 75 e4             	mov    -0x1c(%ebp),%esi
405690:	ff 45 e0             	incl   -0x20(%ebp)
405693:	83 c6 08             	add    $0x8,%esi
405696:	83 7d e0 04          	cmpl   $0x4,-0x20(%ebp)
40569a:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40569d:	72 e9                	jb     0x405688
40569f:	8b c7                	mov    %edi,%eax
4056a1:	89 7b 04             	mov    %edi,0x4(%ebx)
4056a4:	c7 43 08 01 00 00 00 	movl   $0x1,0x8(%ebx)
4056ab:	e8 69 fb ff ff       	call   0x405219
4056b0:	6a 06                	push   $0x6
4056b2:	89 43 0c             	mov    %eax,0xc(%ebx)
4056b5:	8d 43 10             	lea    0x10(%ebx),%eax
4056b8:	8d 89 34 28 41 00    	lea    0x412834(%ecx),%ecx
4056be:	5a                   	pop    %edx
4056bf:	66 8b 31             	mov    (%ecx),%si
4056c2:	66 89 30             	mov    %si,(%eax)
4056c5:	83 c1 02             	add    $0x2,%ecx
4056c8:	83 c0 02             	add    $0x2,%eax
4056cb:	4a                   	dec    %edx
4056cc:	75 f1                	jne    0x4056bf
4056ce:	8b f3                	mov    %ebx,%esi
4056d0:	e8 d7 fb ff ff       	call   0x4052ac
4056d5:	e9 b4 fe ff ff       	jmp    0x40558e
4056da:	80 4c 03 1d 04       	orb    $0x4,0x1d(%ebx,%eax,1)
4056df:	40                   	inc    %eax
4056e0:	3b c1                	cmp    %ecx,%eax
4056e2:	76 f6                	jbe    0x4056da
4056e4:	83 c6 02             	add    $0x2,%esi
4056e7:	80 7e ff 00          	cmpb   $0x0,-0x1(%esi)
4056eb:	0f 85 30 ff ff ff    	jne    0x405621
4056f1:	8d 43 1e             	lea    0x1e(%ebx),%eax
4056f4:	b9 fe 00 00 00       	mov    $0xfe,%ecx
4056f9:	80 08 08             	orb    $0x8,(%eax)
4056fc:	40                   	inc    %eax
4056fd:	49                   	dec    %ecx
4056fe:	75 f9                	jne    0x4056f9
405700:	8b 43 04             	mov    0x4(%ebx),%eax
405703:	e8 11 fb ff ff       	call   0x405219
405708:	89 43 0c             	mov    %eax,0xc(%ebx)
40570b:	89 53 08             	mov    %edx,0x8(%ebx)
40570e:	eb 03                	jmp    0x405713
405710:	89 73 08             	mov    %esi,0x8(%ebx)
405713:	33 c0                	xor    %eax,%eax
405715:	0f b7 c8             	movzwl %ax,%ecx
405718:	8b c1                	mov    %ecx,%eax
40571a:	c1 e1 10             	shl    $0x10,%ecx
40571d:	0b c1                	or     %ecx,%eax
40571f:	8d 7b 10             	lea    0x10(%ebx),%edi
405722:	ab                   	stos   %eax,%es:(%edi)
405723:	ab                   	stos   %eax,%es:(%edi)
405724:	ab                   	stos   %eax,%es:(%edi)
405725:	eb a7                	jmp    0x4056ce
405727:	39 35 28 32 41 00    	cmp    %esi,0x413228
40572d:	0f 85 54 fe ff ff    	jne    0x405587
405733:	83 c8 ff             	or     $0xffffffff,%eax
405736:	8b 4d fc             	mov    -0x4(%ebp),%ecx