40a342:	8b 45 b0             	mov    -0x50(%ebp),%eax
40a345:	c7 45 b8 00 00 00 00 	movl   $0x0,-0x48(%ebp)
40a34c:	85 c0                	test   %eax,%eax
40a34e:	74 09                	je     0x40a359
40a350:	50                   	push   %eax
40a351:	e8 ed 96 01 00       	call   0x423a43
40a356:	83 c4 04             	add    $0x4,%esp
40a359:	8d 4d ac             	lea    -0x54(%ebp),%ecx
40a35c:	c7 45 b0 00 00 00 00 	movl   $0x0,-0x50(%ebp)
40a363:	e8 17 ec 00 00       	call   0x418f7f
40a368:	89 7d ec             	mov    %edi,-0x14(%ebp)
40a36b:	57                   	push   %edi
40a36c:	c6 45 fc 0a          	movb   $0xa,-0x4(%ebp)
40a370:	e8 6d ed 00 00       	call   0x4190e2
40a375:	8b 07                	mov    (%edi),%eax
40a377:	83 c4 04             	add    $0x4,%esp
40a37a:	8b 70 04             	mov    0x4(%eax),%esi
40a37d:	8b ce                	mov    %esi,%ecx
40a37f:	ff 15 5c e2 43 00    	call   *0x43e25c
40a385:	8b cf                	mov    %edi,%ecx
40a387:	ff d6                	call   *%esi
40a389:	89 3d 8c 7b 45 00    	mov    %edi,0x457b8c
40a38f:	e9 58 fe ff ff       	jmp    0x40a1ec
40a394:	68 80 ed 44 00       	push   $0x44ed80
40a399:	e8 3c eb 00 00       	call   0x418eda
40a39e:	cc                   	int3
40a39f:	cc                   	int3
40a3a0:	55                   	push   %ebp
40a3a1:	8b ec                	mov    %esp,%ebp
40a3a3:	6a ff                	push   $0xffffffff
40a3a5:	68 85 c1 43 00       	push   $0x43c185
40a3aa:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40a3b0:	50                   	push   %eax
40a3b1:	83 ec 18             	sub    $0x18,%esp
40a3b4:	a1 14 50 45 00       	mov    0x455014,%eax
40a3b9:	33 c5                	xor    %ebp,%eax
40a3bb:	89 45 f0             	mov    %eax,-0x10(%ebp)
40a3be:	53                   	push   %ebx
40a3bf:	56                   	push   %esi
40a3c0:	57                   	push   %edi
40a3c1:	50                   	push   %eax
40a3c2:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a3c5:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40a3cb:	8b 7d 08             	mov    0x8(%ebp),%edi
40a3ce:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40a3d1:	6a 00                	push   $0x0
40a3d3:	89 7d e8             	mov    %edi,-0x18(%ebp)
40a3d6:	e8 4c eb 00 00       	call   0x418f27
40a3db:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40a3e2:	8b 35 98 7b 45 00    	mov    0x457b98,%esi
40a3e8:	8b 1d 84 7b 45 00    	mov    0x457b84,%ebx
40a3ee:	89 5d e0             	mov    %ebx,-0x20(%ebp)
40a3f1:	85 f6                	test   %esi,%esi
40a3f3:	75 2f                	jne    0x40a424
40a3f5:	56                   	push   %esi
40a3f6:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40a3f9:	e8 29 eb 00 00       	call   0x418f27
40a3fe:	39 35 98 7b 45 00    	cmp    %esi,0x457b98
40a404:	75 10                	jne    0x40a416
40a406:	a1 28 64 45 00       	mov    0x456428,%eax
40a40b:	40                   	inc    %eax
40a40c:	a3 28 64 45 00       	mov    %eax,0x456428
40a411:	a3 98 7b 45 00       	mov    %eax,0x457b98
40a416:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40a419:	e8 61 eb 00 00       	call   0x418f7f
40a41e:	8b 35 98 7b 45 00    	mov    0x457b98,%esi
40a424:	8b 57 04             	mov    0x4(%edi),%edx
40a427:	8d 0c b5 00 00 00 00 	lea    0x0(,%esi,4),%ecx
40a42e:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40a431:	3b 72 0c             	cmp    0xc(%edx),%esi
40a434:	73 0c                	jae    0x40a442
40a436:	8b 42 08             	mov    0x8(%edx),%eax
40a439:	8b 3c 01             	mov    (%ecx,%eax,1),%edi
40a43c:	85 ff                	test   %edi,%edi
40a43e:	75 6a                	jne    0x40a4aa
40a440:	eb 05                	jmp    0x40a447
40a442:	33 ff                	xor    %edi,%edi
40a444:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40a447:	80 7a 14 00          	cmpb   $0x0,0x14(%edx)
40a44b:	74 13                	je     0x40a460
40a44d:	e8 bc ec 00 00       	call   0x41910e
40a452:	3b 70 0c             	cmp    0xc(%eax),%esi
40a455:	73 0d                	jae    0x40a464
40a457:	8b 40 08             	mov    0x8(%eax),%eax
40a45a:	8b 7d ec             	mov    -0x14(%ebp),%edi
40a45d:	8b 3c 07             	mov    (%edi,%eax,1),%edi
40a460:	85 ff                	test   %edi,%edi
40a462:	75 46                	jne    0x40a4aa
40a464:	85 db                	test   %ebx,%ebx
40a466:	74 04                	je     0x40a46c
40a468:	8b fb                	mov    %ebx,%edi
40a46a:	eb 3e                	jmp    0x40a4aa
40a46c:	ff 75 e8             	push   -0x18(%ebp)
40a46f:	8d 45 e0             	lea    -0x20(%ebp),%eax
40a472:	50                   	push   %eax
40a473:	e8 08 05 00 00       	call   0x40a980
40a478:	83 c4 08             	add    $0x8,%esp
40a47b:	83 f8 ff             	cmp    $0xffffffff,%eax
40a47e:	74 50                	je     0x40a4d0
40a480:	8b 7d e0             	mov    -0x20(%ebp),%edi
40a483:	89 7d e8             	mov    %edi,-0x18(%ebp)
40a486:	57                   	push   %edi
40a487:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40a48b:	e8 52 ec 00 00       	call   0x4190e2
40a490:	8b 07                	mov    (%edi),%eax
40a492:	83 c4 04             	add    $0x4,%esp
40a495:	8b 70 04             	mov    0x4(%eax),%esi
40a498:	8b ce                	mov    %esi,%ecx
40a49a:	ff 15 5c e2 43 00    	call   *0x43e25c
40a4a0:	8b cf                	mov    %edi,%ecx
40a4a2:	ff d6                	call   *%esi
40a4a4:	89 3d 84 7b 45 00    	mov    %edi,0x457b84
40a4aa:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40a4ad:	e8 cd ea 00 00       	call   0x418f7f
40a4b2:	8b c7                	mov    %edi,%eax
40a4b4:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40a4b7:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40a4be:	59                   	pop    %ecx
40a4bf:	5f                   	pop    %edi
40a4c0:	5e                   	pop    %esi
40a4c1:	5b                   	pop    %ebx
40a4c2:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40a4c5:	33 cd                	xor    %ebp,%ecx
40a4c7:	e8 de f6 00 00       	call   0x419baa
40a4cc:	8b e5                	mov    %ebp,%esp
40a4ce:	5d                   	pop    %ebp
40a4cf:	c3                   	ret
40a4d0:	e8 5b b8 ff ff       	call   0x405d30
40a4d5:	cc                   	int3
40a4d6:	cc                   	int3
40a4d7:	cc                   	int3
40a4d8:	cc                   	int3
40a4d9:	cc                   	int3
40a4da:	cc                   	int3
40a4db:	cc                   	int3
40a4dc:	cc                   	int3
40a4dd:	cc                   	int3
40a4de:	cc                   	int3
40a4df:	cc                   	int3
40a4e0:	55                   	push   %ebp
40a4e1:	8b ec                	mov    %esp,%ebp
40a4e3:	6a ff                	push   $0xffffffff
40a4e5:	68 85 c1 43 00       	push   $0x43c185
40a4ea:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40a4f0:	50                   	push   %eax
40a4f1:	83 ec 18             	sub    $0x18,%esp
40a4f4:	a1 14 50 45 00       	mov    0x455014,%eax
40a4f9:	33 c5                	xor    %ebp,%eax
40a4fb:	89 45 f0             	mov    %eax,-0x10(%ebp)
40a4fe:	53                   	push   %ebx
40a4ff:	56                   	push   %esi
40a500:	57                   	push   %edi
40a501:	50                   	push   %eax
40a502:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a505:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40a50b:	8b 7d 08             	mov    0x8(%ebp),%edi
40a50e:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40a511:	6a 00                	push   $0x0
40a513:	89 7d e8             	mov    %edi,-0x18(%ebp)
40a516:	e8 0c ea 00 00       	call   0x418f27
40a51b:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
40a522:	8b 35 3c 64 45 00    	mov    0x45643c,%esi
40a528:	8b 1d 88 7b 45 00    	mov    0x457b88,%ebx
40a52e:	89 5d e0             	mov    %ebx,-0x20(%ebp)
40a531:	85 f6                	test   %esi,%esi
40a533:	75 2f                	jne    0x40a564
40a535:	56                   	push   %esi
40a536:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40a539:	e8 e9 e9 00 00       	call   0x418f27
40a53e:	39 35 3c 64 45 00    	cmp    %esi,0x45643c
40a544:	75 10                	jne    0x40a556
40a546:	a1 28 64 45 00       	mov    0x456428,%eax
40a54b:	40                   	inc    %eax
40a54c:	a3 28 64 45 00       	mov    %eax,0x456428
40a551:	a3 3c 64 45 00       	mov    %eax,0x45643c
40a556:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40a559:	e8 21 ea 00 00       	call   0x418f7f
40a55e:	8b 35 3c 64 45 00    	mov    0x45643c,%esi
40a564:	8b 57 04             	mov    0x4(%edi),%edx
40a567:	8d 0c b5 00 00 00 00 	lea    0x0(,%esi,4),%ecx
40a56e:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40a571:	3b 72 0c             	cmp    0xc(%edx),%esi
40a574:	73 0c                	jae    0x40a582
40a576:	8b 42 08             	mov    0x8(%edx),%eax
40a579:	8b 3c 01             	mov    (%ecx,%eax,1),%edi
40a57c:	85 ff                	test   %edi,%edi
40a57e:	75 6a                	jne    0x40a5ea
40a580:	eb 05                	jmp    0x40a587
40a582:	33 ff                	xor    %edi,%edi
40a584:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40a587:	80 7a 14 00          	cmpb   $0x0,0x14(%edx)
40a58b:	74 13                	je     0x40a5a0
40a58d:	e8 7c eb 00 00       	call   0x41910e
40a592:	3b 70 0c             	cmp    0xc(%eax),%esi
40a595:	73 0d                	jae    0x40a5a4
40a597:	8b 40 08             	mov    0x8(%eax),%eax
40a59a:	8b 7d ec             	mov    -0x14(%ebp),%edi
40a59d:	8b 3c 07             	mov    (%edi,%eax,1),%edi
40a5a0:	85 ff                	test   %edi,%edi
40a5a2:	75 46                	jne    0x40a5ea
40a5a4:	85 db                	test   %ebx,%ebx
40a5a6:	74 04                	je     0x40a5ac
40a5a8:	8b fb                	mov    %ebx,%edi
40a5aa:	eb 3e                	jmp    0x40a5ea
40a5ac:	ff 75 e8             	push   -0x18(%ebp)
40a5af:	8d 45 e0             	lea    -0x20(%ebp),%eax
40a5b2:	50                   	push   %eax
40a5b3:	e8 78 c4 ff ff       	call   0x406a30
40a5b8:	83 c4 08             	add    $0x8,%esp
40a5bb:	83 f8 ff             	cmp    $0xffffffff,%eax
40a5be:	74 50                	je     0x40a610
40a5c0:	8b 7d e0             	mov    -0x20(%ebp),%edi
40a5c3:	89 7d e8             	mov    %edi,-0x18(%ebp)
40a5c6:	57                   	push   %edi
40a5c7:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40a5cb:	e8 12 eb 00 00       	call   0x4190e2
40a5d0:	8b 07                	mov    (%edi),%eax
40a5d2:	83 c4 04             	add    $0x4,%esp
40a5d5:	8b 70 04             	mov    0x4(%eax),%esi
40a5d8:	8b ce                	mov    %esi,%ecx
40a5da:	ff 15 5c e2 43 00    	call   *0x43e25c
40a5e0:	8b cf                	mov    %edi,%ecx
40a5e2:	ff d6                	call   *%esi
40a5e4:	89 3d 88 7b 45 00    	mov    %edi,0x457b88
40a5ea:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40a5ed:	e8 8d e9 00 00       	call   0x418f7f
40a5f2:	8b c7                	mov    %edi,%eax
40a5f4:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40a5f7:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40a5fe:	59                   	pop    %ecx
40a5ff:	5f                   	pop    %edi
40a600:	5e                   	pop    %esi
40a601:	5b                   	pop    %ebx
40a602:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40a605:	33 cd                	xor    %ebp,%ecx
40a607:	e8 9e f5 00 00       	call   0x419baa
40a60c:	8b e5                	mov    %ebp,%esp
40a60e:	5d                   	pop    %ebp
40a60f:	c3                   	ret
40a610:	e8 1b b7 ff ff       	call   0x405d30
40a615:	cc                   	int3
40a616:	cc                   	int3
40a617:	cc                   	int3
40a618:	cc                   	int3
40a619:	cc                   	int3
40a61a:	cc                   	int3
40a61b:	cc                   	int3
40a61c:	cc                   	int3
40a61d:	cc                   	int3
40a61e:	cc                   	int3
40a61f:	cc                   	int3
40a620:	55                   	push   %ebp
40a621:	8b ec                	mov    %esp,%ebp
40a623:	83 ec 10             	sub    $0x10,%esp
40a626:	8b 55 08             	mov    0x8(%ebp),%edx
40a629:	53                   	push   %ebx
40a62a:	8b d9                	mov    %ecx,%ebx
40a62c:	b9 fe ff ff 7f       	mov    $0x7ffffffe,%ecx
40a631:	56                   	push   %esi
40a632:	57                   	push   %edi
40a633:	8b c1                	mov    %ecx,%eax
40a635:	8b 7b 10             	mov    0x10(%ebx),%edi
40a638:	2b c7                	sub    %edi,%eax
40a63a:	89 7d f4             	mov    %edi,-0xc(%ebp)
40a63d:	3b c2                	cmp    %edx,%eax
40a63f:	0f 82 5d 01 00 00    	jb     0x40a7a2
40a645:	8d 04 17             	lea    (%edi,%edx,1),%eax
40a648:	8b 53 14             	mov    0x14(%ebx),%edx
40a64b:	8b f0                	mov    %eax,%esi
40a64d:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a650:	83 ce 07             	or     $0x7,%esi
40a653:	89 55 f8             	mov    %edx,-0x8(%ebp)
40a656:	3b f1                	cmp    %ecx,%esi
40a658:	76 04                	jbe    0x40a65e
40a65a:	8b f1                	mov    %ecx,%esi
40a65c:	eb 18                	jmp    0x40a676
40a65e:	8b c2                	mov    %edx,%eax
40a660:	d1 e8                	shr    $1,%eax
40a662:	2b c8                	sub    %eax,%ecx
40a664:	3b d1                	cmp    %ecx,%edx
40a666:	76 07                	jbe    0x40a66f
40a668:	be fe ff ff 7f       	mov    $0x7ffffffe,%esi
40a66d:	eb 07                	jmp    0x40a676
40a66f:	03 c2                	add    %edx,%eax
40a671:	3b f0                	cmp    %eax,%esi
40a673:	0f 42 f0             	cmovb  %eax,%esi
40a676:	33 c9                	xor    %ecx,%ecx
40a678:	8b c6                	mov    %esi,%eax
40a67a:	83 c0 01             	add    $0x1,%eax
40a67d:	0f 92 c1             	setb   %cl
40a680:	f7 d9                	neg    %ecx
40a682:	0b c8                	or     %eax,%ecx
40a684:	51                   	push   %ecx
40a685:	8b cb                	mov    %ebx,%ecx
40a687:	e8 24 8a ff ff       	call   0x4030b0
40a68c:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a68f:	89 4b 10             	mov    %ecx,0x10(%ebx)
40a692:	8b 4d 10             	mov    0x10(%ebp),%ecx
40a695:	03 c9                	add    %ecx,%ecx
40a697:	89 45 f0             	mov    %eax,-0x10(%ebp)
40a69a:	83 7d f8 08          	cmpl   $0x8,-0x8(%ebp)
40a69e:	89 73 14             	mov    %esi,0x14(%ebx)
40a6a1:	51                   	push   %ecx
40a6a2:	8d 14 01             	lea    (%ecx,%eax,1),%edx
40a6a5:	89 55 fc             	mov    %edx,-0x4(%ebp)
40a6a8:	0f 82 93 00 00 00    	jb     0x40a741
40a6ae:	8b 33                	mov    (%ebx),%esi
40a6b0:	56                   	push   %esi
40a6b1:	50                   	push   %eax
40a6b2:	e8 c9 0f 01 00       	call   0x41b680
40a6b7:	8b 45 14             	mov    0x14(%ebp),%eax
40a6ba:	83 c4 0c             	add    $0xc,%esp
40a6bd:	85 c0                	test   %eax,%eax
40a6bf:	74 1e                	je     0x40a6df
40a6c1:	8b 7d fc             	mov    -0x4(%ebp),%edi
40a6c4:	8b c8                	mov    %eax,%ecx
40a6c6:	8b 45 18             	mov    0x18(%ebp),%eax
40a6c9:	0f b7 d0             	movzwl %ax,%edx
40a6cc:	8b c2                	mov    %edx,%eax
40a6ce:	c1 e2 10             	shl    $0x10,%edx
40a6d1:	0b c2                	or     %edx,%eax
40a6d3:	d1 e9                	shr    $1,%ecx
40a6d5:	f3 ab                	rep stos %eax,%es:(%edi)
40a6d7:	13 c9                	adc    %ecx,%ecx
40a6d9:	66 f3 ab             	rep stos %ax,%es:(%edi)
40a6dc:	8b 7d f4             	mov    -0xc(%ebp),%edi
40a6df:	8b 4d 10             	mov    0x10(%ebp),%ecx
40a6e2:	2b f9                	sub    %ecx,%edi
40a6e4:	8d 04 7d 02 00 00 00 	lea    0x2(,%edi,2),%eax
40a6eb:	8b 7d f0             	mov    -0x10(%ebp),%edi
40a6ee:	50                   	push   %eax
40a6ef:	8d 04 09             	lea    (%ecx,%ecx,1),%eax
40a6f2:	03 c6                	add    %esi,%eax
40a6f4:	50                   	push   %eax
40a6f5:	8b 45 14             	mov    0x14(%ebp),%eax
40a6f8:	03 c1                	add    %ecx,%eax
40a6fa:	8d 04 47             	lea    (%edi,%eax,2),%eax
40a6fd:	50                   	push   %eax
40a6fe:	e8 7d 0f 01 00       	call   0x41b680
40a703:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a706:	83 c4 0c             	add    $0xc,%esp
40a709:	8d 0c 45 02 00 00 00 	lea    0x2(,%eax,2),%ecx
40a710:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40a716:	72 12                	jb     0x40a72a
40a718:	8b 56 fc             	mov    -0x4(%esi),%edx
40a71b:	83 c1 23             	add    $0x23,%ecx
40a71e:	2b f2                	sub    %edx,%esi
40a720:	8d 46 fc             	lea    -0x4(%esi),%eax
40a723:	83 f8 1f             	cmp    $0x1f,%eax
40a726:	77 7f                	ja     0x40a7a7