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
47079f:	53                   	push   %ebx
4707a0:	51                   	push   %ecx
4707a1:	8b 08                	mov    (%eax),%ecx
4707a3:	e8 f4 94 f9 ff       	call   0x409c9c
4707a8:	50                   	push   %eax
4707a9:	e8 7a 9c 01 00       	call   0x48a428
4707ae:	8b 75 0c             	mov    0xc(%ebp),%esi
4707b1:	8b f8                	mov    %eax,%edi
4707b3:	8b ce                	mov    %esi,%ecx
4707b5:	e8 66 92 f9 ff       	call   0x409a20
4707ba:	89 3e                	mov    %edi,(%esi)
4707bc:	33 c0                	xor    %eax,%eax
4707be:	5f                   	pop    %edi
4707bf:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
4707c6:	5e                   	pop    %esi
4707c7:	5b                   	pop    %ebx
4707c8:	8b e5                	mov    %ebp,%esp
4707ca:	5d                   	pop    %ebp
4707cb:	c2 08 00             	ret    $0x8
4707ce:	55                   	push   %ebp
4707cf:	8b ec                	mov    %esp,%ebp
4707d1:	8b 4d 08             	mov    0x8(%ebp),%ecx
4707d4:	33 c0                	xor    %eax,%eax
4707d6:	39 41 08             	cmp    %eax,0x8(%ecx)
4707d9:	76 0a                	jbe    0x4707e5
4707db:	8b 41 04             	mov    0x4(%ecx),%eax
4707de:	8b 08                	mov    (%eax),%ecx
4707e0:	e8 d6 81 ff ff       	call   0x4689bb
4707e5:	56                   	push   %esi
4707e6:	57                   	push   %edi
4707e7:	50                   	push   %eax
4707e8:	e8 22 a8 01 00       	call   0x48b00f
4707ed:	8b 75 0c             	mov    0xc(%ebp),%esi
4707f0:	8b f8                	mov    %eax,%edi
4707f2:	8b ce                	mov    %esi,%ecx
4707f4:	e8 27 92 f9 ff       	call   0x409a20
4707f9:	89 3e                	mov    %edi,(%esi)
4707fb:	33 c0                	xor    %eax,%eax
4707fd:	5f                   	pop    %edi
4707fe:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
470805:	5e                   	pop    %esi
470806:	5d                   	pop    %ebp
470807:	c2 08 00             	ret    $0x8
47080a:	55                   	push   %ebp
47080b:	8b ec                	mov    %esp,%ebp
47080d:	83 ec 1c             	sub    $0x1c,%esp
470810:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
470814:	53                   	push   %ebx
470815:	56                   	push   %esi
470816:	8b 75 0c             	mov    0xc(%ebp),%esi
470819:	8b d9                	mov    %ecx,%ebx
47081b:	57                   	push   %edi
47081c:	8b ce                	mov    %esi,%ecx
47081e:	e8 0b 8c f9 ff       	call   0x40942e
470823:	6a 05                	push   $0x5
470825:	8b f8                	mov    %eax,%edi
470827:	6a 01                	push   $0x1
470829:	57                   	push   %edi
47082a:	e8 81 89 f9 ff       	call   0x4091b0
47082f:	8b 45 08             	mov    0x8(%ebp),%eax
470832:	83 c4 0c             	add    $0xc,%esp
470835:	83 78 08 00          	cmpl   $0x0,0x8(%eax)
470839:	76 0c                	jbe    0x470847
47083b:	8b 40 04             	mov    0x4(%eax),%eax
47083e:	8b 08                	mov    (%eax),%ecx
470840:	e8 76 81 ff ff       	call   0x4689bb
470845:	eb 03                	jmp    0x47084a
470847:	8b 45 fc             	mov    -0x4(%ebp),%eax
47084a:	8d 4d f4             	lea    -0xc(%ebp),%ecx
47084d:	51                   	push   %ecx
47084e:	8d 4d f8             	lea    -0x8(%ebp),%ecx
470851:	51                   	push   %ecx
470852:	8d 4d fc             	lea    -0x4(%ebp),%ecx
470855:	51                   	push   %ecx
470856:	8d 4d 08             	lea    0x8(%ebp),%ecx
470859:	51                   	push   %ecx
47085a:	8d 4d 0c             	lea    0xc(%ebp),%ecx
47085d:	51                   	push   %ecx
47085e:	50                   	push   %eax
47085f:	e8 f3 a7 01 00       	call   0x48b057
470864:	84 c0                	test   %al,%al
470866:	0f 84 b9 00 00 00    	je     0x470925
47086c:	8b 45 0c             	mov    0xc(%ebp),%eax
47086f:	33 f6                	xor    %esi,%esi
470871:	33 db                	xor    %ebx,%ebx
470873:	89 45 e4             	mov    %eax,-0x1c(%ebp)
470876:	56                   	push   %esi
470877:	43                   	inc    %ebx
470878:	89 75 ec             	mov    %esi,-0x14(%ebp)
47087b:	53                   	push   %ebx
47087c:	8d 45 e4             	lea    -0x1c(%ebp),%eax
47087f:	89 5d f0             	mov    %ebx,-0x10(%ebp)
470882:	50                   	push   %eax
470883:	57                   	push   %edi
470884:	e8 b7 87 f9 ff       	call   0x409040
470889:	83 c4 10             	add    $0x10,%esp
47088c:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
47088f:	e8 8c 91 f9 ff       	call   0x409a20
470894:	8b 45 08             	mov    0x8(%ebp),%eax
470897:	53                   	push   %ebx
470898:	89 45 e4             	mov    %eax,-0x1c(%ebp)
47089b:	8d 45 e4             	lea    -0x1c(%ebp),%eax
47089e:	53                   	push   %ebx
47089f:	50                   	push   %eax
4708a0:	57                   	push   %edi
4708a1:	89 75 ec             	mov    %esi,-0x14(%ebp)
4708a4:	89 5d f0             	mov    %ebx,-0x10(%ebp)
4708a7:	e8 94 87 f9 ff       	call   0x409040
4708ac:	83 c4 10             	add    $0x10,%esp
4708af:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
4708b2:	e8 69 91 f9 ff       	call   0x409a20
4708b7:	8b 45 fc             	mov    -0x4(%ebp),%eax
4708ba:	6a 02                	push   $0x2
4708bc:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4708bf:	8d 45 e4             	lea    -0x1c(%ebp),%eax
4708c2:	53                   	push   %ebx
4708c3:	50                   	push   %eax
4708c4:	57                   	push   %edi
4708c5:	89 75 ec             	mov    %esi,-0x14(%ebp)
4708c8:	89 5d f0             	mov    %ebx,-0x10(%ebp)
4708cb:	e8 70 87 f9 ff       	call   0x409040
4708d0:	83 c4 10             	add    $0x10,%esp
4708d3:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
4708d6:	e8 45 91 f9 ff       	call   0x409a20
4708db:	8b 45 f8             	mov    -0x8(%ebp),%eax
4708de:	6a 03                	push   $0x3
4708e0:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4708e3:	8d 45 e4             	lea    -0x1c(%ebp),%eax
4708e6:	53                   	push   %ebx
4708e7:	50                   	push   %eax
4708e8:	57                   	push   %edi
4708e9:	89 75 ec             	mov    %esi,-0x14(%ebp)
4708ec:	89 5d f0             	mov    %ebx,-0x10(%ebp)
4708ef:	e8 4c 87 f9 ff       	call   0x409040
4708f4:	83 c4 10             	add    $0x10,%esp
4708f7:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
4708fa:	e8 21 91 f9 ff       	call   0x409a20
4708ff:	8b 45 f4             	mov    -0xc(%ebp),%eax
470902:	6a 04                	push   $0x4
470904:	89 45 e4             	mov    %eax,-0x1c(%ebp)
470907:	8d 45 e4             	lea    -0x1c(%ebp),%eax
47090a:	53                   	push   %ebx
47090b:	50                   	push   %eax
47090c:	57                   	push   %edi
47090d:	89 75 ec             	mov    %esi,-0x14(%ebp)
470910:	89 5d f0             	mov    %ebx,-0x10(%ebp)
470913:	e8 28 87 f9 ff       	call   0x409040
470918:	83 c4 10             	add    $0x10,%esp
47091b:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
47091e:	e8 fd 90 f9 ff       	call   0x409a20
470923:	eb 1f                	jmp    0x470944
470925:	8b ce                	mov    %esi,%ecx
470927:	e8 f4 90 f9 ff       	call   0x409a20
47092c:	83 26 00             	andl   $0x0,(%esi)
47092f:	33 c0                	xor    %eax,%eax
470931:	40                   	inc    %eax
470932:	6a 00                	push   $0x0
470934:	89 46 0c             	mov    %eax,0xc(%esi)
470937:	50                   	push   %eax
470938:	8b 03                	mov    (%ebx),%eax
47093a:	8b 48 04             	mov    0x4(%eax),%ecx
47093d:	03 cb                	add    %ebx,%ecx
47093f:	e8 5f 61 fe ff       	call   0x456aa3
470944:	5f                   	pop    %edi
470945:	5e                   	pop    %esi
470946:	33 c0                	xor    %eax,%eax
470948:	5b                   	pop    %ebx
470949:	8b e5                	mov    %ebp,%esp
47094b:	5d                   	pop    %ebp
47094c:	c2 08 00             	ret    $0x8
47094f:	55                   	push   %ebp
470950:	8b ec                	mov    %esp,%ebp
470952:	83 ec 34             	sub    $0x34,%esp
470955:	53                   	push   %ebx
470956:	56                   	push   %esi