40765b:	83 e8 01             	sub    $0x1,%eax
40765e:	74 1f                	je     0x40767f
407660:	83 e8 01             	sub    $0x1,%eax
407663:	74 16                	je     0x40767b
407665:	83 e8 09             	sub    $0x9,%eax
407668:	74 11                	je     0x40767b
40766a:	83 7d 14 0d          	cmpl   $0xd,0x14(%ebp)
40766e:	74 0f                	je     0x40767f
407670:	8a 45 10             	mov    0x10(%ebp),%al
407673:	3c 63                	cmp    $0x63,%al
407675:	74 08                	je     0x40767f
407677:	3c 73                	cmp    $0x73,%al
407679:	74 04                	je     0x40767f
40767b:	b0 01                	mov    $0x1,%al
40767d:	5d                   	pop    %ebp
40767e:	c3                   	ret
40767f:	32 c0                	xor    %al,%al
407681:	5d                   	pop    %ebp
407682:	c3                   	ret
407683:	8b ff                	mov    %edi,%edi
407685:	55                   	push   %ebp
407686:	8b ec                	mov    %esp,%ebp
407688:	83 ec 14             	sub    $0x14,%esp
40768b:	8d 4d 0c             	lea    0xc(%ebp),%ecx
40768e:	53                   	push   %ebx
40768f:	56                   	push   %esi
407690:	e8 66 18 00 00       	call   0x408efb
407695:	84 c0                	test   %al,%al
407697:	74 2f                	je     0x4076c8
407699:	8b 75 14             	mov    0x14(%ebp),%esi
40769c:	85 f6                	test   %esi,%esi
40769e:	74 3d                	je     0x4076dd
4076a0:	83 fe 02             	cmp    $0x2,%esi
4076a3:	7c 05                	jl     0x4076aa
4076a5:	83 fe 24             	cmp    $0x24,%esi
4076a8:	7e 33                	jle    0x4076dd
4076aa:	8b 45 08             	mov    0x8(%ebp),%eax
4076ad:	50                   	push   %eax
4076ae:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
4076b2:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
4076b9:	33 c0                	xor    %eax,%eax
4076bb:	50                   	push   %eax
4076bc:	50                   	push   %eax
4076bd:	50                   	push   %eax
4076be:	50                   	push   %eax
4076bf:	50                   	push   %eax
4076c0:	e8 87 fd ff ff       	call   0x40744c
4076c5:	83 c4 18             	add    $0x18,%esp
4076c8:	8b 4d 10             	mov    0x10(%ebp),%ecx
4076cb:	85 c9                	test   %ecx,%ecx
4076cd:	0f 84 52 01 00 00    	je     0x407825
4076d3:	8b 45 0c             	mov    0xc(%ebp),%eax
4076d6:	89 01                	mov    %eax,(%ecx)
4076d8:	e9 48 01 00 00       	jmp    0x407825
4076dd:	8b 45 0c             	mov    0xc(%ebp),%eax
4076e0:	33 c9                	xor    %ecx,%ecx
4076e2:	57                   	push   %edi
4076e3:	89 45 ec             	mov    %eax,-0x14(%ebp)
4076e6:	89 4d f4             	mov    %ecx,-0xc(%ebp)
4076e9:	8a 18                	mov    (%eax),%bl
4076eb:	8d 78 01             	lea    0x1(%eax),%edi
4076ee:	0f b6 45 18          	movzbl 0x18(%ebp),%eax
4076f2:	88 5d fc             	mov    %bl,-0x4(%ebp)
4076f5:	89 7d 0c             	mov    %edi,0xc(%ebp)
4076f8:	89 45 f8             	mov    %eax,-0x8(%ebp)
4076fb:	80 fb 2d             	cmp    $0x2d,%bl
4076fe:	75 08                	jne    0x407708
407700:	83 c8 02             	or     $0x2,%eax
407703:	89 45 f8             	mov    %eax,-0x8(%ebp)
407706:	eb 05                	jmp    0x40770d
407708:	80 fb 2b             	cmp    $0x2b,%bl
40770b:	75 09                	jne    0x407716
40770d:	8a 1f                	mov    (%edi),%bl
40770f:	47                   	inc    %edi
407710:	88 5d fc             	mov    %bl,-0x4(%ebp)
407713:	89 7d 0c             	mov    %edi,0xc(%ebp)
407716:	85 f6                	test   %esi,%esi
407718:	74 05                	je     0x40771f
40771a:	83 fe 10             	cmp    $0x10,%esi
40771d:	75 75                	jne    0x407794
40771f:	8a c3                	mov    %bl,%al
407721:	2c 30                	sub    $0x30,%al
407723:	3c 09                	cmp    $0x9,%al
407725:	77 08                	ja     0x40772f
407727:	0f be c3             	movsbl %bl,%eax
40772a:	83 c0 d0             	add    $0xffffffd0,%eax
40772d:	eb 1e                	jmp    0x40774d
40772f:	8a c3                	mov    %bl,%al
407731:	2c 61                	sub    $0x61,%al
407733:	3c 19                	cmp    $0x19,%al
407735:	77 08                	ja     0x40773f
407737:	0f be c3             	movsbl %bl,%eax
40773a:	83 c0 a9             	add    $0xffffffa9,%eax
40773d:	eb 0e                	jmp    0x40774d
40773f:	8a c3                	mov    %bl,%al
407741:	2c 41                	sub    $0x41,%al
407743:	3c 19                	cmp    $0x19,%al
407745:	77 46                	ja     0x40778d
407747:	0f be c3             	movsbl %bl,%eax
40774a:	83 c0 c9             	add    $0xffffffc9,%eax
40774d:	85 c0                	test   %eax,%eax
40774f:	75 3c                	jne    0x40778d
407751:	8a 07                	mov    (%edi),%al
407753:	47                   	inc    %edi
407754:	88 45 f0             	mov    %al,-0x10(%ebp)
407757:	89 7d 0c             	mov    %edi,0xc(%ebp)
40775a:	3c 78                	cmp    $0x78,%al
40775c:	74 1d                	je     0x40777b
40775e:	3c 58                	cmp    $0x58,%al
407760:	74 19                	je     0x40777b
407762:	85 f6                	test   %esi,%esi
407764:	75 03                	jne    0x407769
407766:	6a 08                	push   $0x8
407768:	5e                   	pop    %esi
407769:	ff 75 f0             	push   -0x10(%ebp)
40776c:	8d 4d 0c             	lea    0xc(%ebp),%ecx
40776f:	e8 f5 16 00 00       	call   0x408e69
407774:	8b 7d 0c             	mov    0xc(%ebp),%edi
407777:	33 c9                	xor    %ecx,%ecx
407779:	eb 19                	jmp    0x407794
40777b:	85 f6                	test   %esi,%esi
40777d:	75 03                	jne    0x407782
40777f:	6a 10                	push   $0x10
407781:	5e                   	pop    %esi
407782:	8a 1f                	mov    (%edi),%bl
407784:	47                   	inc    %edi
407785:	88 5d fc             	mov    %bl,-0x4(%ebp)
407788:	89 7d 0c             	mov    %edi,0xc(%ebp)
40778b:	eb 07                	jmp    0x407794
40778d:	85 f6                	test   %esi,%esi
40778f:	75 03                	jne    0x407794
407791:	6a 0a                	push   $0xa
407793:	5e                   	pop    %esi
407794:	83 c8 ff             	or     $0xffffffff,%eax
407797:	33 d2                	xor    %edx,%edx
407799:	f7 f6                	div    %esi
40779b:	89 45 f0             	mov    %eax,-0x10(%ebp)
40779e:	8a c3                	mov    %bl,%al
4077a0:	2c 30                	sub    $0x30,%al
4077a2:	3c 09                	cmp    $0x9,%al
4077a4:	77 08                	ja     0x4077ae
4077a6:	0f be d3             	movsbl %bl,%edx
4077a9:	83 c2 d0             	add    $0xffffffd0,%edx
4077ac:	eb 23                	jmp    0x4077d1
4077ae:	8a c3                	mov    %bl,%al
4077b0:	2c 61                	sub    $0x61,%al
4077b2:	3c 19                	cmp    $0x19,%al
4077b4:	77 08                	ja     0x4077be
4077b6:	0f be d3             	movsbl %bl,%edx
4077b9:	83 c2 a9             	add    $0xffffffa9,%edx
4077bc:	eb 13                	jmp    0x4077d1
4077be:	8a c3                	mov    %bl,%al
4077c0:	2c 41                	sub    $0x41,%al
4077c2:	3c 19                	cmp    $0x19,%al
4077c4:	77 08                	ja     0x4077ce
4077c6:	0f be d3             	movsbl %bl,%edx
4077c9:	83 c2 c9             	add    $0xffffffc9,%edx
4077cc:	eb 03                	jmp    0x4077d1
4077ce:	83 ca ff             	or     $0xffffffff,%edx
4077d1:	3b d6                	cmp    %esi,%edx
4077d3:	73 30                	jae    0x407805
4077d5:	8b 45 f0             	mov    -0x10(%ebp),%eax
4077d8:	0f af ce             	imul   %esi,%ecx
4077db:	8a 1f                	mov    (%edi),%bl
4077dd:	88 5d fc             	mov    %bl,-0x4(%ebp)
4077e0:	03 d1                	add    %ecx,%edx
4077e2:	3b d1                	cmp    %ecx,%edx
4077e4:	1b c9                	sbb    %ecx,%ecx
4077e6:	f7 d9                	neg    %ecx
4077e8:	3b 45 f4             	cmp    -0xc(%ebp),%eax
4077eb:	89 55 f4             	mov    %edx,-0xc(%ebp)
4077ee:	1b c0                	sbb    %eax,%eax
4077f0:	f7 d8                	neg    %eax
4077f2:	0b c8                	or     %eax,%ecx
4077f4:	c1 e1 02             	shl    $0x2,%ecx
4077f7:	83 c9 08             	or     $0x8,%ecx
4077fa:	09 4d f8             	or     %ecx,-0x8(%ebp)
4077fd:	47                   	inc    %edi
4077fe:	8b ca                	mov    %edx,%ecx
407800:	89 7d 0c             	mov    %edi,0xc(%ebp)
407803:	eb 99                	jmp    0x40779e
407805:	ff 75 fc             	push   -0x4(%ebp)
407808:	8d 4d 0c             	lea    0xc(%ebp),%ecx
40780b:	e8 59 16 00 00       	call   0x408e69
407810:	8b 5d f8             	mov    -0x8(%ebp),%ebx
407813:	5f                   	pop    %edi
407814:	f6 c3 08             	test   $0x8,%bl
407817:	75 10                	jne    0x407829
407819:	8b 45 10             	mov    0x10(%ebp),%eax
40781c:	85 c0                	test   %eax,%eax
40781e:	74 05                	je     0x407825
407820:	8b 4d ec             	mov    -0x14(%ebp),%ecx
407823:	89 08                	mov    %ecx,(%eax)
407825:	33 c0                	xor    %eax,%eax
407827:	eb 65                	jmp    0x40788e
407829:	8b 75 f4             	mov    -0xc(%ebp),%esi
40782c:	56                   	push   %esi
40782d:	53                   	push   %ebx
40782e:	e8 eb fd ff ff       	call   0x40761e
407833:	59                   	pop    %ecx
407834:	59                   	pop    %ecx
407835:	84 c0                	test   %al,%al
407837:	74 40                	je     0x407879
407839:	8b 45 08             	mov    0x8(%ebp),%eax
40783c:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
407840:	c7 40 18 22 00 00 00 	movl   $0x22,0x18(%eax)
407847:	f6 c3 01             	test   $0x1,%bl
40784a:	75 05                	jne    0x407851
40784c:	83 ce ff             	or     $0xffffffff,%esi
40784f:	eb 2f                	jmp    0x407880
407851:	8b 4d 10             	mov    0x10(%ebp),%ecx
407854:	f6 c3 02             	test   $0x2,%bl
407857:	74 10                	je     0x407869
407859:	85 c9                	test   %ecx,%ecx
40785b:	74 05                	je     0x407862
40785d:	8b 45 0c             	mov    0xc(%ebp),%eax
407860:	89 01                	mov    %eax,(%ecx)
407862:	b8 00 00 00 80       	mov    $0x80000000,%eax
407867:	eb 25                	jmp    0x40788e
407869:	85 c9                	test   %ecx,%ecx
40786b:	74 05                	je     0x407872
40786d:	8b 45 0c             	mov    0xc(%ebp),%eax
407870:	89 01                	mov    %eax,(%ecx)
407872:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
407877:	eb 15                	jmp    0x40788e
407879:	f6 c3 02             	test   $0x2,%bl
40787c:	74 02                	je     0x407880
40787e:	f7 de                	neg    %esi
407880:	8b 55 10             	mov    0x10(%ebp),%edx
407883:	85 d2                	test   %edx,%edx
407885:	74 05                	je     0x40788c
407887:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40788a:	89 0a                	mov    %ecx,(%edx)
40788c:	8b c6                	mov    %esi,%eax
40788e:	5e                   	pop    %esi
40788f:	5b                   	pop    %ebx
407890:	c9                   	leave
407891:	c3                   	ret
407892:	8b ff                	mov    %edi,%edi
407894:	56                   	push   %esi
407895:	8b f1                	mov    %ecx,%esi
407897:	57                   	push   %edi
407898:	8b be 04 04 00 00    	mov    0x404(%esi),%edi
40789e:	e8 e2 fc ff ff       	call   0x407585
4078a3:	85 ff                	test   %edi,%edi
4078a5:	75 04                	jne    0x4078ab
4078a7:	03 c6                	add    %esi,%eax
4078a9:	eb 02                	jmp    0x4078ad
4078ab:	03 c7                	add    %edi,%eax
4078ad:	5f                   	pop    %edi
4078ae:	5e                   	pop    %esi
4078af:	c3                   	ret
4078b0:	8b ff                	mov    %edi,%edi
4078b2:	55                   	push   %ebp
4078b3:	8b ec                	mov    %esp,%ebp
4078b5:	83 ec 0c             	sub    $0xc,%esp
4078b8:	53                   	push   %ebx
4078b9:	56                   	push   %esi
4078ba:	8b f1                	mov    %ecx,%esi
4078bc:	57                   	push   %edi
4078bd:	ff 76 28             	push   0x28(%esi)
4078c0:	e8 9d 11 00 00       	call   0x408a62
4078c5:	59                   	pop    %ecx
4078c6:	8b c8                	mov    %eax,%ecx
4078c8:	89 45 f4             	mov    %eax,-0xc(%ebp)
4078cb:	6a 00                	push   $0x0
4078cd:	5b                   	pop    %ebx
4078ce:	83 e9 01             	sub    $0x1,%ecx
4078d1:	0f 84 99 00 00 00    	je     0x407970
4078d7:	83 e9 01             	sub    $0x1,%ecx
4078da:	74 75                	je     0x407951
4078dc:	49                   	dec    %ecx
4078dd:	83 e9 01             	sub    $0x1,%ecx
4078e0:	74 46                	je     0x407928
4078e2:	83 e9 04             	sub    $0x4,%ecx
4078e5:	74 27                	je     0x40790e
4078e7:	8b 46 08             	mov    0x8(%esi),%eax
4078ea:	83 c0 18             	add    $0x18,%eax
4078ed:	c6 40 04 01          	movb   $0x1,0x4(%eax)
4078f1:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4078f7:	ff 76 08             	push   0x8(%esi)
4078fa:	53                   	push   %ebx
4078fb:	53                   	push   %ebx
4078fc:	53                   	push   %ebx
4078fd:	53                   	push   %ebx
4078fe:	53                   	push   %ebx
4078ff:	e8 48 fb ff ff       	call   0x40744c
407904:	83 c4 18             	add    $0x18,%esp
407907:	32 c0                	xor    %al,%al
407909:	e9 28 01 00 00       	jmp    0x407a36
40790e:	8b 4e 10             	mov    0x10(%esi),%ecx
407911:	8b 7e 1c             	mov    0x1c(%esi),%edi
407914:	8b c7                	mov    %edi,%eax
407916:	c1 e8 04             	shr    $0x4,%eax
407919:	a8 01                	test   $0x1,%al
40791b:	8d 41 08             	lea    0x8(%ecx),%eax
40791e:	89 46 10             	mov    %eax,0x10(%esi)
407921:	8b 01                	mov    (%ecx),%eax
407923:	8b 51 04             	mov    0x4(%ecx),%edx
407926:	eb 66                	jmp    0x40798e
407928:	8b 7e 1c             	mov    0x1c(%esi),%edi
40792b:	8b c7                	mov    %edi,%eax
40792d:	c1 e8 04             	shr    $0x4,%eax
407930:	a8 01                	test   $0x1,%al
407932:	74 0d                	je     0x407941
407934:	8b 46 10             	mov    0x10(%esi),%eax
407937:	8d 48 04             	lea    0x4(%eax),%ecx
40793a:	89 4e 10             	mov    %ecx,0x10(%esi)
40793d:	8b 00                	mov    (%eax),%eax
40793f:	eb 4c                	jmp    0x40798d
407941:	8b 4e 10             	mov    0x10(%esi),%ecx
407944:	89 5d f8             	mov    %ebx,-0x8(%ebp)
407947:	8d 41 04             	lea    0x4(%ecx),%eax
40794a:	89 46 10             	mov    %eax,0x10(%esi)
40794d:	8b 01                	mov    (%ecx),%eax
40794f:	eb 40                	jmp    0x407991
407951:	8b 7e 1c             	mov    0x1c(%esi),%edi
407954:	8b c7                	mov    %edi,%eax
407956:	8b 4e 10             	mov    0x10(%esi),%ecx
407959:	c1 e8 04             	shr    $0x4,%eax
40795c:	a8 01                	test   $0x1,%al
40795e:	8d 41 04             	lea    0x4(%ecx),%eax
407961:	89 46 10             	mov    %eax,0x10(%esi)
407964:	74 05                	je     0x40796b
407966:	0f bf 01             	movswl (%ecx),%eax
407969:	eb 22                	jmp    0x40798d
40796b:	0f b7 01             	movzwl (%ecx),%eax
40796e:	eb 1d                	jmp    0x40798d
407970:	8b 7e 1c             	mov    0x1c(%esi),%edi
407973:	8b c7                	mov    %edi,%eax
407975:	8b 4e 10             	mov    0x10(%esi),%ecx
407978:	c1 e8 04             	shr    $0x4,%eax
40797b:	a8 01                	test   $0x1,%al
40797d:	8d 41 04             	lea    0x4(%ecx),%eax
407980:	89 46 10             	mov    %eax,0x10(%esi)
407983:	74 05                	je     0x40798a
407985:	0f be 01             	movsbl (%ecx),%eax
407988:	eb 03                	jmp    0x40798d
40798a:	0f b6 01             	movzbl (%ecx),%eax
40798d:	99                   	cltd
40798e:	89 55 f8             	mov    %edx,-0x8(%ebp)
407991:	8b 55 f8             	mov    -0x8(%ebp),%edx
407994:	89 45 fc             	mov    %eax,-0x4(%ebp)
407997:	8b c7                	mov    %edi,%eax
407999:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40799c:	c1 e8 04             	shr    $0x4,%eax
40799f:	a8 01                	test   $0x1,%al
4079a1:	74 16                	je     0x4079b9
4079a3:	3b d3                	cmp    %ebx,%edx
4079a5:	7f 12                	jg     0x4079b9