- for i, block in ipairs(obj[2]) do
- local pos = bit.lshift(1, 15)
- for i=15, 0, -1 do
- if bit.band(block, pos) == pos then
- if not stop then
- prefix = prefix + 1
- else
- return nil
- end
- else
- stop = true
+ for _, word in ipairs(obj[2]) do
+ if word == 0xFFFF then
+ prefix = prefix + 16
+ else
+ local bitmask = bit.lshift(1, 15)
+ while bit.band(word, bitmask) == bitmask do
+ prefix = prefix + 1
+ bitmask = bit.lshift(1, 15 - (prefix % 16))