(TranslationUnit
    (SymbolTable
        1
        {
            main:
                (Program
                    (SymbolTable
                        2
                        {
                            i:
                                (Variable
                                    2
                                    i
                                    []
                                    Local
                                    ()
                                    ()
                                    Default
                                    (Integer 4)
                                    ()
                                    Source
                                    Public
                                    Required
                                    .false.
                                    .false.
                                )
                        })
                    main
                    []
                    [(Assignment
                        (Var 2 i)
                        (IntegerBinOp
                            (IntegerConstant 1 (Integer 4) Decimal)
                            Sub
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (Integer 4)
                            ()
                        )
                        ()
                    )
                    (WhileLoop
                        ()
                        (IntegerCompare
                            (IntegerBinOp
                                (Var 2 i)
                                Add
                                (IntegerConstant 1 (Integer 4) Decimal)
                                (Integer 4)
                                ()
                            )
                            LtE
                            (IntegerConstant 2 (Integer 4) Decimal)
                            (Logical 4)
                            ()
                        )
                        [(Assignment
                            (Var 2 i)
                            (IntegerBinOp
                                (Var 2 i)
                                Add
                                (IntegerConstant 1 (Integer 4) Decimal)
                                (Integer 4)
                                ()
                            )
                            ()
                        )
                        (Print
                            (StringFormat
                                ()
                                [(StringConstant
                                    "In loop 1 i ="
                                    (String 1 13 () PointerString)
                                )
                                (Var 2 i)]
                                FormatFortran
                                (String -1 0 () PointerString)
                                ()
                            )
                        )
                        (If
                            (IntegerCompare
                                (Var 2 i)
                                Lt
                                (IntegerConstant 2 (Integer 4) Decimal)
                                (Logical 4)
                                ()
                            )
                            [(Assignment
                                (Var 2 i)
                                (IntegerBinOp
                                    (Var 2 i)
                                    Sub
                                    (IntegerConstant 1 (Integer 4) Decimal)
                                    (Integer 4)
                                    ()
                                )
                                ()
                            )
                            (Exit
                                ()
                            )]
                            []
                        )]
                        []
                    )
                    (Assignment
                        (Var 2 i)
                        (IntegerBinOp
                            (Var 2 i)
                            Add
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (Integer 4)
                            ()
                        )
                        ()
                    )
                    (Print
                        (StringFormat
                            ()
                            [(StringConstant
                                "After loop 1 i = "
                                (String 1 17 () PointerString)
                            )
                            (Var 2 i)]
                            FormatFortran
                            (String -1 0 () PointerString)
                            ()
                        )
                    )
                    (If
                        (IntegerCompare
                            (Var 2 i)
                            NotEq
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (Logical 4)
                            ()
                        )
                        [(ErrorStop
                            ()
                        )]
                        []
                    )
                    (Print
                        (StringFormat
                            ()
                            []
                            FormatFortran
                            (String -1 0 () PointerString)
                            ()
                        )
                    )
                    (Assignment
                        (Var 2 i)
                        (IntegerBinOp
                            (IntegerConstant 1 (Integer 4) Decimal)
                            Sub
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (Integer 4)
                            ()
                        )
                        ()
                    )
                    (WhileLoop
                        ()
                        (IntegerCompare
                            (IntegerBinOp
                                (Var 2 i)
                                Add
                                (IntegerConstant 1 (Integer 4) Decimal)
                                (Integer 4)
                                ()
                            )
                            LtE
                            (IntegerConstant 3 (Integer 4) Decimal)
                            (Logical 4)
                            ()
                        )
                        [(Assignment
                            (Var 2 i)
                            (IntegerBinOp
                                (Var 2 i)
                                Add
                                (IntegerConstant 1 (Integer 4) Decimal)
                                (Integer 4)
                                ()
                            )
                            ()
                        )
                        (Print
                            (StringFormat
                                ()
                                [(StringConstant
                                    "In loop 2 i = "
                                    (String 1 14 () PointerString)
                                )
                                (Var 2 i)]
                                FormatFortran
                                (String -1 0 () PointerString)
                                ()
                            )
                        )
                        (If
                            (IntegerCompare
                                (Var 2 i)
                                Lt
                                (IntegerConstant 2 (Integer 4) Decimal)
                                (Logical 4)
                                ()
                            )
                            [(Print
                                (StringConstant
                                    "if (i < 2) then"
                                    (String 1 15 () PointerString)
                                )
                            )]
                            [(Assignment
                                (Var 2 i)
                                (IntegerBinOp
                                    (Var 2 i)
                                    Sub
                                    (IntegerConstant 1 (Integer 4) Decimal)
                                    (Integer 4)
                                    ()
                                )
                                ()
                            )
                            (Exit
                                ()
                            )]
                        )]
                        []
                    )
                    (Assignment
                        (Var 2 i)
                        (IntegerBinOp
                            (Var 2 i)
                            Add
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (Integer 4)
                            ()
                        )
                        ()
                    )
                    (Print
                        (StringFormat
                            ()
                            [(StringConstant
                                "After loop 2 i = "
                                (String 1 17 () PointerString)
                            )
                            (Var 2 i)]
                            FormatFortran
                            (String -1 0 () PointerString)
                            ()
                        )
                    )
                    (If
                        (IntegerCompare
                            (Var 2 i)
                            NotEq
                            (IntegerConstant 2 (Integer 4) Decimal)
                            (Logical 4)
                            ()
                        )
                        [(ErrorStop
                            ()
                        )]
                        []
                    )
                    (Print
                        (StringFormat
                            ()
                            []
                            FormatFortran
                            (String -1 0 () PointerString)
                            ()
                        )
                    )
                    (Assignment
                        (Var 2 i)
                        (IntegerBinOp
                            (IntegerConstant 1 (Integer 4) Decimal)
                            Sub
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (Integer 4)
                            ()
                        )
                        ()
                    )
                    (WhileLoop
                        ()
                        (IntegerCompare
                            (IntegerBinOp
                                (Var 2 i)
                                Add
                                (IntegerConstant 1 (Integer 4) Decimal)
                                (Integer 4)
                                ()
                            )
                            LtE
                            (IntegerConstant 6 (Integer 4) Decimal)
                            (Logical 4)
                            ()
                        )
                        [(Assignment
                            (Var 2 i)
                            (IntegerBinOp
                                (Var 2 i)
                                Add
                                (IntegerConstant 1 (Integer 4) Decimal)
                                (Integer 4)
                                ()
                            )
                            ()
                        )
                        (Print
                            (StringFormat
                                ()
                                [(StringConstant
                                    "In loop 3 i = "
                                    (String 1 14 () PointerString)
                                )
                                (Var 2 i)]
                                FormatFortran
                                (String -1 0 () PointerString)
                                ()
                            )
                        )
                        (If
                            (IntegerCompare
                                (Var 2 i)
                                LtE
                                (IntegerConstant 4 (Integer 4) Decimal)
                                (Logical 4)
                                ()
                            )
                            [(If
                                (IntegerCompare
                                    (IntegerBinOp
                                        (Var 2 i)
                                        Sub
                                        (IntegerConstant 1 (Integer 4) Decimal)
                                        (Integer 4)
                                        ()
                                    )
                                    Eq
                                    (IntegerConstant 3 (Integer 4) Decimal)
                                    (Logical 4)
                                    ()
                                )
                                [(If
                                    (IntegerCompare
                                        (IntegerBinOp
                                            (Var 2 i)
                                            Sub
                                            (IntegerConstant 1 (Integer 4) Decimal)
                                            (Integer 4)
                                            ()
                                        )
                                        Eq
                                        (IntegerConstant 2 (Integer 4) Decimal)
                                        (Logical 4)
                                        ()
                                    )
                                    [(Assignment
                                        (Var 2 i)
                                        (IntegerBinOp
                                            (Var 2 i)
                                            Sub
                                            (IntegerConstant 1 (Integer 4) Decimal)
                                            (Integer 4)
                                            ()
                                        )
                                        ()
                                    )
                                    (Exit
                                        ()
                                    )]
                                    []
                                )
                                (Assignment
                                    (Var 2 i)
                                    (IntegerBinOp
                                        (Var 2 i)
                                        Sub
                                        (IntegerConstant 1 (Integer 4) Decimal)
                                        (Integer 4)
                                        ()
                                    )
                                    ()
                                )
                                (Exit
                                    ()
                                )]
                                []
                            )]
                            []
                        )]
                        []
                    )
                    (Assignment
                        (Var 2 i)
                        (IntegerBinOp
                            (Var 2 i)
                            Add
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (Integer 4)
                            ()
                        )
                        ()
                    )
                    (Print
                        (StringFormat
                            ()
                            [(StringConstant
                                "After loop 3 i = "
                                (String 1 17 () PointerString)
                            )
                            (Var 2 i)]
                            FormatFortran
                            (String -1 0 () PointerString)
                            ()
                        )
                    )
                    (If
                        (IntegerCompare
                            (Var 2 i)
                            NotEq
                            (IntegerConstant 4 (Integer 4) Decimal)
                            (Logical 4)
                            ()
                        )
                        [(ErrorStop
                            ()
                        )]
                        []
                    )
                    (Print
                        (StringFormat
                            ()
                            []
                            FormatFortran
                            (String -1 0 () PointerString)
                            ()
                        )
                    )
                    (Assignment
                        (Var 2 i)
                        (IntegerBinOp
                            (IntegerConstant 1 (Integer 4) Decimal)
                            Sub
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (Integer 4)
                            ()
                        )
                        ()
                    )
                    (WhileLoop
                        ()
                        (IntegerCompare
                            (IntegerBinOp
                                (Var 2 i)
                                Add
                                (IntegerConstant 1 (Integer 4) Decimal)
                                (Integer 4)
                                ()
                            )
                            LtE
                            (IntegerConstant 6 (Integer 4) Decimal)
                            (Logical 4)
                            ()
                        )
                        [(Assignment
                            (Var 2 i)
                            (IntegerBinOp
                                (Var 2 i)
                                Add
                                (IntegerConstant 1 (Integer 4) Decimal)
                                (Integer 4)
                                ()
                            )
                            ()
                        )
                        (Print
                            (StringFormat
                                ()
                                [(StringConstant
                                    "In loop 4 i = "
                                    (String 1 14 () PointerString)
                                )
                                (Var 2 i)]
                                FormatFortran
                                (String -1 0 () PointerString)
                                ()
                            )
                        )
                        (If
                            (IntegerCompare
                                (Var 2 i)
                                LtE
                                (IntegerConstant 4 (Integer 4) Decimal)
                                (Logical 4)
                                ()
                            )
                            [(If
                                (IntegerCompare
                                    (IntegerBinOp
                                        (Var 2 i)
                                        Sub
                                        (IntegerConstant 1 (Integer 4) Decimal)
                                        (Integer 4)
                                        ()
                                    )
                                    Eq
                                    (IntegerConstant 3 (Integer 4) Decimal)
                                    (Logical 4)
                                    ()
                                )
                                [(If
                                    (IntegerCompare
                                        (IntegerBinOp
                                            (Var 2 i)
                                            Sub
                                            (IntegerConstant 1 (Integer 4) Decimal)
                                            (Integer 4)
                                            ()
                                        )
                                        Eq
                                        (IntegerConstant 2 (Integer 4) Decimal)
                                        (Logical 4)
                                        ()
                                    )
                                    [(Assignment
                                        (Var 2 i)
                                        (IntegerBinOp
                                            (Var 2 i)
                                            Sub
                                            (IntegerConstant 1 (Integer 4) Decimal)
                                            (Integer 4)
                                            ()
                                        )
                                        ()
                                    )
                                    (Exit
                                        ()
                                    )]
                                    []
                                )
                                (Assignment
                                    (Var 2 i)
                                    (IntegerBinOp
                                        (Var 2 i)
                                        Sub
                                        (IntegerConstant 1 (Integer 4) Decimal)
                                        (Integer 4)
                                        ()
                                    )
                                    ()
                                )
                                (Exit
                                    ()
                                )]
                                [(Print
                                    (StringConstant
                                        "i - 1 /= 3"
                                        (String 1 10 () PointerString)
                                    )
                                )]
                            )]
                            []
                        )]
                        []
                    )
                    (Assignment
                        (Var 2 i)
                        (IntegerBinOp
                            (Var 2 i)
                            Add
                            (IntegerConstant 1 (Integer 4) Decimal)
                            (Integer 4)
                            ()
                        )
                        ()
                    )
                    (Print
                        (StringFormat
                            ()
                            [(StringConstant
                                "After loop 4 i = "
                                (String 1 17 () PointerString)
                            )
                            (Var 2 i)]
                            FormatFortran
                            (String -1 0 () PointerString)
                            ()
                        )
                    )
                    (If
                        (IntegerCompare
                            (Var 2 i)
                            NotEq
                            (IntegerConstant 4 (Integer 4) Decimal)
                            (Logical 4)
                            ()
                        )
                        [(ErrorStop
                            ()
                        )]
                        []
                    )]
                )
        })
    []
)
