def generate(count)
key_stream = [ ]
until key_stream.size == count
a = $deck.index("A")
if a == 53
$deck.insert(1, $deck.pop)
else
$deck.insert(a + 1, $deck.delete_at(a))
end
b = $deck.index("B")
if b == 53
$deck.insert(2, $deck.pop)
elsif b == 52
$deck.insert(1, $deck.delete_at(b))
else
$deck.insert(b + 2, $deck.delete_at(b))
end
a = $deck.index("A")
b = $deck.index("B")
top = [a, b].min
bottom = [a, b].max
$deck = $deck.values_at((bottom + 1)..53, top..bottom, 0...top)
if $deck[53].kind_of? Integer
$deck = $deck.values_at($deck[53]..52, 0...$deck[53], 53)
end
if $deck[0].kind_of? Integer
if $deck[$deck[0]].kind_of? Integer
key_stream.push($deck[$deck[0]])
end
else
if $deck[53].kind_of? Integer
key_stream.push($deck[53])
end
end
end
key_stream.map! do |number|
if number > 26
(number - 26 - 1 + ?A).chr
else
(number - 1 + ?A).chr
end
end
key_stream = key_stream.join("")
i = 5
while i < key_stream.size
key_stream[i, 0] = " "
i += 6
end
return key_stream
end