SELECT state
FROM
abort => nextState ← IF data THEN flag1 ELSE abort;
IN [flag1..flag7) => nextState ← IF data THEN flag1 ELSE state.SUCC;
flag7 => nextState ← IF data THEN flag8 ELSE abort;
flag8 => nextState ← IF data THEN start10 ELSE start11;
start10 => nextState ← IF data THEN start20 ELSE start21;
start11 => nextState ← IF data THEN start20 ELSE start22;
start20 => nextState ← IF data THEN start30 ELSE start31;
start21 => nextState ← IF data THEN start30 ELSE start32;
start22 => nextState ← IF data THEN start30 ELSE start33;
start30 => nextState ← IF data THEN start40 ELSE start41;
start31 => nextState ← IF data THEN start40 ELSE start42;
start32 => nextState ← IF data THEN start40 ELSE start43;
start33 => nextState ← IF data THEN start40 ELSE start44;
start40 => nextState ← IF data THEN start50 ELSE start51;
start41 => nextState ← IF data THEN start50 ELSE start52;
start42 => nextState ← IF data THEN start50 ELSE start53;
start43 => nextState ← IF data THEN start50 ELSE start54;
start44 => nextState ← IF data THEN start50 ELSE start55;
start50 => nextState ← IF data THEN start60 ELSE start61;
start51 => nextState ← IF data THEN start60 ELSE start62;
start52 => nextState ← IF data THEN start60 ELSE start63;
start53 => nextState ← IF data THEN start60 ELSE start64;
start54 => nextState ← IF data THEN start60 ELSE start65;
start55 => nextState ← IF data THEN start50 ELSE flag7; -- 10000001000000
start60 => nextState ← IF data THEN start70 ELSE start71;
start61 => nextState ← IF data THEN start70 ELSE start72;
start62 => nextState ← IF data THEN start70 ELSE start73;
start63 => nextState ← IF data THEN start70 ELSE start74;
start64 => nextState ← IF data THEN start70 ELSE start75;
start65 => nextState ← IF data THEN start60 ELSE flag7; -- 100000011000000
start70 => nextState ← IF data THEN data0 ELSE data1;
start71 => nextState ← IF data THEN data0 ELSE data2;
start72 => nextState ← IF data THEN data0 ELSE data3;
start73 => nextState ← IF data THEN data0 ELSE data4;
start74 => nextState ← IF data THEN data0 ELSE data5;
start75 => nextState ← IF data THEN start70 ELSE flag7; -- 1000000111000000
IN [data0..data4] => nextState ← IF data THEN data0 ELSE state.SUCC;
data5 => nextState ← IF data THEN data0 ELSE data6;
data6 => nextState ← IF data THEN end ELSE abort;
end => nextState ← IF data THEN flag1 ELSE flag2; -- Kick out last data bit
ENDCASE => nextState ← abort;