Reflection is both the question and the answer.
ct = [22, 38, 56, 32, 121, 101, 104, 103, 97, 120, 15, 101, 31, 155, 84, 47, 79, 82, 52, 119, 127, 114, 91, 38, 53, 46, 187, 118, 177, 109, 102, 92, 106, 121, 110, 125, 112, 71, 98, 110, 121, 94, 107, 113, 3, 114, 47, 118, 127, 104, 107, 100, 117, 98, 238, 93, 233, 109, 79, 98, 107, 68, 69, 31, 37]
xor = open('reflection', 'rb').read().replace(b'\x00', b'')
print(bytes(c^xor[i]for(i,c)in enumerate(ct)))
Either use gdb to dump the values being xored, brute force by character because execution stops at the first wrong character, or reverse the file to find that the input is being xored with the first 65 nonzero bytes of the file.