# Black box algorithm to find standard generators of J2

	set F 0
	set G 0
	set H 0
	set V 0
	set X 0
lbl SEMISTD
	rand 1
	ord 1 A
	incr V
	if V gt 1000 then timeout
	if A notin 1 2 3 4 5 6 7 8 10 12 15 then fail
	if F eq 0 then
		if A in 2 6 10 then
			div A 2 B
			pwr B 1 2
			set F 1
		endif
	endif
	if G eq 0 then
		if A in 3 6 then
			div A 3 C
			pwr C 1 3
			set G 1
		endif
	endif

	# As well as finding elements of order 2 and 3 (for the
	# generators), we find a 2A-element. This allows us
	# to prove that the elements we have are in the right classes
	# before starting the random conjugating.
	if H eq 0 then
		if A in 4 8 12 then
			div A 2 D
			pwr D 1 4
			set H 1
		endif
	endif 

	if F eq 0 then jmp SEMISTD
	if G eq 0 then jmp SEMISTD
	if H eq 0 then jmp SEMISTD

	mu 2 4 5
	ord 5 D
	if D in 1 2 3 4 5 then
		# Probably a 2A element
		set F 0
		jmp SEMISTD
	endif

	mu 3 4 6
	ord 6 E
	if E in 6 12 then
		# Probably a 3A element
		set G 0
		jmp SEMISTD
	endif

	# The elements are definitely in classes 2B and 3B now.
	
lbl CONJUGATE
	incr X
	if X gt 1000 then timeout
	rand 7
	cjr 3 7
	mu 2 3 8
	ord 8 D
	if D notin 2 3 5 6 7 8 10 12 15 then fail

	if D noteq 7 then jmp CONJUGATE

	mu 8 3 9
	mu 8 9 10

	ord 10 E

	if E notin 10 12 15 then fail
	if E noteq 12 then jmp CONJUGATE

	oup 2 2 3
