JSIR (github.com/google/jsir) is an MLIR-based JavaScript intermediate representation from Google, used for malicious code detection. JSIR has a unique design: it can be lifted back to the AST without information loss. This means we can achieve source-to-source transformation by (1) running dataflow analyses on the IR, (2) performing IR transforms based on analysis results, (3) and then lifting the transformed IR all the way back to JavaScript source. In this talk, we will discuss our recent changes to the IR design such that we solely use MLIR regions to represent control flow structures and run dataflow analyses on regions. We will cover our tricks to make dataflow analysis work. We hope that this work will inspire more people to perform dataflow analyses in high-level IRs.