If you interpret the data stream 6 bits at a time, with the traversal path I outlined in a previous post, you get strings that look like this:
UTCUGYUYBFCYYYFUUTCYBGCFU2Mnsq3?cqkarYvtusft8c30rxBEB?FxwHn1tVRjXHFdQ?RYiUKh
UTCUGYUYBFCYYYFUUTCYBGCFU9ukq?YS3u4Erbiz10JY?a?enBZNCVm1oy?ByVQ?V?DimryqomWs
UTCUGYUYBFCYYYFUUTCYBGCFU2Mnsq3?cqkarYvtusft8c30rxAsv4r9ApK?DcgNaprUh1gZPdnQ
EgEG6Gn6nngGppn86GnppEn6nd?cQHrytSLCtk?cav4rxH4LnBZNCTQyU?heqAzMR?D3uApnq?Kr
deudqZdZvruZZZrddeuZvqurdrMnsq3?cqkarYvtusft8c30rxAsv4r9ApK?DcgNaprUh1gZPdnQ
deudqZdZvruZZZrddeuZvqurdxCMG5Zf?C?sFWP7?6oZ3X2TKvVNCVm1oy?ByVQ?V?DimryqomWs
(Here, I've concatenated all the data starting with lengths, then inner, then outer colors in the order of the pattern. This is just ONE of a many ways of concatenating the data. Just for demonstration purposes, I used a base 58 alphabet here and use ? when the value goes beyond 58. By no means is this a complete list).
Now, due to the pattern in the lengths, the beginning part sticks out like a sore thumb because there are actually only 8 possible combinations for 6 bits when you fix 3 of them (0.1.1.). Turns out only 7 are actually used. That's why the characters repeat. So let's split the strings where the repeated characters end:
EgEG6Gn6nngGppn86GnppEn6n d?cQHrytSLCtk?cav4rxH4LnBZNCTQyU?heqAzMR?D3uApnq?Kr
UTCUGYUYBFCYYYFUUTCYBGCFU 2Mnsq3?cqkarYvtusft8c30rxBEB?FxwHn1tVRjXHFdQ?RYiUKh
UTCUGYUYBFCYYYFUUTCYBGCFU 9ukq?YS3u4Erbiz10JY?a?enBZNCVm1oy?ByVQ?V?DimryqomWs
UTCUGYUYBFCYYYFUUTCYBGCFU 2Mnsq3?cqkarYvtusft8c30rxAsv4r9ApK?DcgNaprUh1gZPdnQ
deudqZdZvruZZZrddeuZvqurd rMnsq3?cqkarYvtusft8c30rxAsv4r9ApK?DcgNaprUh1gZPdnQ
deudqZdZvruZZZrddeuZvqurd xCMG5Zf?C?sFWP7?6oZ3X2TKvVNCVm1oy?ByVQ?V?DimryqomWs
Oh look, you end up with exactly 51 characters left over after the pattern ends. (Note: This actually means that you start taking 'key' bits while two bits away from the end of the lengths but I don't think that really matters. That could be the tricky part. There's no reason the key needs to start exactly on a boundary between lengths and colors, for example.)
So my theory is that the first part is supposed to be used as a key to deciphering the second part. Of course, if you leave the lengths to the end, then the whole thing gets reversed but you end up with the same situation. Basically, 51 *ciphered* characters representing the bitcoin key, then another key to deciphering THAT key. If you try this, you will of course have to keep the values those '?' represent in my examples so you can apply math operations on them. I think once you do the right math, everything will fall within 0-57 as expected.
So in short, my theory is:
Flames = FlameEncode(cipherkey + Cipher(bitcoinpk, cipherkey))
or
Flames = FlameEncode(Cipher(bitcoinpk, cipherkey) + cipherkey)
I've tried many operations trying to use those 25 characters as a deciphering key for the 2nd part with no luck (add, subtract, xor, bit shifting, even hill cipher 5x5 matrix).
Good luck!
[edit : This theory means the cipher key has no meaning. It doesn't have to have any meaning. It was chosen to be conspicuous so you can separate it from the random data which is the bitcoin key]