The instruction set consists of a function that divides A by two, and a bunch of XOR ops. There's a jump function that jumps if A is nonzero. Implication: A is like a sort of logarithmic counter; the program whittles away dividing repeatedly by two until A hits zero. It's very clear the number of output digits scales linearly with the number of digits in A.
This means a linear scan is out. After running a pretty long time, my output has 8 digits. My target string has 16.

![Register A: [THIS IS THE NUMBER I'M TRYING TO FIND]
Register B: 0
Register C: 0
Program:
0 2,4 B = A % 8
1 1,1 B = B xor 1
2 7,5 C = A / (1 << B)
3 1,5 B = B xor 5 [0b101]
4 4,1 B = B xor C
5 5,5 output( B )
6 0,3 A = A / 8
7 3,0 if ( A > 0 ) goto 0](https://pool.jortage.com/slimeglobal/cache/media_attachments/files/117/472/015/006/904/565/small/d01f80b898c63ac5.png)





![let new = for [0..7] (\i => shiftL (the Bits64 1) (cast i))
"cast i" is highlighted saying that i (0..7) is an integer and "cast i" needs a Fin 64](https://pool.jortage.com/slimeglobal/cache/media_attachments/files/117/479/240/115/939/135/small/3667ebba9a07d4be.png)