478605:	84 c0                	test   %al,%al
478607:	75 07                	jne    0x478610
478609:	32 c0                	xor    %al,%al
47860b:	e9 dd 02 00 00       	jmp    0x4788ed
478610:	38 5e 2c             	cmp    %bl,0x2c(%esi)
478613:	0f 85 d2 02 00 00    	jne    0x4788eb
478619:	8b 46 1c             	mov    0x1c(%esi),%eax
47861c:	33 d2                	xor    %edx,%edx
47861e:	c1 e8 04             	shr    $0x4,%eax
478621:	42                   	inc    %edx
478622:	89 5d f4             	mov    %ebx,-0xc(%ebp)
478625:	8b cb                	mov    %ebx,%ecx
478627:	66 89 5d f8          	mov    %bx,-0x8(%ebp)
47862b:	89 4d f0             	mov    %ecx,-0x10(%ebp)
47862e:	6a 20                	push   $0x20
478630:	5f                   	pop    %edi
478631:	84 c2                	test   %al,%dl
478633:	74 33                	je     0x478668
478635:	8b 46 1c             	mov    0x1c(%esi),%eax
478638:	c1 e8 06             	shr    $0x6,%eax
47863b:	84 c2                	test   %al,%dl
47863d:	74 04                	je     0x478643
47863f:	6a 2d                	push   $0x2d
478641:	eb 07                	jmp    0x47864a
478643:	84 56 1c             	test   %dl,0x1c(%esi)
478646:	74 0e                	je     0x478656
478648:	6a 2b                	push   $0x2b
47864a:	58                   	pop    %eax
47864b:	8b ca                	mov    %edx,%ecx
47864d:	66 89 45 f4          	mov    %ax,-0xc(%ebp)
478651:	89 4d f0             	mov    %ecx,-0x10(%ebp)
478654:	eb 12                	jmp    0x478668
478656:	8b 46 1c             	mov    0x1c(%esi),%eax
478659:	d1 e8                	shr    $1,%eax
47865b:	84 c2                	test   %al,%dl
47865d:	74 09                	je     0x478668
47865f:	66 89 7d f4          	mov    %di,-0xc(%ebp)
478663:	8b ca                	mov    %edx,%ecx
478665:	89 55 f0             	mov    %edx,-0x10(%ebp)
478668:	0f b7 56 2e          	movzwl 0x2e(%esi),%edx
47866c:	6a 78                	push   $0x78
47866e:	5f                   	pop    %edi
47866f:	66 3b d7             	cmp    %di,%dx
478672:	74 08                	je     0x47867c
478674:	6a 58                	push   $0x58
478676:	58                   	pop    %eax
478677:	66 3b d0             	cmp    %ax,%dx
47867a:	75 0c                	jne    0x478688
47867c:	8b 46 1c             	mov    0x1c(%esi),%eax
47867f:	c1 e8 05             	shr    $0x5,%eax
478682:	b4 01                	mov    $0x1,%ah
478684:	a8 01                	test   $0x1,%al
478686:	75 02                	jne    0x47868a
478688:	8a e3                	mov    %bl,%ah
47868a:	83 fa 61             	cmp    $0x61,%edx
47868d:	74 08                	je     0x478697
47868f:	8a c3                	mov    %bl,%al
478691:	66 3b 55 ec          	cmp    -0x14(%ebp),%dx
478695:	75 02                	jne    0x478699
478697:	b0 01                	mov    $0x1,%al
478699:	c7 45 e8 30 00 00 00 	movl   $0x30,-0x18(%ebp)
4786a0:	84 e4                	test   %ah,%ah
4786a2:	75 04                	jne    0x4786a8
4786a4:	84 c0                	test   %al,%al
4786a6:	74 23                	je     0x4786cb
4786a8:	8b 45 e8             	mov    -0x18(%ebp),%eax
4786ab:	6a 58                	push   $0x58
4786ad:	66 89 44 4d f4       	mov    %ax,-0xc(%ebp,%ecx,2)
4786b2:	58                   	pop    %eax
4786b3:	66 3b d0             	cmp    %ax,%dx
4786b6:	74 06                	je     0x4786be
4786b8:	66 3b 55 ec          	cmp    -0x14(%ebp),%dx
4786bc:	75 02                	jne    0x4786c0
4786be:	8b f8                	mov    %eax,%edi
4786c0:	66 89 7c 4d f6       	mov    %di,-0xa(%ebp,%ecx,2)
4786c5:	83 c1 02             	add    $0x2,%ecx
4786c8:	89 4d f0             	mov    %ecx,-0x10(%ebp)
4786cb:	8b 56 20             	mov    0x20(%esi),%edx
4786ce:	2b 56 34             	sub    0x34(%esi),%edx
4786d1:	2b d1                	sub    %ecx,%edx
4786d3:	f6 46 1c 0c          	testb  $0xc,0x1c(%esi)
4786d7:	89 55 dc             	mov    %edx,-0x24(%ebp)
4786da:	75 5e                	jne    0x47873a
4786dc:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
4786df:	85 d2                	test   %edx,%edx
4786e1:	7e 57                	jle    0x47873a
4786e3:	8b 5e 14             	mov    0x14(%esi),%ebx
4786e6:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
4786e9:	8b be 48 04 00 00    	mov    0x448(%esi),%edi
4786ef:	8b 47 08             	mov    0x8(%edi),%eax
4786f2:	3b 47 04             	cmp    0x4(%edi),%eax
4786f5:	75 11                	jne    0x478708
4786f7:	80 7f 0c 00          	cmpb   $0x0,0xc(%edi)
4786fb:	74 03                	je     0x478700
4786fd:	43                   	inc    %ebx
4786fe:	eb 03                	jmp    0x478703
478700:	83 cb ff             	or     $0xffffffff,%ebx
478703:	89 5e 14             	mov    %ebx,0x14(%esi)
478706:	eb 20                	jmp    0x478728
478708:	8d 43 01             	lea    0x1(%ebx),%eax
47870b:	89 46 14             	mov    %eax,0x14(%esi)
47870e:	ff 47 08             	incl   0x8(%edi)
478711:	8b 86 48 04 00 00    	mov    0x448(%esi),%eax
478717:	6a 20                	push   $0x20
478719:	5b                   	pop    %ebx
47871a:	8b 00                	mov    (%eax),%eax
47871c:	66 89 18             	mov    %bx,(%eax)
47871f:	8b 86 48 04 00 00    	mov    0x448(%esi),%eax
478725:	83 00 02             	addl   $0x2,(%eax)
478728:	8b 5e 14             	mov    0x14(%esi),%ebx
47872b:	83 fb ff             	cmp    $0xffffffff,%ebx
47872e:	74 05                	je     0x478735
478730:	41                   	inc    %ecx
478731:	3b ca                	cmp    %edx,%ecx
478733:	7c b4                	jl     0x4786e9
478735:	8b 4d f0             	mov    -0x10(%ebp),%ecx
478738:	33 db                	xor    %ebx,%ebx
47873a:	ff 76 08             	push   0x8(%esi)
47873d:	8d 7e 14             	lea    0x14(%esi),%edi
478740:	57                   	push   %edi
478741:	51                   	push   %ecx
478742:	8d 86 48 04 00 00    	lea    0x448(%esi),%eax
478748:	8d 4d f4             	lea    -0xc(%ebp),%ecx
47874b:	89 45 e4             	mov    %eax,-0x1c(%ebp)
47874e:	51                   	push   %ecx
47874f:	8b c8                	mov    %eax,%ecx
478751:	e8 c8 0a 00 00       	call   0x47921e
478756:	8b 4e 1c             	mov    0x1c(%esi),%ecx
478759:	8d 96 48 04 00 00    	lea    0x448(%esi),%edx
47875f:	8b c1                	mov    %ecx,%eax
478761:	c1 e8 03             	shr    $0x3,%eax
478764:	a8 01                	test   $0x1,%al
478766:	74 5b                	je     0x4787c3
478768:	c1 e9 02             	shr    $0x2,%ecx
47876b:	f6 c1 01             	test   $0x1,%cl
47876e:	75 53                	jne    0x4787c3
478770:	8b 4d dc             	mov    -0x24(%ebp),%ecx
478773:	89 5d ec             	mov    %ebx,-0x14(%ebp)
478776:	85 c9                	test   %ecx,%ecx
478778:	7e 49                	jle    0x4787c3
47877a:	8b 02                	mov    (%edx),%eax
47877c:	89 45 f0             	mov    %eax,-0x10(%ebp)
47877f:	8b d8                	mov    %eax,%ebx
478781:	8b 40 08             	mov    0x8(%eax),%eax
478784:	3b 43 04             	cmp    0x4(%ebx),%eax
478787:	8b c3                	mov    %ebx,%eax
478789:	75 12                	jne    0x47879d
47878b:	80 78 0c 00          	cmpb   $0x0,0xc(%eax)
47878f:	74 05                	je     0x478796
478791:	8b 07                	mov    (%edi),%eax
478793:	40                   	inc    %eax
478794:	eb 03                	jmp    0x478799
478796:	83 c8 ff             	or     $0xffffffff,%eax
478799:	89 07                	mov    %eax,(%edi)
47879b:	eb 14                	jmp    0x4787b1
47879d:	ff 07                	incl   (%edi)
47879f:	ff 40 08             	incl   0x8(%eax)
4787a2:	8b 02                	mov    (%edx),%eax
4787a4:	8b 5d e8             	mov    -0x18(%ebp),%ebx
4787a7:	8b 00                	mov    (%eax),%eax
4787a9:	66 89 18             	mov    %bx,(%eax)
4787ac:	8b 02                	mov    (%edx),%eax
4787ae:	83 00 02             	addl   $0x2,(%eax)
4787b1:	83 3f ff             	cmpl   $0xffffffff,(%edi)
4787b4:	74 0b                	je     0x4787c1
4787b6:	8b 45 ec             	mov    -0x14(%ebp),%eax
4787b9:	40                   	inc    %eax
4787ba:	89 45 ec             	mov    %eax,-0x14(%ebp)
4787bd:	3b c1                	cmp    %ecx,%eax
4787bf:	7c b9                	jl     0x47877a
4787c1:	33 db                	xor    %ebx,%ebx
4787c3:	80 7e 38 00          	cmpb   $0x0,0x38(%esi)
4787c7:	0f 85 ad 00 00 00    	jne    0x47887a
4787cd:	39 5e 34             	cmp    %ebx,0x34(%esi)
4787d0:	0f 8e a4 00 00 00    	jle    0x47887a
4787d6:	8b 46 08             	mov    0x8(%esi),%eax
4787d9:	89 45 e0             	mov    %eax,-0x20(%ebp)
4787dc:	80 78 14 00          	cmpb   $0x0,0x14(%eax)
4787e0:	75 0a                	jne    0x4787ec
4787e2:	8b c8                	mov    %eax,%ecx
4787e4:	e8 27 09 00 00       	call   0x479110
4787e9:	8b 45 e0             	mov    -0x20(%ebp),%eax
4787ec:	8b 4e 30             	mov    0x30(%esi),%ecx
4787ef:	89 4d e8             	mov    %ecx,-0x18(%ebp)
4787f2:	89 5d ec             	mov    %ebx,-0x14(%ebp)
4787f5:	39 5e 34             	cmp    %ebx,0x34(%esi)
4787f8:	0f 84 8d 00 00 00    	je     0x47888b
4787fe:	8b 40 0c             	mov    0xc(%eax),%eax
478801:	33 d2                	xor    %edx,%edx
478803:	ff 76 08             	push   0x8(%esi)
478806:	66 89 55 f0          	mov    %dx,-0x10(%ebp)
47880a:	ff 70 04             	push   0x4(%eax)
47880d:	8d 45 f0             	lea    -0x10(%ebp),%eax
478810:	51                   	push   %ecx
478811:	50                   	push   %eax
478812:	e8 e8 dd 00 00       	call   0x4865ff
478817:	83 c4 10             	add    $0x10,%esp
47881a:	89 45 f4             	mov    %eax,-0xc(%ebp)
47881d:	8d 96 48 04 00 00    	lea    0x448(%esi),%edx
478823:	85 c0                	test   %eax,%eax
478825:	7e 4e                	jle    0x478875
478827:	8b 0a                	mov    (%edx),%ecx
478829:	0f b7 45 f0          	movzwl -0x10(%ebp),%eax
47882d:	89 45 d8             	mov    %eax,-0x28(%ebp)
478830:	8b 41 08             	mov    0x8(%ecx),%eax
478833:	3b 41 04             	cmp    0x4(%ecx),%eax
478836:	75 0f                	jne    0x478847
478838:	80 79 0c 00          	cmpb   $0x0,0xc(%ecx)
47883c:	74 04                	je     0x478842
47883e:	ff 07                	incl   (%edi)
478840:	eb 19                	jmp    0x47885b
478842:	83 0f ff             	orl    $0xffffffff,(%edi)
478845:	eb 14                	jmp    0x47885b
478847:	ff 07                	incl   (%edi)
478849:	ff 41 08             	incl   0x8(%ecx)
47884c:	8b 02                	mov    (%edx),%eax
47884e:	8b 4d d8             	mov    -0x28(%ebp),%ecx
478851:	8b 00                	mov    (%eax),%eax
478853:	66 89 08             	mov    %cx,(%eax)
478856:	8b 02                	mov    (%edx),%eax
478858:	83 00 02             	addl   $0x2,(%eax)
47885b:	8b 4d e8             	mov    -0x18(%ebp),%ecx
47885e:	03 4d f4             	add    -0xc(%ebp),%ecx
478861:	8b 45 ec             	mov    -0x14(%ebp),%eax
478864:	40                   	inc    %eax
478865:	89 4d e8             	mov    %ecx,-0x18(%ebp)
478868:	3b 46 34             	cmp    0x34(%esi),%eax
47886b:	89 45 ec             	mov    %eax,-0x14(%ebp)
47886e:	8b 45 e0             	mov    -0x20(%ebp),%eax
478871:	75 8b                	jne    0x4787fe
478873:	eb 1c                	jmp    0x478891
478875:	83 0f ff             	orl    $0xffffffff,(%edi)
478878:	eb 17                	jmp    0x478891
47887a:	ff 76 08             	push   0x8(%esi)
47887d:	8b ca                	mov    %edx,%ecx
47887f:	57                   	push   %edi
478880:	ff 76 34             	push   0x34(%esi)
478883:	ff 76 30             	push   0x30(%esi)
478886:	e8 93 09 00 00       	call   0x47921e
47888b:	8d 96 48 04 00 00    	lea    0x448(%esi),%edx
478891:	8b 0f                	mov    (%edi),%ecx
478893:	85 c9                	test   %ecx,%ecx
478895:	78 54                	js     0x4788eb
478897:	8b 46 1c             	mov    0x1c(%esi),%eax
47889a:	c1 e8 02             	shr    $0x2,%eax
47889d:	a8 01                	test   $0x1,%al
47889f:	74 4a                	je     0x4788eb
4788a1:	8b 75 dc             	mov    -0x24(%ebp),%esi
4788a4:	85 f6                	test   %esi,%esi
4788a6:	7e 43                	jle    0x4788eb
4788a8:	8b 12                	mov    (%edx),%edx
4788aa:	8b 42 08             	mov    0x8(%edx),%eax
4788ad:	3b 42 04             	cmp    0x4(%edx),%eax
4788b0:	75 13                	jne    0x4788c5
4788b2:	80 7a 0c 00          	cmpb   $0x0,0xc(%edx)
4788b6:	74 03                	je     0x4788bb
4788b8:	41                   	inc    %ecx
4788b9:	eb 03                	jmp    0x4788be
4788bb:	83 c9 ff             	or     $0xffffffff,%ecx
4788be:	8b 55 e4             	mov    -0x1c(%ebp),%edx
4788c1:	89 0f                	mov    %ecx,(%edi)
4788c3:	eb 1a                	jmp    0x4788df
4788c5:	8d 41 01             	lea    0x1(%ecx),%eax
4788c8:	89 07                	mov    %eax,(%edi)
4788ca:	ff 42 08             	incl   0x8(%edx)
4788cd:	8b 55 e4             	mov    -0x1c(%ebp),%edx
4788d0:	6a 20                	push   $0x20
4788d2:	59                   	pop    %ecx
4788d3:	8b 02                	mov    (%edx),%eax
4788d5:	8b 00                	mov    (%eax),%eax
4788d7:	66 89 08             	mov    %cx,(%eax)
4788da:	8b 02                	mov    (%edx),%eax
4788dc:	83 00 02             	addl   $0x2,(%eax)
4788df:	8b 0f                	mov    (%edi),%ecx
4788e1:	83 f9 ff             	cmp    $0xffffffff,%ecx
4788e4:	74 05                	je     0x4788eb
4788e6:	43                   	inc    %ebx
4788e7:	3b de                	cmp    %esi,%ebx
4788e9:	7c bd                	jl     0x4788a8
4788eb:	b0 01                	mov    $0x1,%al
4788ed:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4788f0:	5f                   	pop    %edi
4788f1:	5e                   	pop    %esi
4788f2:	33 cd                	xor    %ebp,%ecx
4788f4:	5b                   	pop    %ebx
4788f5:	e8 d0 10 ff ff       	call   0x4699ca
4788fa:	c9                   	leave
4788fb:	c3                   	ret
4788fc:	8b ff                	mov    %edi,%edi
4788fe:	55                   	push   %ebp
4788ff:	8b ec                	mov    %esp,%ebp
478901:	8b 45 08             	mov    0x8(%ebp),%eax
478904:	83 f8 0b             	cmp    $0xb,%eax
478907:	77 20                	ja     0x478929
478909:	0f b6 80 44 89 47 00 	movzbl 0x478944(%eax),%eax
478910:	ff 24 85 30 89 47 00 	jmp    *0x478930(,%eax,4)
478917:	33 c0                	xor    %eax,%eax
478919:	40                   	inc    %eax
47891a:	5d                   	pop    %ebp
47891b:	c3                   	ret
47891c:	6a 02                	push   $0x2
47891e:	58                   	pop    %eax
47891f:	5d                   	pop    %ebp
478920:	c3                   	ret
478921:	6a 04                	push   $0x4
478923:	eb f9                	jmp    0x47891e
478925:	6a 08                	push   $0x8
478927:	eb f5                	jmp    0x47891e
478929:	33 c0                	xor    %eax,%eax
47892b:	5d                   	pop    %ebp
47892c:	c3                   	ret
47892d:	8d 49 00             	lea    0x0(%ecx),%ecx
478930:	21 89 47 00 17 89    	and    %ecx,-0x76e8ffb9(%ecx)
478936:	47                   	inc    %edi
478937:	00 1c 89             	add    %bl,(%ecx,%ecx,4)
47893a:	47                   	inc    %edi
47893b:	00 25 89 47 00 29    	add    %ah,0x29004789
478941:	89 47 00             	mov    %eax,0x0(%edi)
478944:	00 01                	add    %al,(%ecx)
478946:	02 00                	add    (%eax),%al
478948:	03 03                	add    (%ebx),%eax
47894a:	00 00                	add    %al,(%eax)
47894c:	04 00                	add    $0x0,%al
47894e:	00 03                	add    %al,(%ebx)
478950:	8b ff                	mov    %edi,%edi
478952:	53                   	push   %ebx
478953:	56                   	push   %esi
478954:	8b f1                	mov    %ecx,%esi
478956:	57                   	push   %edi
478957:	8b 56 10             	mov    0x10(%esi),%edx
47895a:	8d 42 04             	lea    0x4(%edx),%eax
47895d:	89 46 10             	mov    %eax,0x10(%esi)
478960:	8b 3a                	mov    (%edx),%edi
478962:	85 ff                	test   %edi,%edi
478964:	74 33                	je     0x478999
478966:	8b 5f 04             	mov    0x4(%edi),%ebx
478969:	85 db                	test   %ebx,%ebx
47896b:	74 2c                	je     0x478999
47896d:	ff 76 28             	push   0x28(%esi)
478970:	0f b6 46 2d          	movzbl 0x2d(%esi),%eax
478974:	50                   	push   %eax
478975:	ff 76 04             	push   0x4(%esi)
478978:	ff 36                	push   (%esi)
47897a:	e8 13 d0 ff ff       	call   0x475992
47897f:	83 c4 10             	add    $0x10,%esp
478982:	89 5e 30             	mov    %ebx,0x30(%esi)
478985:	0f b7 0f             	movzwl (%edi),%ecx
478988:	84 c0                	test   %al,%al
47898a:	8b c1                	mov    %ecx,%eax
47898c:	6a 34                	push   $0x34