40a33b:	40                   	inc    %eax
40a33c:	85 c0                	test   %eax,%eax
40a33e:	78 7e                	js     0x40a3be
40a340:	0f 8e 51 fd ff ff    	jle    0x40a097
40a346:	8b 44 24 34          	mov    0x34(%esp),%eax
40a34a:	8b 54 24 30          	mov    0x30(%esp),%edx
40a34e:	8b 4a 1c             	mov    0x1c(%edx),%ecx
40a351:	85 c9                	test   %ecx,%ecx
40a353:	0f 84 43 fd ff ff    	je     0x40a09c
40a359:	8b 51 04             	mov    0x4(%ecx),%edx
40a35c:	3b d0                	cmp    %eax,%edx
40a35e:	0f 87 0c 06 00 00    	ja     0x40a970
40a364:	8b 44 24 18          	mov    0x18(%esp),%eax
40a368:	89 54 24 40          	mov    %edx,0x40(%esp)
40a36c:	8b 00                	mov    (%eax),%eax
40a36e:	89 44 24 38          	mov    %eax,0x38(%esp)
40a372:	8b 01                	mov    (%ecx),%eax
40a374:	89 44 24 48          	mov    %eax,0x48(%esp)
40a378:	8b 44 24 34          	mov    0x34(%esp),%eax
40a37c:	85 d2                	test   %edx,%edx
40a37e:	74 31                	je     0x40a3b1
40a380:	8b 44 24 48          	mov    0x48(%esp),%eax
40a384:	8b 7c 24 38          	mov    0x38(%esp),%edi
40a388:	66 8b 00             	mov    (%eax),%ax
40a38b:	66 3b 07             	cmp    (%edi),%ax
40a38e:	8b 7d 10             	mov    0x10(%ebp),%edi
40a391:	8b 44 24 48          	mov    0x48(%esp),%eax
40a395:	0f 85 b5 00 00 00    	jne    0x40a450
40a39b:	83 44 24 38 02       	addl   $0x2,0x38(%esp)
40a3a0:	83 c0 02             	add    $0x2,%eax
40a3a3:	ff 4c 24 40          	decl   0x40(%esp)
40a3a7:	89 44 24 48          	mov    %eax,0x48(%esp)
40a3ab:	75 d7                	jne    0x40a384
40a3ad:	8b 44 24 34          	mov    0x34(%esp),%eax
40a3b1:	3b d0                	cmp    %eax,%edx
40a3b3:	0f 82 a3 00 00 00    	jb     0x40a45c
40a3b9:	e9 b9 00 00 00       	jmp    0x40a477
40a3be:	8b 44 24 34          	mov    0x34(%esp),%eax
40a3c2:	8b 54 24 30          	mov    0x30(%esp),%edx
40a3c6:	8b 4a 18             	mov    0x18(%edx),%ecx
40a3c9:	85 c9                	test   %ecx,%ecx
40a3cb:	0f 84 cb fc ff ff    	je     0x40a09c
40a3d1:	8b 51 04             	mov    0x4(%ecx),%edx
40a3d4:	3b c2                	cmp    %edx,%eax
40a3d6:	0f 87 d3 05 00 00    	ja     0x40a9af
40a3dc:	8b 11                	mov    (%ecx),%edx
40a3de:	89 44 24 38          	mov    %eax,0x38(%esp)
40a3e2:	8b 44 24 18          	mov    0x18(%esp),%eax
40a3e6:	8b 00                	mov    (%eax),%eax
40a3e8:	89 44 24 48          	mov    %eax,0x48(%esp)
40a3ec:	8b 44 24 34          	mov    0x34(%esp),%eax
40a3f0:	85 c0                	test   %eax,%eax
40a3f2:	0f 84 df 02 00 00    	je     0x40a6d7
40a3f8:	8b 44 24 48          	mov    0x48(%esp),%eax
40a3fc:	8d 64 24 00          	lea    0x0(%esp),%esp
40a400:	66 8b 00             	mov    (%eax),%ax
40a403:	66 3b 02             	cmp    (%edx),%ax
40a406:	8b 44 24 48          	mov    0x48(%esp),%eax
40a40a:	0f 84 af 02 00 00    	je     0x40a6bf
40a410:	66 8b 00             	mov    (%eax),%ax
40a413:	66 3b 02             	cmp    (%edx),%ax
40a416:	73 1b                	jae    0x40a433
40a418:	8b 54 24 30          	mov    0x30(%esp),%edx
40a41c:	8b 41 1c             	mov    0x1c(%ecx),%eax
40a41f:	89 42 18             	mov    %eax,0x18(%edx)
40a422:	8b 06                	mov    (%esi),%eax
40a424:	89 41 1c             	mov    %eax,0x1c(%ecx)
40a427:	89 0e                	mov    %ecx,(%esi)
40a429:	83 79 18 00          	cmpl   $0x0,0x18(%ecx)
40a42d:	0f 84 69 fc ff ff    	je     0x40a09c
40a433:	8b 4c 24 3c          	mov    0x3c(%esp),%ecx
40a437:	8b 06                	mov    (%esi),%eax
40a439:	89 41 18             	mov    %eax,0x18(%ecx)
40a43c:	8b 06                	mov    (%esi),%eax
40a43e:	89 44 24 3c          	mov    %eax,0x3c(%esp)
40a442:	8b 40 18             	mov    0x18(%eax),%eax
40a445:	89 06                	mov    %eax,(%esi)
40a447:	8b 44 24 18          	mov    0x18(%esp),%eax
40a44b:	e9 71 fe ff ff       	jmp    0x40a2c1
40a450:	8b 54 24 38          	mov    0x38(%esp),%edx
40a454:	66 8b 00             	mov    (%eax),%ax
40a457:	66 3b 02             	cmp    (%edx),%ax
40a45a:	73 1b                	jae    0x40a477
40a45c:	8b 54 24 30          	mov    0x30(%esp),%edx
40a460:	8b 41 18             	mov    0x18(%ecx),%eax
40a463:	89 42 1c             	mov    %eax,0x1c(%edx)
40a466:	8b 06                	mov    (%esi),%eax
40a468:	89 41 18             	mov    %eax,0x18(%ecx)
40a46b:	89 0e                	mov    %ecx,(%esi)
40a46d:	83 79 1c 00          	cmpl   $0x0,0x1c(%ecx)
40a471:	0f 84 25 fc ff ff    	je     0x40a09c
40a477:	8b 4c 24 60          	mov    0x60(%esp),%ecx
40a47b:	8b 06                	mov    (%esi),%eax
40a47d:	89 41 1c             	mov    %eax,0x1c(%ecx)
40a480:	8b 06                	mov    (%esi),%eax
40a482:	89 44 24 60          	mov    %eax,0x60(%esp)
40a486:	8b 40 1c             	mov    0x1c(%eax),%eax
40a489:	89 06                	mov    %eax,(%esi)
40a48b:	8b 44 24 18          	mov    0x18(%esp),%eax
40a48f:	e9 2d fe ff ff       	jmp    0x40a2c1
40a494:	83 f8 06             	cmp    $0x6,%eax
40a497:	77 3a                	ja     0x40a4d3
40a499:	ff 24 85 08 b8 40 00 	jmp    *0x40b808(,%eax,4)
40a4a0:	84 c9                	test   %cl,%cl
40a4a2:	0f 85 3e 05 00 00    	jne    0x40a9e6
40a4a8:	6a 08                	push   $0x8
40a4aa:	e8 47 6b 01 00       	call   0x420ff6
40a4af:	8b c8                	mov    %eax,%ecx
40a4b1:	83 c4 04             	add    $0x4,%esp
40a4b4:	85 c9                	test   %ecx,%ecx
40a4b6:	0f 84 3b 12 00 00    	je     0x40b6f7
40a4bc:	89 31                	mov    %esi,(%ecx)
40a4be:	8b 44 24 1c          	mov    0x1c(%esp),%eax
40a4c2:	89 41 04             	mov    %eax,0x4(%ecx)
40a4c5:	8b c1                	mov    %ecx,%eax
40a4c7:	89 44 24 1c          	mov    %eax,0x1c(%esp)
40a4cb:	89 44 24 54          	mov    %eax,0x54(%esp)
40a4cf:	ff 44 24 50          	incl   0x50(%esp)
40a4d3:	83 fe 07             	cmp    $0x7,%esi
40a4d6:	0f 84 48 0d 00 00    	je     0x40b224
40a4dc:	83 fe 08             	cmp    $0x8,%esi
40a4df:	0f 84 3f 0d 00 00    	je     0x40b224
40a4e5:	8b 75 0c             	mov    0xc(%ebp),%esi
40a4e8:	8b 7c 24 20          	mov    0x20(%esp),%edi
40a4ec:	8b 44 24 28          	mov    0x28(%esp),%eax
40a4f0:	89 7d 10             	mov    %edi,0x10(%ebp)
40a4f3:	89 44 24 08          	mov    %eax,0x8(%esp)
40a4f7:	e9 0b fc ff ff       	jmp    0x40a107
40a4fc:	8b 74 24 24          	mov    0x24(%esp),%esi
40a500:	c7 44 24 10 16 00 00 	movl   $0x16,0x10(%esp)
40a507:	00
40a508:	85 f6                	test   %esi,%esi
40a50a:	0f 85 e2 04 00 00    	jne    0x40a9f2
40a510:	81 ff 88 74 4c 00    	cmp    $0x4c7488,%edi
40a516:	74 3e                	je     0x40a556
40a518:	83 7f 0c 04          	cmpl   $0x4,0xc(%edi)
40a51c:	0f 84 55 04 00 00    	je     0x40a977
40a522:	8b 77 08             	mov    0x8(%edi),%esi
40a525:	85 f6                	test   %esi,%esi
40a527:	0f 85 5c 04 00 00    	jne    0x40a989
40a52d:	8b 47 0c             	mov    0xc(%edi),%eax
40a530:	83 f8 05             	cmp    $0x5,%eax
40a533:	0f 8d 9c 62 03 00    	jge    0x4407d5
40a539:	68 88 74 4c 00       	push   $0x4c7488
40a53e:	8b cf                	mov    %edi,%ecx
40a540:	c7 47 0c 01 00 00 00 	movl   $0x1,0xc(%edi)
40a547:	c7 07 00 00 00 00    	movl   $0x0,(%edi)
40a54d:	e8 6e f5 ff ff       	call   0x409ac0
40a552:	8b 74 24 24          	mov    0x24(%esp),%esi
40a556:	8b 54 24 08          	mov    0x8(%esp),%edx
40a55a:	8b 45 0c             	mov    0xc(%ebp),%eax
40a55d:	46                   	inc    %esi
40a55e:	89 74 24 24          	mov    %esi,0x24(%esp)
40a562:	8b 08                	mov    (%eax),%ecx
40a564:	8b 45 08             	mov    0x8(%ebp),%eax
40a567:	8b 40 04             	mov    0x4(%eax),%eax
40a56a:	8b 04 88             	mov    (%eax,%ecx,4),%eax
40a56d:	83 fe 01             	cmp    $0x1,%esi
40a570:	0f 85 c8 04 00 00    	jne    0x40aa3e
40a576:	8b f7                	mov    %edi,%esi
40a578:	8b 4e 08             	mov    0x8(%esi),%ecx
40a57b:	8b 00                	mov    (%eax),%eax
40a57d:	89 44 24 4c          	mov    %eax,0x4c(%esp)
40a581:	85 c9                	test   %ecx,%ecx
40a583:	0f 85 12 63 03 00    	jne    0x44089b
40a589:	8b 46 0c             	mov    0xc(%esi),%eax
40a58c:	83 f8 05             	cmp    $0x5,%eax
40a58f:	0f 8d 18 63 03 00    	jge    0x4408ad
40a595:	8b 44 24 4c          	mov    0x4c(%esp),%eax
40a599:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
40a5a0:	89 06                	mov    %eax,(%esi)
40a5a2:	8b 75 0c             	mov    0xc(%ebp),%esi
40a5a5:	ff 06                	incl   (%esi)
40a5a7:	e9 5b fb ff ff       	jmp    0x40a107
40a5ac:	8b 44 24 18          	mov    0x18(%esp),%eax
40a5b0:	8b 35 70 72 4c 00    	mov    0x4c7270,%esi
40a5b6:	89 74 24 34          	mov    %esi,0x34(%esp)
40a5ba:	85 f6                	test   %esi,%esi
40a5bc:	0f 84 80 67 03 00    	je     0x440d42
40a5c2:	8b 0d 40 74 4c 00    	mov    0x4c7440,%ecx
40a5c8:	c6 44 24 17 00       	movb   $0x0,0x17(%esp)
40a5cd:	f6 c1 01             	test   $0x1,%cl
40a5d0:	0f 84 9d 65 03 00    	je     0x440b73
40a5d6:	c7 05 60 74 4c 00 00 	movl   $0x0,0x4c7460
40a5dd:	00 00 00
40a5e0:	c7 05 5c 74 4c 00 00 	movl   $0x0,0x4c745c
40a5e7:	00 00 00
40a5ea:	c7 44 24 38 44 74 4c 	movl   $0x4c7444,0x38(%esp)
40a5f1:	00
40a5f2:	c7 44 24 60 44 74 4c 	movl   $0x4c7444,0x60(%esp)
40a5f9:	00
40a5fa:	8d 9b 00 00 00 00    	lea    0x0(%ebx),%ebx
40a600:	8b 50 04             	mov    0x4(%eax),%edx
40a603:	8b 4e 04             	mov    0x4(%esi),%ecx
40a606:	89 54 24 48          	mov    %edx,0x48(%esp)
40a60a:	85 d2                	test   %edx,%edx
40a60c:	0f 84 94 65 03 00    	je     0x440ba6
40a612:	85 c9                	test   %ecx,%ecx
40a614:	0f 84 94 65 03 00    	je     0x440bae
40a61a:	3b d1                	cmp    %ecx,%edx
40a61c:	0f 82 90 01 00 00    	jb     0x40a7b2
40a622:	8b 4c 24 34          	mov    0x34(%esp),%ecx
40a626:	8b f2                	mov    %edx,%esi
40a628:	8b 10                	mov    (%eax),%edx
40a62a:	8b 09                	mov    (%ecx),%ecx
40a62c:	85 f6                	test   %esi,%esi
40a62e:	74 15                	je     0x40a645
40a630:	66 8b 02             	mov    (%edx),%ax
40a633:	66 3b 01             	cmp    (%ecx),%ax
40a636:	0f 85 c0 01 00 00    	jne    0x40a7fc
40a63c:	83 c2 02             	add    $0x2,%edx
40a63f:	83 c1 02             	add    $0x2,%ecx
40a642:	4e                   	dec    %esi
40a643:	75 eb                	jne    0x40a630
40a645:	33 c0                	xor    %eax,%eax
40a647:	8b 74 24 34          	mov    0x34(%esp),%esi
40a64b:	8b 54 24 48          	mov    0x48(%esp),%edx
40a64f:	85 c0                	test   %eax,%eax
40a651:	0f 88 b0 01 00 00    	js     0x40a807
40a657:	0f 8f 90 00 00 00    	jg     0x40a6ed
40a65d:	c6 44 24 17 01       	movb   $0x1,0x17(%esp)
40a662:	80 7c 24 17 00       	cmpb   $0x0,0x17(%esp)
40a667:	8b 4c 24 60          	mov    0x60(%esp),%ecx
40a66b:	8b 46 18             	mov    0x18(%esi),%eax
40a66e:	89 41 1c             	mov    %eax,0x1c(%ecx)
40a671:	a1 70 72 4c 00       	mov    0x4c7270,%eax
40a676:	8b 4c 24 38          	mov    0x38(%esp),%ecx
40a67a:	8b 40 1c             	mov    0x1c(%eax),%eax
40a67d:	89 41 18             	mov    %eax,0x18(%ecx)
40a680:	8b 0d 70 72 4c 00    	mov    0x4c7270,%ecx
40a686:	a1 60 74 4c 00       	mov    0x4c7460,%eax
40a68b:	89 41 18             	mov    %eax,0x18(%ecx)
40a68e:	8b 0d 70 72 4c 00    	mov    0x4c7270,%ecx
40a694:	a1 5c 74 4c 00       	mov    0x4c745c,%eax
40a699:	89 41 1c             	mov    %eax,0x1c(%ecx)
40a69c:	0f 84 a0 66 03 00    	je     0x440d42
40a6a2:	a1 70 72 4c 00       	mov    0x4c7270,%eax
40a6a7:	85 c0                	test   %eax,%eax
40a6a9:	0f 84 93 66 03 00    	je     0x440d42
40a6af:	8b 40 14             	mov    0x14(%eax),%eax
40a6b2:	85 c0                	test   %eax,%eax
40a6b4:	0f 85 2e fa ff ff    	jne    0x40a0e8
40a6ba:	e9 83 66 03 00       	jmp    0x440d42
40a6bf:	83 c0 02             	add    $0x2,%eax
40a6c2:	83 c2 02             	add    $0x2,%edx
40a6c5:	ff 4c 24 38          	decl   0x38(%esp)
40a6c9:	89 44 24 48          	mov    %eax,0x48(%esp)
40a6cd:	0f 85 2d fd ff ff    	jne    0x40a400
40a6d3:	8b 44 24 34          	mov    0x34(%esp),%eax
40a6d7:	3b 41 04             	cmp    0x4(%ecx),%eax
40a6da:	0f 83 53 fd ff ff    	jae    0x40a433
40a6e0:	e9 33 fd ff ff       	jmp    0x40a418
40a6e5:	8b 42 04             	mov    0x4(%edx),%eax
40a6e8:	e9 95 fa ff ff       	jmp    0x40a182
40a6ed:	8d 46 1c             	lea    0x1c(%esi),%eax
40a6f0:	89 44 24 30          	mov    %eax,0x30(%esp)
40a6f4:	8b 00                	mov    (%eax),%eax
40a6f6:	85 c0                	test   %eax,%eax
40a6f8:	0f 84 64 ff ff ff    	je     0x40a662
40a6fe:	8b 48 04             	mov    0x4(%eax),%ecx
40a701:	89 4c 24 3c          	mov    %ecx,0x3c(%esp)
40a705:	3b ca                	cmp    %edx,%ecx
40a707:	76 06                	jbe    0x40a70f
40a709:	8b ca                	mov    %edx,%ecx
40a70b:	89 54 24 3c          	mov    %edx,0x3c(%esp)
40a70f:	8b 10                	mov    (%eax),%edx
40a711:	8b 44 24 3c          	mov    0x3c(%esp),%eax
40a715:	89 4c 24 40          	mov    %ecx,0x40(%esp)
40a719:	8b 4c 24 18          	mov    0x18(%esp),%ecx
40a71d:	8b 09                	mov    (%ecx),%ecx
40a71f:	85 c0                	test   %eax,%eax
40a721:	74 18                	je     0x40a73b
40a723:	66 8b 02             	mov    (%edx),%ax
40a726:	66 3b 01             	cmp    (%ecx),%ax
40a729:	75 18                	jne    0x40a743
40a72b:	83 c2 02             	add    $0x2,%edx
40a72e:	83 c1 02             	add    $0x2,%ecx
40a731:	ff 4c 24 40          	decl   0x40(%esp)
40a735:	75 ec                	jne    0x40a723
40a737:	8b 44 24 3c          	mov    0x3c(%esp),%eax
40a73b:	3b 44 24 48          	cmp    0x48(%esp),%eax
40a73f:	72 04                	jb     0x40a745
40a741:	eb 25                	jmp    0x40a768
40a743:	73 23                	jae    0x40a768
40a745:	8b 4c 24 30          	mov    0x30(%esp),%ecx
40a749:	8b 31                	mov    (%ecx),%esi
40a74b:	8b 46 18             	mov    0x18(%esi),%eax
40a74e:	89 01                	mov    %eax,(%ecx)
40a750:	a1 70 72 4c 00       	mov    0x4c7270,%eax
40a755:	89 46 18             	mov    %eax,0x18(%esi)
40a758:	89 35 70 72 4c 00    	mov    %esi,0x4c7270
40a75e:	83 7e 1c 00          	cmpl   $0x0,0x1c(%esi)
40a762:	0f 84 fa fe ff ff    	je     0x40a662
40a768:	8b 4c 24 60          	mov    0x60(%esp),%ecx
40a76c:	89 71 1c             	mov    %esi,0x1c(%ecx)
40a76f:	a1 70 72 4c 00       	mov    0x4c7270,%eax
40a774:	89 44 24 60          	mov    %eax,0x60(%esp)
40a778:	8b 70 1c             	mov    0x1c(%eax),%esi
40a77b:	8b 44 24 18          	mov    0x18(%esp),%eax
40a77f:	89 74 24 34          	mov    %esi,0x34(%esp)
40a783:	89 35 70 72 4c 00    	mov    %esi,0x4c7270
40a789:	e9 72 fe ff ff       	jmp    0x40a600
40a78e:	8d 44 24 20          	lea    0x20(%esp),%eax
40a792:	50                   	push   %eax
40a793:	8d 44 24 54          	lea    0x54(%esp),%eax
40a797:	50                   	push   %eax
40a798:	e8 c3 12 00 00       	call   0x40ba60
40a79d:	85 c0                	test   %eax,%eax
40a79f:	0f 88 da 5c 03 00    	js     0x44047f
40a7a5:	8b 44 24 54          	mov    0x54(%esp),%eax
40a7a9:	89 44 24 1c          	mov    %eax,0x1c(%esp)
40a7ad:	e9 be f9 ff ff       	jmp    0x40a170
40a7b2:	8b 7c 24 18          	mov    0x18(%esp),%edi
40a7b6:	8b 06                	mov    (%esi),%eax
40a7b8:	89 44 24 30          	mov    %eax,0x30(%esp)
40a7bc:	8b 07                	mov    (%edi),%eax
40a7be:	8b 7d 10             	mov    0x10(%ebp),%edi
40a7c1:	89 44 24 3c          	mov    %eax,0x3c(%esp)
40a7c5:	85 c9                	test   %ecx,%ecx
40a7c7:	0f 84 00 02 00 00    	je     0x40a9cd
40a7cd:	8d 49 00             	lea    0x0(%ecx),%ecx
40a7d0:	8b 7c 24 30          	mov    0x30(%esp),%edi
40a7d4:	66 8b 00             	mov    (%eax),%ax
40a7d7:	66 3b 07             	cmp    (%edi),%ax
40a7da:	8b 7d 10             	mov    0x10(%ebp),%edi
40a7dd:	8b 44 24 3c          	mov    0x3c(%esp),%eax
40a7e1:	0f 84 d3 01 00 00    	je     0x40a9ba
40a7e7:	66 8b 00             	mov    (%eax),%ax
40a7ea:	8b 4c 24 30          	mov    0x30(%esp),%ecx
40a7ee:	66 3b 01             	cmp    (%ecx),%ax
40a7f1:	1b c0                	sbb    %eax,%eax
40a7f3:	83 e0 fe             	and    $0xfffffffe,%eax
40a7f6:	40                   	inc    %eax
40a7f7:	e9 53 fe ff ff       	jmp    0x40a64f
40a7fc:	1b c0                	sbb    %eax,%eax
40a7fe:	83 e0 fe             	and    $0xfffffffe,%eax
40a801:	40                   	inc    %eax
40a802:	e9 40 fe ff ff       	jmp    0x40a647
40a807:	8b 4e 18             	mov    0x18(%esi),%ecx
40a80a:	8d 46 18             	lea    0x18(%esi),%eax
40a80d:	89 44 24 48          	mov    %eax,0x48(%esp)
40a811:	85 c9                	test   %ecx,%ecx
40a813:	0f 84 49 fe ff ff    	je     0x40a662
40a819:	8b 41 04             	mov    0x4(%ecx),%eax
40a81c:	3b d0                	cmp    %eax,%edx
40a81e:	0f 87 d2 0a 00 00    	ja     0x40b2f6
40a824:	8b 7c 24 18          	mov    0x18(%esp),%edi
40a828:	8b 01                	mov    (%ecx),%eax
40a82a:	89 44 24 30          	mov    %eax,0x30(%esp)
40a82e:	89 54 24 40          	mov    %edx,0x40(%esp)