+ (loop
+ (read-branch
+ r1
+ (,@ (mapcar
+ (lambda (v)
+ (cond
+ ((or (eq v nil) (eq v t)) '(repeat))
+ (t (` ((r0 = (, (lsh v 2))) (break))))))
+ mel-ccl-256-to-64-table))))
+ (loop
+ (read-branch
+ r1
+ (,@ (mapcar
+ (lambda (v)
+ (cond
+ ((or (eq v nil) (eq v t)) '(repeat))
+ ((= (lsh v -4) 0)
+ (` ((write r0)
+ (r0 = (, (lsh (logand v 15) 4)))
+ (break))))
+ (t
+ (` ((r0 |= (, (lsh v -4)))
+ (write r0)
+ (r0 = (, (lsh (logand v 15) 4)))
+ (break))))))
+ mel-ccl-256-to-64-table))))
+ (loop
+ (read-branch
+ r1
+ (,@ (mapcar
+ (lambda (v)
+ (cond
+ ((eq v nil) '(repeat))
+ ((eq v t) '(end))
+ ((= (lsh v -2) 0)
+ (` ((write r0)
+ (r0 = (, (lsh (logand v 3) 6)))
+ (break))))
+ (t
+ (` ((r0 |= (, (lsh v -2)))
+ (write r0)
+ (r0 = (, (lsh (logand v 3) 6)))
+ (break))))))
+ mel-ccl-256-to-64-table))))
+ (loop
+ (read-branch
+ r1
+ (,@ (mapcar
+ (lambda (v)
+ (cond
+ ((eq v nil) '(repeat))
+ ((eq v t) '(end))
+ (t (` ((r0 |= (, v)) (write r0) (break))))))
+ mel-ccl-256-to-64-table))))
+ (repeat)))))
+ (define-ccl-program mel-ccl-decode-b
+ (` (1
+ (loop
+ (read r0 r1 r2 r3)
+ (r4 = r0 (, mel-ccl-decode-b-0-table))
+ (r5 = r1 (, mel-ccl-decode-b-1-table))
+ (r4 |= r5)
+ (r5 = r2 (, mel-ccl-decode-b-2-table))
+ (r4 |= r5)
+ (r5 = r3 (, mel-ccl-decode-b-3-table))
+ (r4 |= r5)
+ (if (r4 & (, (lognot (1- (lsh 1 24)))))
+ ((loop
+ (if (r4 & (, (lsh 1 24)))
+ ((r0 = r1) (r1 = r2) (r2 = r3) (read r3)
+ (r4 >>= 1) (r4 &= (, (logior (lsh 7 24))))
+ (r5 = r3 (, mel-ccl-decode-b-3-table))