void (RootStatement root, StructMethod mt, StructClass cl) { CancellationManager cancellationManager = DecompilerContext.getCancellationManager(); Set<Integer> setReorderedIfs = new HashSet<>(); SSAUConstructorSparseEx ssau = null; while (true) { cancellationManager.checkCanceled(); boolean found = false; SSAConstructorSparseEx ssa = new SSAConstructorSparseEx(); ssa.splitVariables(root, mt); SimplifyExprentsHelper sehelper = new SimplifyExprentsHelper(ssau == null); while (sehelper.simplifyStackVarsStatement(root, setReorderedIfs, ssa, cl)) { cancellationManager.checkCanceled(); found = true; } setVersionsToNull(root); SequenceHelper.condenseSequences(root); ssau = new SSAUConstructorSparseEx(); ssau.splitVariables(root, mt); cancellationManager.checkCanceled(); if (iterateStatements(root, ssau)) { found = true; } setVersionsToNull(root); if (!found) { break; } } // remove unused assignments ssau = new SSAUConstructorSparseEx(); ssau.splitVariables(root, mt); iterateStatements(root, ssau); setVersionsToNull(root); }