47863d:	e8 c5 ba fd ff       	call   0x454107
478642:	59                   	pop    %ecx
478643:	3b f0                	cmp    %eax,%esi
478645:	74 0e                	je     0x478655
478647:	8b 75 0c             	mov    0xc(%ebp),%esi
47864a:	53                   	push   %ebx
47864b:	e8 b7 ba fd ff       	call   0x454107
478650:	59                   	pop    %ecx
478651:	3b f0                	cmp    %eax,%esi
478653:	75 0b                	jne    0x478660
478655:	57                   	push   %edi
478656:	e8 06 e5 00 00       	call   0x486b61
47865b:	59                   	pop    %ecx
47865c:	85 c0                	test   %eax,%eax
47865e:	75 09                	jne    0x478669
478660:	ff 75 0c             	push   0xc(%ebp)
478663:	e8 4f e5 00 00       	call   0x486bb7
478668:	59                   	pop    %ecx
478669:	5e                   	pop    %esi
47866a:	ff 75 0c             	push   0xc(%ebp)
47866d:	8b 5d 08             	mov    0x8(%ebp),%ebx
478670:	53                   	push   %ebx
478671:	e8 33 01 00 00       	call   0x4787a9
478676:	59                   	pop    %ecx
478677:	59                   	pop    %ecx
478678:	84 c0                	test   %al,%al
47867a:	75 11                	jne    0x47868d
47867c:	8b 45 0c             	mov    0xc(%ebp),%eax
47867f:	6a 10                	push   $0x10
478681:	59                   	pop    %ecx
478682:	83 c0 0c             	add    $0xc,%eax
478685:	f0 09 08             	lock or %ecx,(%eax)
478688:	83 c8 ff             	or     $0xffffffff,%eax
47868b:	eb 03                	jmp    0x478690
47868d:	0f b6 c3             	movzbl %bl,%eax
478690:	5b                   	pop    %ebx
478691:	5f                   	pop    %edi
478692:	5d                   	pop    %ebp
478693:	c3                   	ret
478694:	8b ff                	mov    %edi,%edi
478696:	55                   	push   %ebp
478697:	8b ec                	mov    %esp,%ebp
478699:	57                   	push   %edi
47869a:	ff 75 0c             	push   0xc(%ebp)
47869d:	e8 d4 fa ff ff       	call   0x478176
4786a2:	59                   	pop    %ecx
4786a3:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4786a6:	8b f8                	mov    %eax,%edi
4786a8:	8b 49 0c             	mov    0xc(%ecx),%ecx
4786ab:	f6 c1 06             	test   $0x6,%cl
4786ae:	75 21                	jne    0x4786d1
4786b0:	e8 7a 47 fd ff       	call   0x44ce2f
4786b5:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
4786bb:	8b 45 0c             	mov    0xc(%ebp),%eax
4786be:	6a 10                	push   $0x10
4786c0:	59                   	pop    %ecx
4786c1:	83 c0 0c             	add    $0xc,%eax
4786c4:	f0 09 08             	lock or %ecx,(%eax)
4786c7:	b8 ff ff 00 00       	mov    $0xffff,%eax
4786cc:	e9 d5 00 00 00       	jmp    0x4787a6
4786d1:	8b 45 0c             	mov    0xc(%ebp),%eax
4786d4:	8b 40 0c             	mov    0xc(%eax),%eax
4786d7:	c1 e8 0c             	shr    $0xc,%eax
4786da:	a8 01                	test   $0x1,%al
4786dc:	74 0d                	je     0x4786eb
4786de:	e8 4c 47 fd ff       	call   0x44ce2f
4786e3:	c7 00 22 00 00 00    	movl   $0x22,(%eax)
4786e9:	eb d0                	jmp    0x4786bb
4786eb:	8b 45 0c             	mov    0xc(%ebp),%eax
4786ee:	8b 40 0c             	mov    0xc(%eax),%eax
4786f1:	a8 01                	test   $0x1,%al
4786f3:	74 28                	je     0x47871d
4786f5:	8b 45 0c             	mov    0xc(%ebp),%eax
4786f8:	83 60 08 00          	andl   $0x0,0x8(%eax)
4786fc:	8b 45 0c             	mov    0xc(%ebp),%eax
4786ff:	8b 40 0c             	mov    0xc(%eax),%eax
478702:	c1 e8 03             	shr    $0x3,%eax
478705:	a8 01                	test   $0x1,%al
478707:	8b 45 0c             	mov    0xc(%ebp),%eax
47870a:	74 b2                	je     0x4786be
47870c:	8b 48 04             	mov    0x4(%eax),%ecx
47870f:	89 08                	mov    %ecx,(%eax)
478711:	8b 45 0c             	mov    0xc(%ebp),%eax
478714:	6a fe                	push   $0xfffffffe
478716:	59                   	pop    %ecx
478717:	83 c0 0c             	add    $0xc,%eax
47871a:	f0 21 08             	lock and %ecx,(%eax)
47871d:	8b 45 0c             	mov    0xc(%ebp),%eax
478720:	53                   	push   %ebx
478721:	56                   	push   %esi
478722:	6a 02                	push   $0x2
478724:	5b                   	pop    %ebx
478725:	83 c0 0c             	add    $0xc,%eax
478728:	f0 09 18             	lock or %ebx,(%eax)
47872b:	8b 45 0c             	mov    0xc(%ebp),%eax
47872e:	6a f7                	push   $0xfffffff7
478730:	59                   	pop    %ecx
478731:	83 c0 0c             	add    $0xc,%eax
478734:	f0 21 08             	lock and %ecx,(%eax)
478737:	8b 45 0c             	mov    0xc(%ebp),%eax
47873a:	83 60 08 00          	andl   $0x0,0x8(%eax)
47873e:	8b 45 0c             	mov    0xc(%ebp),%eax
478741:	8b 40 0c             	mov    0xc(%eax),%eax
478744:	a9 c0 04 00 00       	test   $0x4c0,%eax
478749:	75 31                	jne    0x47877c
47874b:	8b 75 0c             	mov    0xc(%ebp),%esi
47874e:	6a 01                	push   $0x1
478750:	e8 b2 b9 fd ff       	call   0x454107
478755:	59                   	pop    %ecx
478756:	3b f0                	cmp    %eax,%esi
478758:	74 0e                	je     0x478768
47875a:	8b 75 0c             	mov    0xc(%ebp),%esi
47875d:	53                   	push   %ebx
47875e:	e8 a4 b9 fd ff       	call   0x454107
478763:	59                   	pop    %ecx
478764:	3b f0                	cmp    %eax,%esi
478766:	75 0b                	jne    0x478773
478768:	57                   	push   %edi
478769:	e8 f3 e3 00 00       	call   0x486b61
47876e:	59                   	pop    %ecx
47876f:	85 c0                	test   %eax,%eax
478771:	75 09                	jne    0x47877c
478773:	ff 75 0c             	push   0xc(%ebp)
478776:	e8 3c e4 00 00       	call   0x486bb7
47877b:	59                   	pop    %ecx
47877c:	ff 75 0c             	push   0xc(%ebp)
47877f:	8b 75 08             	mov    0x8(%ebp),%esi
478782:	56                   	push   %esi
478783:	e8 ed 00 00 00       	call   0x478875
478788:	59                   	pop    %ecx
478789:	59                   	pop    %ecx
47878a:	84 c0                	test   %al,%al
47878c:	75 13                	jne    0x4787a1
47878e:	8b 45 0c             	mov    0xc(%ebp),%eax
478791:	6a 10                	push   $0x10
478793:	59                   	pop    %ecx
478794:	83 c0 0c             	add    $0xc,%eax
478797:	f0 09 08             	lock or %ecx,(%eax)
47879a:	b8 ff ff 00 00       	mov    $0xffff,%eax
47879f:	eb 03                	jmp    0x4787a4
4787a1:	0f b7 c6             	movzwl %si,%eax
4787a4:	5e                   	pop    %esi
4787a5:	5b                   	pop    %ebx
4787a6:	5f                   	pop    %edi
4787a7:	5d                   	pop    %ebp
4787a8:	c3                   	ret
4787a9:	8b ff                	mov    %edi,%edi
4787ab:	55                   	push   %ebp
4787ac:	8b ec                	mov    %esp,%ebp
4787ae:	56                   	push   %esi
4787af:	57                   	push   %edi
4787b0:	ff 75 0c             	push   0xc(%ebp)
4787b3:	e8 be f9 ff ff       	call   0x478176
4787b8:	59                   	pop    %ecx
4787b9:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4787bc:	8b d0                	mov    %eax,%edx
4787be:	8b 49 0c             	mov    0xc(%ecx),%ecx
4787c1:	f6 c1 c0             	test   $0xc0,%cl
4787c4:	0f 84 92 00 00 00    	je     0x47885c
4787ca:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4787cd:	33 ff                	xor    %edi,%edi
4787cf:	8b 41 04             	mov    0x4(%ecx),%eax
4787d2:	8b 31                	mov    (%ecx),%esi
4787d4:	2b f0                	sub    %eax,%esi
4787d6:	40                   	inc    %eax
4787d7:	89 01                	mov    %eax,(%ecx)
4787d9:	8b 45 0c             	mov    0xc(%ebp),%eax
4787dc:	8b 48 18             	mov    0x18(%eax),%ecx
4787df:	49                   	dec    %ecx
4787e0:	89 48 08             	mov    %ecx,0x8(%eax)
4787e3:	85 f6                	test   %esi,%esi
4787e5:	7e 26                	jle    0x47880d
4787e7:	8b 45 0c             	mov    0xc(%ebp),%eax
4787ea:	56                   	push   %esi
4787eb:	ff 70 04             	push   0x4(%eax)
4787ee:	52                   	push   %edx
4787ef:	e8 4b 19 00 00       	call   0x47a13f
4787f4:	83 c4 0c             	add    $0xc,%esp
4787f7:	8b f8                	mov    %eax,%edi
4787f9:	8b 45 0c             	mov    0xc(%ebp),%eax
4787fc:	8b 48 04             	mov    0x4(%eax),%ecx
4787ff:	8a 45 08             	mov    0x8(%ebp),%al
478802:	88 01                	mov    %al,(%ecx)
478804:	33 c0                	xor    %eax,%eax
478806:	3b fe                	cmp    %esi,%edi
478808:	0f 94 c0             	sete   %al
47880b:	eb 64                	jmp    0x478871
47880d:	83 fa ff             	cmp    $0xffffffff,%edx
478810:	74 1b                	je     0x47882d
478812:	83 fa fe             	cmp    $0xfffffffe,%edx
478815:	74 16                	je     0x47882d
478817:	8b c2                	mov    %edx,%eax
478819:	8b ca                	mov    %edx,%ecx
47881b:	83 e0 3f             	and    $0x3f,%eax
47881e:	c1 f9 06             	sar    $0x6,%ecx
478821:	6b c0 30             	imul   $0x30,%eax,%eax
478824:	03 04 8d 00 c0 4b 00 	add    0x4bc000(,%ecx,4),%eax
47882b:	eb 05                	jmp    0x478832
47882d:	b8 08 83 4b 00       	mov    $0x4b8308,%eax
478832:	f6 40 28 20          	testb  $0x20,0x28(%eax)
478836:	74 c1                	je     0x4787f9
478838:	6a 02                	push   $0x2
47883a:	57                   	push   %edi
47883b:	57                   	push   %edi
47883c:	52                   	push   %edx
47883d:	e8 d7 12 00 00       	call   0x479b19
478842:	23 c2                	and    %edx,%eax
478844:	83 c4 10             	add    $0x10,%esp
478847:	83 f8 ff             	cmp    $0xffffffff,%eax
47884a:	75 ad                	jne    0x4787f9
47884c:	8b 45 0c             	mov    0xc(%ebp),%eax
47884f:	6a 10                	push   $0x10
478851:	59                   	pop    %ecx
478852:	83 c0 0c             	add    $0xc,%eax
478855:	f0 09 08             	lock or %ecx,(%eax)
478858:	b0 01                	mov    $0x1,%al
47885a:	eb 15                	jmp    0x478871
47885c:	6a 01                	push   $0x1
47885e:	8d 45 08             	lea    0x8(%ebp),%eax
478861:	50                   	push   %eax
478862:	52                   	push   %edx
478863:	e8 d7 18 00 00       	call   0x47a13f
478868:	83 c4 0c             	add    $0xc,%esp
47886b:	48                   	dec    %eax
47886c:	f7 d8                	neg    %eax
47886e:	1b c0                	sbb    %eax,%eax
478870:	40                   	inc    %eax
478871:	5f                   	pop    %edi
478872:	5e                   	pop    %esi
478873:	5d                   	pop    %ebp
478874:	c3                   	ret
478875:	8b ff                	mov    %edi,%edi
478877:	55                   	push   %ebp
478878:	8b ec                	mov    %esp,%ebp
47887a:	56                   	push   %esi
47887b:	57                   	push   %edi
47887c:	ff 75 0c             	push   0xc(%ebp)
47887f:	e8 f2 f8 ff ff       	call   0x478176
478884:	59                   	pop    %ecx
478885:	8b 4d 0c             	mov    0xc(%ebp),%ecx
478888:	8b d0                	mov    %eax,%edx
47888a:	8b 49 0c             	mov    0xc(%ecx),%ecx
47888d:	f6 c1 c0             	test   $0xc0,%cl
478890:	0f 84 98 00 00 00    	je     0x47892e
478896:	8b 4d 0c             	mov    0xc(%ebp),%ecx
478899:	33 ff                	xor    %edi,%edi
47889b:	8b 41 04             	mov    0x4(%ecx),%eax
47889e:	8b 31                	mov    (%ecx),%esi
4788a0:	2b f0                	sub    %eax,%esi
4788a2:	83 c0 02             	add    $0x2,%eax
4788a5:	89 01                	mov    %eax,(%ecx)
4788a7:	8b 45 0c             	mov    0xc(%ebp),%eax
4788aa:	8b 48 18             	mov    0x18(%eax),%ecx
4788ad:	83 e9 02             	sub    $0x2,%ecx
4788b0:	89 48 08             	mov    %ecx,0x8(%eax)
4788b3:	85 f6                	test   %esi,%esi
4788b5:	7e 28                	jle    0x4788df
4788b7:	8b 45 0c             	mov    0xc(%ebp),%eax
4788ba:	56                   	push   %esi
4788bb:	ff 70 04             	push   0x4(%eax)
4788be:	52                   	push   %edx
4788bf:	e8 7b 18 00 00       	call   0x47a13f
4788c4:	83 c4 0c             	add    $0xc,%esp
4788c7:	8b f8                	mov    %eax,%edi
4788c9:	8b 45 0c             	mov    0xc(%ebp),%eax
4788cc:	8b 48 04             	mov    0x4(%eax),%ecx
4788cf:	66 8b 45 08          	mov    0x8(%ebp),%ax
4788d3:	66 89 01             	mov    %ax,(%ecx)
4788d6:	33 c0                	xor    %eax,%eax
4788d8:	3b fe                	cmp    %esi,%edi
4788da:	0f 94 c0             	sete   %al
4788dd:	eb 66                	jmp    0x478945
4788df:	83 fa ff             	cmp    $0xffffffff,%edx
4788e2:	74 1b                	je     0x4788ff
4788e4:	83 fa fe             	cmp    $0xfffffffe,%edx
4788e7:	74 16                	je     0x4788ff
4788e9:	8b c2                	mov    %edx,%eax
4788eb:	8b ca                	mov    %edx,%ecx
4788ed:	83 e0 3f             	and    $0x3f,%eax
4788f0:	c1 f9 06             	sar    $0x6,%ecx
4788f3:	6b c0 30             	imul   $0x30,%eax,%eax
4788f6:	03 04 8d 00 c0 4b 00 	add    0x4bc000(,%ecx,4),%eax
4788fd:	eb 05                	jmp    0x478904
4788ff:	b8 08 83 4b 00       	mov    $0x4b8308,%eax
478904:	f6 40 28 20          	testb  $0x20,0x28(%eax)
478908:	74 bf                	je     0x4788c9
47890a:	6a 02                	push   $0x2
47890c:	57                   	push   %edi
47890d:	57                   	push   %edi
47890e:	52                   	push   %edx
47890f:	e8 05 12 00 00       	call   0x479b19
478914:	23 c2                	and    %edx,%eax
478916:	83 c4 10             	add    $0x10,%esp
478919:	83 f8 ff             	cmp    $0xffffffff,%eax
47891c:	75 ab                	jne    0x4788c9
47891e:	8b 45 0c             	mov    0xc(%ebp),%eax
478921:	6a 10                	push   $0x10
478923:	59                   	pop    %ecx
478924:	83 c0 0c             	add    $0xc,%eax
478927:	f0 09 08             	lock or %ecx,(%eax)
47892a:	b0 01                	mov    $0x1,%al
47892c:	eb 17                	jmp    0x478945
47892e:	6a 02                	push   $0x2
478930:	8d 45 08             	lea    0x8(%ebp),%eax
478933:	50                   	push   %eax
478934:	52                   	push   %edx
478935:	e8 05 18 00 00       	call   0x47a13f
47893a:	83 e8 02             	sub    $0x2,%eax
47893d:	83 c4 0c             	add    $0xc,%esp
478940:	f7 d8                	neg    %eax
478942:	1b c0                	sbb    %eax,%eax
478944:	40                   	inc    %eax
478945:	5f                   	pop    %edi
478946:	5e                   	pop    %esi
478947:	5d                   	pop    %ebp
478948:	c3                   	ret
478949:	8b ff                	mov    %edi,%edi
47894b:	55                   	push   %ebp
47894c:	8b ec                	mov    %esp,%ebp
47894e:	5d                   	pop    %ebp
47894f:	e9 2f fc ff ff       	jmp    0x478583
478954:	8b ff                	mov    %edi,%edi
478956:	55                   	push   %ebp
478957:	8b ec                	mov    %esp,%ebp
478959:	5d                   	pop    %ebp
47895a:	e9 35 fd ff ff       	jmp    0x478694
47895f:	8b ff                	mov    %edi,%edi
478961:	55                   	push   %ebp
478962:	8b ec                	mov    %esp,%ebp
478964:	83 ec 18             	sub    $0x18,%esp
478967:	8b 45 08             	mov    0x8(%ebp),%eax
47896a:	8b 4d 08             	mov    0x8(%ebp),%ecx
47896d:	83 e0 3f             	and    $0x3f,%eax
478970:	8b 55 0c             	mov    0xc(%ebp),%edx
478973:	53                   	push   %ebx
478974:	c1 f9 06             	sar    $0x6,%ecx
478977:	56                   	push   %esi
478978:	57                   	push   %edi
478979:	6b f8 30             	imul   $0x30,%eax,%edi
47897c:	8b 04 8d 00 c0 4b 00 	mov    0x4bc000(,%ecx,4),%eax
478983:	89 4d f0             	mov    %ecx,-0x10(%ebp)
478986:	8b 4c 38 18          	mov    0x18(%eax,%edi,1),%ecx
47898a:	89 4d ec             	mov    %ecx,-0x14(%ebp)
47898d:	8b 4d 10             	mov    0x10(%ebp),%ecx
478990:	85 c9                	test   %ecx,%ecx
478992:	74 0c                	je     0x4789a0
478994:	80 3a 0a             	cmpb   $0xa,(%edx)
478997:	75 07                	jne    0x4789a0
478999:	80 4c 38 28 04       	orb    $0x4,0x28(%eax,%edi,1)
47899e:	eb 05                	jmp    0x4789a5