1. A method for decompressing video data from a graphical processing unit into a plurality of output symbols for a display panel of a mobile phone, the data comprising a variable length coded input comprising a plurality of binary code symbols, the method comprising: setting, by a decoder comprising a processor and memory storing a lookup table comprising a plurality of states, a current state to an initial state and a current branch length to an initial branch length; receiving, by the decoder, the variable length coded input comprising video data from the graphical processing unit; identifying, by the decoder using the lookup table, a next state or a symbol of the output symbols based on a current state, a current branch length, and a next binary code symbol of the variable length coded input, wherein the identifying the next state or the symbol comprises: identifying a matching entry in the lookup table representing a optimized codebook, the optimized codebook mapping a plurality of sequences of binary code symbols to a plurality of output symbols, the binary code symbols comprising a first code symbol and a second code symbol, when the next state is identified, updating, by the decoder, the current state to the next state; updating, by the decoder, the current branch length; updating, by the decoder, the next binary code symbol of the variable length coded input; and repeating, by the decoder, the identifying the next state or the symbol of the output symbols based on the updated current state, the updated current branch length, and the updated next binary code symbol of the variable length coded input; and when the symbol of the output symbols is identified, outputting, from the decoder, the symbol of the output symbols to the display panel of the mobile phone for display of the video data.