  The EVM language is a simple stack-based language with words of 256 bits,
with one significant difference between the EVM and other virtual machine
languages (like Java Bytecode or CLI for .Net programs): the use of the stack
for saving the jump addresses instead of having it explicit in the code of the
jumping instructions. Static analyzers need the complete control flow graph
(CFG) of the EVM program in order to be able to represent all its execution
paths. This report addresses the problem of obtaining a precise and complete
stack-sensitive CFG by means of a static analysis, cloning the blocks that
might be executed using different states of the execution stack. The soundness
of the analysis presented is proved.
