47040a:	89 3e                	mov    %edi,(%esi)
47040c:	e8 0f 96 f9 ff       	call   0x409a20
470411:	5f                   	pop    %edi
470412:	5e                   	pop    %esi
470413:	33 c0                	xor    %eax,%eax
470415:	5b                   	pop    %ebx
470416:	8b e5                	mov    %ebp,%esp
470418:	5d                   	pop    %ebp
470419:	c2 08 00             	ret    $0x8
47041c:	55                   	push   %ebp
47041d:	8b ec                	mov    %esp,%ebp
47041f:	56                   	push   %esi
470420:	8b 75 08             	mov    0x8(%ebp),%esi
470423:	33 c0                	xor    %eax,%eax
470425:	57                   	push   %edi
470426:	83 7e 08 02          	cmpl   $0x2,0x8(%esi)
47042a:	76 0b                	jbe    0x470437
47042c:	8b 46 04             	mov    0x4(%esi),%eax
47042f:	8b 48 08             	mov    0x8(%eax),%ecx
470432:	e8 65 98 f9 ff       	call   0x409c9c
470437:	8b 56 04             	mov    0x4(%esi),%edx
47043a:	50                   	push   %eax
47043b:	8b 4a 04             	mov    0x4(%edx),%ecx
47043e:	8b 32                	mov    (%edx),%esi
470440:	e8 57 98 f9 ff       	call   0x409c9c
470445:	50                   	push   %eax
470446:	8b ce                	mov    %esi,%ecx
470448:	e8 4f 98 f9 ff       	call   0x409c9c
47044d:	50                   	push   %eax
47044e:	e8 0f 95 01 00       	call   0x489962
470453:	8b 75 0c             	mov    0xc(%ebp),%esi
470456:	8b f8                	mov    %eax,%edi
470458:	8b ce                	mov    %esi,%ecx
47045a:	e8 c1 95 f9 ff       	call   0x409a20
47045f:	89 3e                	mov    %edi,(%esi)
470461:	33 c0                	xor    %eax,%eax
470463:	5f                   	pop    %edi
470464:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
47046b:	5e                   	pop    %esi
47046c:	5d                   	pop    %ebp
47046d:	c2 08 00             	ret    $0x8
470470:	55                   	push   %ebp
470471:	8b ec                	mov    %esp,%ebp
470473:	83 ec 38             	sub    $0x38,%esp
470476:	8b 45 08             	mov    0x8(%ebp),%eax
470479:	53                   	push   %ebx
47047a:	56                   	push   %esi
47047b:	57                   	push   %edi
47047c:	8b 40 04             	mov    0x4(%eax),%eax
47047f:	33 ff                	xor    %edi,%edi
470481:	89 4d fc             	mov    %ecx,-0x4(%ebp)
470484:	89 7d f8             	mov    %edi,-0x8(%ebp)
470487:	8b 70 04             	mov    0x4(%eax),%esi
47048a:	8b ce                	mov    %esi,%ecx
47048c:	83 7e 0c 0e          	cmpl   $0xe,0xc(%esi)
470490:	75 10                	jne    0x4704a2
470492:	8d 45 c8             	lea    -0x38(%ebp),%eax
470495:	33 db                	xor    %ebx,%ebx
470497:	50                   	push   %eax
470498:	43                   	inc    %ebx
470499:	e8 06 77 ff ff       	call   0x467ba4
47049e:	8b c8                	mov    %eax,%ecx
4704a0:	eb 27                	jmp    0x4704c9
4704a2:	6a 02                	push   $0x2
4704a4:	5b                   	pop    %ebx
4704a5:	e8 ed 94 f9 ff       	call   0x409997
4704aa:	8b 4e 08             	mov    0x8(%esi),%ecx
4704ad:	8b 01                	mov    (%ecx),%eax
4704af:	89 45 d8             	mov    %eax,-0x28(%ebp)
4704b2:	8b 41 04             	mov    0x4(%ecx),%eax
4704b5:	89 45 dc             	mov    %eax,-0x24(%ebp)
4704b8:	8b 41 08             	mov    0x8(%ecx),%eax
4704bb:	89 45 e0             	mov    %eax,-0x20(%ebp)
4704be:	8b 41 0c             	mov    0xc(%ecx),%eax
4704c1:	8d 4d d8             	lea    -0x28(%ebp),%ecx
4704c4:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4704c7:	ff 00                	incl   (%eax)
4704c9:	8b 01                	mov    (%ecx),%eax
4704cb:	89 45 e8             	mov    %eax,-0x18(%ebp)
4704ce:	8b 41 04             	mov    0x4(%ecx),%eax
4704d1:	89 45 ec             	mov    %eax,-0x14(%ebp)
4704d4:	8b 41 08             	mov    0x8(%ecx),%eax
4704d7:	89 45 f0             	mov    %eax,-0x10(%ebp)
4704da:	8b 41 0c             	mov    0xc(%ecx),%eax
4704dd:	89 45 f4             	mov    %eax,-0xc(%ebp)
4704e0:	ff 00                	incl   (%eax)
4704e2:	f6 c3 02             	test   $0x2,%bl
4704e5:	74 0b                	je     0x4704f2
4704e7:	8d 4d d8             	lea    -0x28(%ebp),%ecx
4704ea:	83 e3 fd             	and    $0xfffffffd,%ebx
4704ed:	e8 72 55 f9 ff       	call   0x405a64
4704f2:	f6 c3 01             	test   $0x1,%bl
4704f5:	74 08                	je     0x4704ff
4704f7:	8d 4d c8             	lea    -0x38(%ebp),%ecx
4704fa:	e8 65 55 f9 ff       	call   0x405a64
4704ff:	8b 5d fc             	mov    -0x4(%ebp),%ebx
470502:	8d 45 e8             	lea    -0x18(%ebp),%eax
470505:	50                   	push   %eax
470506:	8b cb                	mov    %ebx,%ecx
470508:	e8 b0 9a f9 ff       	call   0x409fbd
47050d:	85 c0                	test   %eax,%eax
47050f:	75 25                	jne    0x470536
470511:	8b 75 0c             	mov    0xc(%ebp),%esi
470514:	8b ce                	mov    %esi,%ecx
470516:	e8 05 95 f9 ff       	call   0x409a20
47051b:	33 c0                	xor    %eax,%eax
47051d:	89 3e                	mov    %edi,(%esi)
47051f:	40                   	inc    %eax
470520:	57                   	push   %edi
470521:	89 46 0c             	mov    %eax,0xc(%esi)
470524:	50                   	push   %eax
470525:	8b 03                	mov    (%ebx),%eax
470527:	8b 48 04             	mov    0x4(%eax),%ecx
47052a:	03 cb                	add    %ebx,%ecx
47052c:	e8 72 65 fe ff       	call   0x456aa3
470531:	83 ce ff             	or     $0xffffffff,%esi
470534:	eb 2d                	jmp    0x470563
470536:	8b 45 08             	mov    0x8(%ebp),%eax
470539:	8d 4d e8             	lea    -0x18(%ebp),%ecx
47053c:	51                   	push   %ecx
47053d:	8b 40 04             	mov    0x4(%eax),%eax
470540:	8b 08                	mov    (%eax),%ecx
470542:	e8 55 97 f9 ff       	call   0x409c9c
470547:	50                   	push   %eax
470548:	e8 d3 94 01 00       	call   0x489a20
47054d:	8b 75 0c             	mov    0xc(%ebp),%esi
470550:	8b f8                	mov    %eax,%edi
470552:	8b ce                	mov    %esi,%ecx
470554:	e8 c7 94 f9 ff       	call   0x409a20
470559:	33 c0                	xor    %eax,%eax
47055b:	89 3e                	mov    %edi,(%esi)
47055d:	40                   	inc    %eax
47055e:	89 46 0c             	mov    %eax,0xc(%esi)
470561:	33 f6                	xor    %esi,%esi
470563:	8d 4d e8             	lea    -0x18(%ebp),%ecx
470566:	e8 f9 54 f9 ff       	call   0x405a64
47056b:	5f                   	pop    %edi
47056c:	8b c6                	mov    %esi,%eax
47056e:	5e                   	pop    %esi
47056f:	5b                   	pop    %ebx
470570:	8b e5                	mov    %ebp,%esp
470572:	5d                   	pop    %ebp
470573:	c2 08 00             	ret    $0x8
470576:	55                   	push   %ebp
470577:	8b ec                	mov    %esp,%ebp
470579:	51                   	push   %ecx
47057a:	53                   	push   %ebx
47057b:	56                   	push   %esi
47057c:	8b 75 08             	mov    0x8(%ebp),%esi
47057f:	57                   	push   %edi
470580:	83 cf ff             	or     $0xffffffff,%edi
470583:	89 7d fc             	mov    %edi,-0x4(%ebp)
470586:	8b df                	mov    %edi,%ebx
470588:	83 7e 08 04          	cmpl   $0x4,0x8(%esi)
47058c:	76 0e                	jbe    0x47059c
47058e:	8b 46 04             	mov    0x4(%esi),%eax
470591:	8b 48 10             	mov    0x10(%eax),%ecx
470594:	e8 03 97 f9 ff       	call   0x409c9c
470599:	89 45 fc             	mov    %eax,-0x4(%ebp)
47059c:	83 7e 08 03          	cmpl   $0x3,0x8(%esi)
4705a0:	76 0d                	jbe    0x4705af
4705a2:	8b 46 04             	mov    0x4(%esi),%eax
4705a5:	8b 48 0c             	mov    0xc(%eax),%ecx
4705a8:	e8 ef 96 f9 ff       	call   0x409c9c
4705ad:	8b f8                	mov    %eax,%edi
4705af:	83 7e 08 02          	cmpl   $0x2,0x8(%esi)
4705b3:	76 0d                	jbe    0x4705c2
4705b5:	8b 4e 04             	mov    0x4(%esi),%ecx
4705b8:	8b 49 08             	mov    0x8(%ecx),%ecx
4705bb:	e8 dc 96 f9 ff       	call   0x409c9c
4705c0:	8b d8                	mov    %eax,%ebx
4705c2:	8b 56 04             	mov    0x4(%esi),%edx
4705c5:	ff 75 fc             	push   -0x4(%ebp)
4705c8:	57                   	push   %edi
4705c9:	8b 4a 04             	mov    0x4(%edx),%ecx
4705cc:	8b 32                	mov    (%edx),%esi
4705ce:	53                   	push   %ebx
4705cf:	e8 c8 96 f9 ff       	call   0x409c9c
4705d4:	50                   	push   %eax
4705d5:	8b ce                	mov    %esi,%ecx
4705d7:	e8 c0 96 f9 ff       	call   0x409c9c
4705dc:	50                   	push   %eax
4705dd:	e8 81 94 01 00       	call   0x489a63
4705e2:	8b 75 0c             	mov    0xc(%ebp),%esi
4705e5:	8b f8                	mov    %eax,%edi
4705e7:	8b ce                	mov    %esi,%ecx
4705e9:	e8 32 94 f9 ff       	call   0x409a20
4705ee:	89 3e                	mov    %edi,(%esi)
4705f0:	33 c0                	xor    %eax,%eax
4705f2:	5f                   	pop    %edi
4705f3:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
4705fa:	5e                   	pop    %esi
4705fb:	5b                   	pop    %ebx
4705fc:	8b e5                	mov    %ebp,%esp
4705fe:	5d                   	pop    %ebp
4705ff:	c2 08 00             	ret    $0x8
470602:	55                   	push   %ebp
470603:	8b ec                	mov    %esp,%ebp
470605:	56                   	push   %esi
470606:	8b 75 08             	mov    0x8(%ebp),%esi
470609:	83 c8 ff             	or     $0xffffffff,%eax
47060c:	57                   	push   %edi
47060d:	83 7e 08 01          	cmpl   $0x1,0x8(%esi)
470611:	76 0b                	jbe    0x47061e
470613:	8b 46 04             	mov    0x4(%esi),%eax
470616:	8b 48 04             	mov    0x4(%eax),%ecx
470619:	e8 7e 96 f9 ff       	call   0x409c9c
47061e:	8b 4e 04             	mov    0x4(%esi),%ecx
470621:	50                   	push   %eax
470622:	8b 09                	mov    (%ecx),%ecx
470624:	e8 73 96 f9 ff       	call   0x409c9c
470629:	50                   	push   %eax
47062a:	e8 c8 95 01 00       	call   0x489bf7
47062f:	8b 75 0c             	mov    0xc(%ebp),%esi
470632:	8b f8                	mov    %eax,%edi
470634:	8b ce                	mov    %esi,%ecx
470636:	e8 e5 93 f9 ff       	call   0x409a20
47063b:	89 3e                	mov    %edi,(%esi)
47063d:	33 c0                	xor    %eax,%eax
47063f:	5f                   	pop    %edi
470640:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
470647:	5e                   	pop    %esi
470648:	5d                   	pop    %ebp
470649:	c2 08 00             	ret    $0x8
47064c:	55                   	push   %ebp
47064d:	8b ec                	mov    %esp,%ebp
47064f:	8b 45 08             	mov    0x8(%ebp),%eax
470652:	56                   	push   %esi
470653:	57                   	push   %edi
470654:	8b 40 04             	mov    0x4(%eax),%eax
470657:	8b 48 04             	mov    0x4(%eax),%ecx
47065a:	8b 30                	mov    (%eax),%esi
47065c:	e8 3b 96 f9 ff       	call   0x409c9c
470661:	50                   	push   %eax
470662:	8b ce                	mov    %esi,%ecx
470664:	e8 33 96 f9 ff       	call   0x409c9c
470669:	50                   	push   %eax
47066a:	e8 1c 96 01 00       	call   0x489c8b
47066f:	8b 75 0c             	mov    0xc(%ebp),%esi
470672:	8b f8                	mov    %eax,%edi
470674:	8b ce                	mov    %esi,%ecx
470676:	e8 a5 93 f9 ff       	call   0x409a20
47067b:	89 3e                	mov    %edi,(%esi)
47067d:	33 c0                	xor    %eax,%eax
47067f:	5f                   	pop    %edi
470680:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
470687:	5e                   	pop    %esi
470688:	5d                   	pop    %ebp
470689:	c2 08 00             	ret    $0x8
47068c:	55                   	push   %ebp
47068d:	8b ec                	mov    %esp,%ebp
47068f:	56                   	push   %esi
470690:	8b 75 08             	mov    0x8(%ebp),%esi
470693:	83 c8 ff             	or     $0xffffffff,%eax
470696:	57                   	push   %edi
470697:	83 7e 08 02          	cmpl   $0x2,0x8(%esi)
47069b:	76 0b                	jbe    0x4706a8
47069d:	8b 46 04             	mov    0x4(%esi),%eax
4706a0:	8b 48 08             	mov    0x8(%eax),%ecx
4706a3:	e8 f4 95 f9 ff       	call   0x409c9c
4706a8:	8b 56 04             	mov    0x4(%esi),%edx
4706ab:	50                   	push   %eax
4706ac:	8b 4a 04             	mov    0x4(%edx),%ecx
4706af:	8b 32                	mov    (%edx),%esi
4706b1:	e8 e6 95 f9 ff       	call   0x409c9c
4706b6:	50                   	push   %eax
4706b7:	8b ce                	mov    %esi,%ecx
4706b9:	e8 de 95 f9 ff       	call   0x409c9c
4706be:	50                   	push   %eax
4706bf:	e8 01 9c 01 00       	call   0x48a2c5
4706c4:	8b 75 0c             	mov    0xc(%ebp),%esi
4706c7:	8b f8                	mov    %eax,%edi
4706c9:	8b ce                	mov    %esi,%ecx
4706cb:	e8 50 93 f9 ff       	call   0x409a20
4706d0:	89 3e                	mov    %edi,(%esi)
4706d2:	33 c0                	xor    %eax,%eax
4706d4:	5f                   	pop    %edi
4706d5:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
4706dc:	5e                   	pop    %esi
4706dd:	5d                   	pop    %ebp
4706de:	c2 08 00             	ret    $0x8
4706e1:	55                   	push   %ebp
4706e2:	8b ec                	mov    %esp,%ebp
4706e4:	83 ec 0c             	sub    $0xc,%esp
4706e7:	53                   	push   %ebx
4706e8:	56                   	push   %esi
4706e9:	57                   	push   %edi
4706ea:	8b 7d 08             	mov    0x8(%ebp),%edi
4706ed:	33 db                	xor    %ebx,%ebx
4706ef:	89 5d f8             	mov    %ebx,-0x8(%ebp)
4706f2:	88 5d fc             	mov    %bl,-0x4(%ebp)
4706f5:	88 5d 08             	mov    %bl,0x8(%ebp)
4706f8:	8b 77 08             	mov    0x8(%edi),%esi
4706fb:	83 fe 03             	cmp    $0x3,%esi
4706fe:	72 25                	jb     0x470725
470700:	8b 47 04             	mov    0x4(%edi),%eax
470703:	6a 29                	push   $0x29
470705:	8b 40 08             	mov    0x8(%eax),%eax
470708:	8b c8                	mov    %eax,%ecx
47070a:	89 45 f4             	mov    %eax,-0xc(%ebp)
47070d:	e8 9c 96 f9 ff       	call   0x409dae
470712:	84 c0                	test   %al,%al
470714:	75 0f                	jne    0x470725
470716:	8b 5d f4             	mov    -0xc(%ebp),%ebx
470719:	8b cb                	mov    %ebx,%ecx
47071b:	e8 77 92 f9 ff       	call   0x409997
470720:	8b 43 08             	mov    0x8(%ebx),%eax
470723:	8b 18                	mov    (%eax),%ebx
470725:	83 fe 04             	cmp    $0x4,%esi
470728:	72 21                	jb     0x47074b
47072a:	8b 47 04             	mov    0x4(%edi),%eax
47072d:	6a 29                	push   $0x29
47072f:	8b 40 0c             	mov    0xc(%eax),%eax
470732:	8b c8                	mov    %eax,%ecx
470734:	89 45 f4             	mov    %eax,-0xc(%ebp)
470737:	e8 72 96 f9 ff       	call   0x409dae
47073c:	84 c0                	test   %al,%al
47073e:	75 0b                	jne    0x47074b
470740:	8b 4d f4             	mov    -0xc(%ebp),%ecx
470743:	e8 54 95 f9 ff       	call   0x409c9c
470748:	89 45 f8             	mov    %eax,-0x8(%ebp)
47074b:	83 fe 05             	cmp    $0x5,%esi
47074e:	72 31                	jb     0x470781
470750:	8b 4f 04             	mov    0x4(%edi),%ecx
470753:	6a 29                	push   $0x29
470755:	8b 71 10             	mov    0x10(%ecx),%esi
470758:	8b ce                	mov    %esi,%ecx
47075a:	e8 4f 96 f9 ff       	call   0x409dae
47075f:	84 c0                	test   %al,%al
470761:	75 1e                	jne    0x470781
470763:	8b ce                	mov    %esi,%ecx
470765:	e8 32 95 f9 ff       	call   0x409c9c
47076a:	24 01                	and    $0x1,%al
47076c:	88 45 fc             	mov    %al,-0x4(%ebp)
47076f:	8b 47 04             	mov    0x4(%edi),%eax
470772:	8b 48 10             	mov    0x10(%eax),%ecx
470775:	e8 22 95 f9 ff       	call   0x409c9c
47077a:	d0 e8                	shr    $1,%al
47077c:	24 01                	and    $0x1,%al
47077e:	88 45 08             	mov    %al,0x8(%ebp)
470781:	8b 47 04             	mov    0x4(%edi),%eax
470784:	8b 70 04             	mov    0x4(%eax),%esi
470787:	8b ce                	mov    %esi,%ecx
470789:	e8 09 92 f9 ff       	call   0x409997
47078e:	ff 75 08             	push   0x8(%ebp)
470791:	8b 46 08             	mov    0x8(%esi),%eax
470794:	ff 75 fc             	push   -0x4(%ebp)
470797:	ff 75 f8             	push   -0x8(%ebp)
47079a:	8b 08                	mov    (%eax),%ecx
47079c:	8b 47 04             	mov    0x4(%edi),%eax